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

[update] refactor file upload

parent 7798e76a
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
...@@ -3,115 +3,14 @@ ...@@ -3,115 +3,14 @@
import base64 import base64
from odoo import models, api from odoo import models, api
from odoo import fields as odooFields
from odoo.addons.cmis_field import fields
from odoo.exceptions import UserError
class ScopAlfrescoAdhesionPartner(models.Model): class ScopAlfrescoAdhesionPartner(models.Model):
_inherit = 'res.partner' _inherit = 'res.partner'
alfresco_invoice_adhesion_file = odooFields.Char("Facture d'adhésion")
alfresco_report_adhesion_file = odooFields.Char("Courrier d'adhésion")
adhesion_cmis_folder = fields.CmisFolder(
allow_create=True,
allow_delete=False,
)
# ------------------------------------------------------ # ------------------------------------------------------
# Actions # Actions
# ------------------------------------------------------ # ------------------------------------------------------
@api.multi
def generate_alfresco_file(self):
"""
Ajoute un fichier sur la GED Alfresco
@return: fonction get_partner_files() de res.partner
"""
# Get proof folder nodeRef
backend = self.env['cmis.backend'].search([], limit=1)
# Create folder adhesion if needed
self._create_folder_adhesion(backend)
path_proj = backend.get_cmis_repository(). \
getFolder(self.adhesion_cmis_folder).getPaths()
path_n0 = path_proj
path = '/'.join(path_n0)
cmis_obj = backend.get_folder_by_path(path)
###
# Invoice adhesion attachment
invoice_adhesion = self._get_invoice_adhesion()
if not invoice_adhesion:
raise UserError(
"Pas de facture associée à cette adhésion !"
)
invoice_adhesion = self.env.ref('account.account_invoices').\
render_qweb_pdf(invoice_adhesion.id)[0]
invoice_adhesion = base64.b64encode(invoice_adhesion)
name = 'Facture adhésion'
invoice_adhesion_attachment = self.env['ir.attachment'].create({
'name': name,
'type': 'binary',
'datas': invoice_adhesion,
'datas_fname': name + '.pdf',
'store_fname': name,
'res_model': self._name,
'res_id': self.id,
'mimetype': 'application/pdf'
})
if not invoice_adhesion_attachment:
raise UserError(
"Erreur lors de la génération de la facture pour Alfresco")
content_type = invoice_adhesion_attachment.mimetype
file_invoice_adhesion = cmis_obj.createDocument(
name=invoice_adhesion_attachment.name,
properties={},
contentFile=base64.b64decode(invoice_adhesion_attachment.datas),
contentType=content_type
)
self.alfresco_invoice_adhesion_file = \
file_invoice_adhesion.getObjectId()
###
# Report adhesion attachment
report_adhesion = self.env.ref(
'cgscop_adhesion.cgscop_adhesion_report'). \
render_qweb_pdf(self.id)[0]
report_adhesion = base64.b64encode(report_adhesion)
name = "Courrier adhésion"
report_adhesion_attachment = self.env['ir.attachment'].create({
'name': name,
'type': 'binary',
'datas': report_adhesion,
'datas_fname': name + '.pdf',
'store_fname': name,
'res_model': self._name,
'res_id': self.id,
'mimetype': 'application/pdf'
})
if not report_adhesion_attachment:
raise UserError(
"Erreur lors de la génération du courrier d'adhésion "
"pour Alfresco")
content_type = report_adhesion_attachment.mimetype
file_report_adhesion = cmis_obj.createDocument(
name=report_adhesion_attachment.name,
properties={},
contentFile=base64.b64decode(report_adhesion_attachment.datas),
contentType=content_type
)
self.alfresco_report_adhesion_file = \
file_report_adhesion.getObjectId()
# Email # Email
def get_recipients_adhesion(self): def get_recipients_adhesion(self):
""" """
...@@ -155,46 +54,6 @@ class ScopAlfrescoAdhesionPartner(models.Model): ...@@ -155,46 +54,6 @@ class ScopAlfrescoAdhesionPartner(models.Model):
'context': ctx, 'context': ctx,
} }
# ------------------------------------------------------
# Override Alfodoo
# ------------------------------------------------------
def _get_invoice_adhesion(self):
"""
:return: Dernière facture de la coop avec article adhésion
"""
invoice = False
invoice_line_ids = self.env['account.invoice.line'].search([
('partner_id', '=', self.id),
('product_id', '=', self.env.user.company_id.product_adhesion_id.id),
])
if invoice_line_ids:
invoice_ids = invoice_line_ids.mapped('invoice_id')
if invoice_ids:
invoice = invoice_ids.sorted(key='create_date')[-1]
return invoice
# ------------------------------------------------------
# Override Alfodoo
# ------------------------------------------------------
def _create_folder_adhesion(self, backend):
"""
Récupère ou crée le répertoire Adhésions s'il n'existe pas
:param backend: lm backend
:return: lm_cmis_folder objectId
"""
# Check de si le répertoire existe
for partner in self:
# Si le répertoire parent n'existe pas on le crée
if not partner.partner_cmis_folder:
partner.create_cmis_folder()
# Récupération du path parent
parent_path = backend.get_cmis_repository().\
getFolder(partner.partner_cmis_folder).getPaths()
path_parts = parent_path + ['Adhésion']
path = '/'.join(path_parts)
# Création ou récupération du répertoire partner
partner.adhesion_cmis_folder = backend.get_folder_by_path(path)
# ------------------------------------------------------ # ------------------------------------------------------
# Override parent # Override parent
# ------------------------------------------------------ # ------------------------------------------------------
...@@ -212,8 +71,29 @@ class ScopAlfrescoAdhesionPartner(models.Model): ...@@ -212,8 +71,29 @@ class ScopAlfrescoAdhesionPartner(models.Model):
Inherit function to : Inherit function to :
- generate files on Alfresco - generate files on Alfresco
""" """
super(ScopAlfrescoAdhesionPartner, self).scop_valid_cg() res = super(ScopAlfrescoAdhesionPartner, self).scop_valid_cg()
self.generate_alfresco_file() # Create & store invoice
invoice_file = self.env.ref('account.account_invoices'). \
render_qweb_pdf(res.id)[0]
# TODO: add correct type
self.push_alfresco_file(
file=invoice_file,
name="Facture d'Adhésion",
partner=self,
type='DAD',)
# Create & store official doc
report_adhesion = self.env.ref(
'cgscop_adhesion.cgscop_adhesion_report'). \
render_qweb_pdf(self.id)[0]
#TODO: add correct type
self.push_alfresco_file(
file=report_adhesion,
name="Courrier d'Adhésion.pdf",
partner=self,
type='LDI')
return True
@api.multi @api.multi
def check_compulsory_docs(self): def check_compulsory_docs(self):
......
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