Skip to content
Extraits de code Groupes Projets
Valider 3c20a212 rédigé par Benjamin - Le Filament's avatar Benjamin - Le Filament
Parcourir les fichiers

[add] file deletion

parent 3a8b4982
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
......@@ -2,6 +2,7 @@
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
from odoo import api, models, fields
from odoo.exceptions import UserError
class AdefpatHrExpense(models.Model):
......@@ -9,6 +10,21 @@ class AdefpatHrExpense(models.Model):
proof_file = fields.Char("Justificatif")
# ------------------------------------------------------
# Override ORM
# ------------------------------------------------------
@api.multi
def unlink(self):
for espense in self:
if espense.proof_file:
raise UserError(
"Un document est attaché à cette note de frais, "
"veuillez le supprimer avant de supprimer la note de frais.")
return super(AdefpatHrExpense, self).unlink()
# ------------------------------------------------------
# Button Function
# ------------------------------------------------------
@api.multi
def get_content_details_url(self):
# TODO: Refaire la fonction sans le type CMIS Folder
......@@ -28,6 +44,18 @@ class AdefpatHrExpense(models.Model):
'target': 'new',
}
def delete_file(self):
backend = self.env['cmis.backend'].search([], limit=1)
try:
file = backend.get_cmis_repository().getObject(
self.proof_file
)
file.delete()
self.proof_file = False
except Exception as e:
self.proof_file = False
# raise UserError(json.loads(e.details).get('message'))
# ------------------------------------------------------
# Common Function
# ------------------------------------------------------
......@@ -39,6 +67,6 @@ class AdefpatHrExpense(models.Model):
return {
'cmis:secondaryObjectTypeIds': ['P:adefpat:justificatif'],
'adefpat:justificatifDate': fields.Datetime.to_datetime(self.date).isoformat(),
'adefpat:justificatifTypeConvention': self.type_convention_id.name,
'adefpat:justificatifTypeConvention': self.type_convention_id.name if self.type_convention_id.name else '',
'adefpat:justificatifUtilisateurs': self.employee_id.user_id.login
}
......@@ -4,6 +4,7 @@
from datetime import date
from odoo import api, models, fields
from odoo.exceptions import UserError
class AdefpatAccountAnalyticLine(models.Model):
......@@ -11,6 +12,21 @@ class AdefpatAccountAnalyticLine(models.Model):
proof_file = fields.Char("Justificatif")
# ------------------------------------------------------
# Override ORM
# ------------------------------------------------------
@api.multi
def unlink(self):
for line in self:
if line.proof_file:
raise UserError(
"Un document est attaché à cette ligne, "
"veuillez le supprimer avant de supprimer la ligne.")
return super(AdefpatAccountAnalyticLine, self).unlink()
# ------------------------------------------------------
# Button Function
# ------------------------------------------------------
@api.multi
def get_content_details_url(self):
# TODO: Refaire la fonction sans le type CMIS Folder
......@@ -30,6 +46,18 @@ class AdefpatAccountAnalyticLine(models.Model):
'target': 'new',
}
def delete_file(self):
backend = self.env['cmis.backend'].search([], limit=1)
try:
file = backend.get_cmis_repository().getObject(
self.proof_file
)
file.delete()
self.proof_file = False
except:
self.proof_file = False
# raise UserError("Le fichier est introuvable sur Alfresco")
# ------------------------------------------------------
# Common Function
# ------------------------------------------------------
......
......@@ -62,9 +62,10 @@
<field name="arch" type="xml">
<tree string="Documents" editable="top">
<field name="name"/>
<field name="parent_id"/>
<field name="parent_id" options="{ 'no_create': 1 }"/>
<field name="path"/>
<field name="specifique"/>
<field name="model_id" attrs="{'required': [('specifique', '=', True)]}"/>
</tree>
</field>
</record>
......
......@@ -16,6 +16,10 @@
type="action"
class="oe_highlight"
attrs="{'invisible': [('proof_file', '!=', False)]}"/>
<button name="delete_file"
string="Supprimer le justificatif"
type="object"
attrs="{'invisible': [('proof_file', '=', False)]}"/>
<field name="proof_file" invisible="1"/>
<button name="get_content_details_url"
string="Voir le justificatif"
......
......@@ -13,14 +13,21 @@
<field name="unit_amount" position="after">
<field name="proof_file" invisible="1"/>
<button name="%(adefpat_alfodoo.upload_file_wizard_action)d"
string="Charger un doc"
string="Justif de présence"
type="action"
class="btn-outline-info btn-sm"
attrs="{'invisible': ['|',('proof_file', '!=', False),('id', '=', False)]}"
attrs="{'invisible': [('proof_file', '!=', False)]}"
/>
<button icon="fa-times"
name="delete_file"
string="Supprimer le fichier"
class="text-danger"
type="object"
attrs="{'invisible': [('proof_file', '=', False)]}"
/>
<button icon="/adefpat_alfodoo/static/src/img/alfresco-logo-16.png"
name="get_content_details_url"
string="voir"
string="Voir le fichier dans Alfresco"
type="object"
attrs="{'invisible': [('proof_file', '=', False)]}"
/>
......
......@@ -14,7 +14,7 @@
<!-- Ajoute l'onglet Documents dans la vue projet -->
<xpath expr="//notebook" position="inside">
<page string="Documents" groups="base.group_user">
<field name="task_cmis_folder"
<field name="cmis_folder"
canCreateFolder="0"
canCreateDocument="0"
canImportNewVersion="0"
......
......@@ -3,6 +3,7 @@
import mimetypes
import base64
import json
from odoo import api, fields, models
from odoo.exceptions import UserError
......@@ -45,19 +46,23 @@ class UploadFileWizard(models.TransientModel):
# Upload File
backend = self.env['cmis.backend'].search([], limit=1)
# TODO: voir si le champ est vide et soit mettre à jour soit cherger
# traiter les 2 types de modèle (timesheet & expense)
repo = backend.get_cmis_repository().getObject(proof_folder)
if not obj.proof_file:
try:
filename = (fields.Date.to_string(obj.date).replace('-', '') +
'-' + str(obj.id) + ' - ' +
obj.employee_id.user_id.name + ' - ' + self.filename)
file = repo.createDocument(
name=self.filename,
name=filename,
properties=obj.get_file_properties(),
contentFile=base64.b64decode(self.file),
contentType=content_type
)
file_id = file.getProperties().get('cmis:objectId')
obj.proof_file = file.getObjectId()
except Exception as e:
raise UserError(json.loads(e.details).get('message'))
# TODO: Mettre à jour le champ avec le NodeRef
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Veuillez vous inscrire ou vous pour commenter