Sélectionner une révision Git
Bifurcation depuis
Le Filament / Confédération Générale des SCOP / cgscop_partner
Le projet source a une visibilité limitée.
res_partner.py 3,35 Kio
# Copyright 2019 Le Filament (<http://www.le-filament.com>)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
from odoo import api, models
from odoo.addons.cmis_field import fields
ALFRESCO_TRACKED_FIELDS = ['name', 'id', 'siret', 'member_number', 'ur_id']
class AlfodooResPartner(models.Model):
_name = 'res.partner'
_inherit = ['res.partner', 'cgscop.alfresco']
partner_cmis_folder = fields.CmisFolder(
allow_create=True,
allow_delete=False,
create_parent_get='_get_parent_path',
create_properties_get='_get_folder_properties',
)
# ------------------------------------------------------
# Override Alfodoo
# ------------------------------------------------------
def _get_parent_path(self, records, backend):
"""
Défini le répertoire parent :
le répertoire configuré par défaut dans le backend
"""
path_parts = backend.initial_directory_write.split('/')
parent_cmis_object = backend.get_folder_by_path_parts(
path_parts, create_if_not_found=True)
path = dict.fromkeys(self.ids, parent_cmis_object)
return path
def _get_folder_properties(self, records, backend):
"""
Ajoute les propriétés au dossier lors de la création dans Alfresco
"""
return {
self.id: {
'cmis:secondaryObjectTypeIds': [
'P:crm:organisme', 'P:up:UploadFolder', 'P:cm:titled'
],
'up:allowedTypes': 'crm:document',
'crm:raisonSociale': self.name,
'crm:siret': self.siret if self.siret else '',
'crm:numAdherent': self.member_number if self.member_number else '',
'crm:id': str(self.id),
'crm:ur': str(self.ur_id.id),
}
}
# ------------------------------------------------------
# Override ORM
# ------------------------------------------------------
@api.multi
def write(self, vals):
""" Surcharge la fonction write() pour mettre à jour
la raison sociale, le nom, le siret, l'id Odoo ou le
num adhérent
"""
tracked_fields = self.fields_get(ALFRESCO_TRACKED_FIELDS)
# Dict des valeurs initiales des champs présents dans TRACKED_FIELDS
initial_values = dict(
(record.id, dict(
(key, getattr(record, key)) for key in tracked_fields)) for record in self.filtered('is_cooperative'))
# Ecriture des nouvelles valeurs
result = super(AlfodooResPartner, self).write(vals)
# Dict des nouvelles valeurs
new_values = dict(
(record.id, dict(
(key, getattr(record, key)) for key in tracked_fields)) for record in self.filtered('is_cooperative'))
# Check des modifications sur les coopératives présentes dans RIGA
for record in self:
if record.is_cooperative and record.partner_cmis_folder:
if new_values[record.id] != initial_values[record.id]:
self.alfresco_update_organism(record)
return result
@api.multi
def unlink(self):
for partner in self:
if partner.partner_cmis_folder:
partner.alfresco_remove(partner.partner_cmis_folder)
return super(AlfodooResPartner, self).unlink()