From 569c4f37960db2b2c5e1bb19cc30561c254cc58a Mon Sep 17 00:00:00 2001 From: osarrat Date: Thu, 21 Jun 2018 16:49:13 +0200 Subject: [PATCH] Added moodle_username to contacts --- groupeurd_crm/__openerp__.py | 3 ++- groupeurd_crm/models.py | 37 ++++++++++++++++++++++++++++++++++++ groupeurd_crm/views.xml | 3 +++ 3 files changed, 42 insertions(+), 1 deletion(-) diff --git a/groupeurd_crm/__openerp__.py b/groupeurd_crm/__openerp__.py index d9e29fb..7363a12 100644 --- a/groupeurd_crm/__openerp__.py +++ b/groupeurd_crm/__openerp__.py @@ -15,6 +15,7 @@ - Ajouter un lien direct vers profil LinkedIn pour pâlier défaut plugin existant - Rendre le champ "Relation interne principale" accessible comme champ de recherche avancé, et le remplir par défaut par le créateur du contact - Renommer "Nom" en "Nom de famille" pour distinguer le nom de famille du "Nom" qui est l'association Prénom + Nom de famille + - Ajouter le champ "Nom d'utilisateur Moodle" pour permettre le lien d'Odoo vers Moodle Contacts, ajout des champs: Compte de réseau social (Skype, Twitter, LinkedIn, Facebook), Langue principale, langues secondaires, Publications (liste d’URL). @@ -35,7 +36,7 @@ # Check https://github.com/odoo/odoo/blob/master/openerp/addons/base/module/module_data.xml # for the full list 'category': 'Uncategorized', - 'version': '0.2', + 'version': '0.3', # any module necessary for this one to work correctly 'depends': ['base', 'calendar_ics', 'groupeurd_newsletter', 'crm', 'partner_social_fields', 'partner_firstname'], diff --git a/groupeurd_crm/models.py b/groupeurd_crm/models.py index f5a3076..4d2cb64 100644 --- a/groupeurd_crm/models.py +++ b/groupeurd_crm/models.py @@ -39,6 +39,7 @@ class partner(models.Model): secondary_languages = fields.Many2many("groupeurd_crm.languagelist", string="Langues secondaires") country_experiences = fields.Many2many("res.country", string="Pays d'expertise") linkedin = fields.Char(string="LinkedIn") + moodle_username = fields.Char(string="Moodle username") yearly_budget = fields.Integer(string="Budget annuel de l'organisation (M€)") sigmah_adoption_status = fields.Selection([('no',"Non"),('engaged',"Adoption engagée"),('partial',"Utilisation partielle"),('complete',"Utilisation complète")], default='no', string="Adoption de Sigmah", required=True) @@ -47,7 +48,27 @@ class partner(models.Model): sigmah_autonomous_hosting = fields.Boolean(default=False, string="Hébergement autonome") sigmah_users_count = fields.Integer(string="Nombre d'utilisateurs de Sigmah") + #Si des listes de diffusion sont ajoutées à la création du "Contact", ajouter les abonnements en conséquence + @api.model + def create(self, vals): + #On fait la création d'abord pour pouvoir associer les abonnements ensuite + res = super(partner, self).create(vals) + + #Ajout de listes: pour toutes les listes en valeur, créer l'abonnement + subscribe_contact_vals_array = [] + if vals.get('list_ids'): + for list_id in vals['list_ids'][0][2]: + list = self.env['mail.mass_mailing.list'].browse(list_id) + subscribe_contact_vals_array.append({'email': vals.get('email'), 'list_id':list_id}) + + + #Appliquer les ajout de listes + for contact_vals in subscribe_contact_vals_array: + self.env['mail.mass_mailing.contact'].create(contact_vals) + + return res + #Si des listes de diffusion sont ajoutées/supprimées pour le "Contact", modifier les abonnements en conséquence @api.multi @@ -86,6 +107,22 @@ class partner(models.Model): contact.unsubscribed_by_odoo_user = self.env.user return res + #Si des listes de diffusion ont été ajoutées pour le "Contact", supprimer les abonnements en conséquence lors de la suppression du contact + @api.multi + def unlink(self): + #Appliquer les désincriptions + for partner_element in self: + contact_array = self.env['mail.mass_mailing.contact'].search([('email','=',partner_element.email)]) + for contact in contact_array: + contact.opt_out = True + contact.unsubscription_date = fields.Datetime.now() + contact.unsubscribed_by_odoo_user = self.env.user + + #On fait la suppression après les désabonnements pour avoir l'objet partner toujours présent + res = super(partner, self).unlink() + + return res + def goto_linkedin(self, cr, uid, ids, context=None): partner_obj = self.pool.get('res.partner') diff --git a/groupeurd_crm/views.xml b/groupeurd_crm/views.xml index b428afe..ed6198e 100644 --- a/groupeurd_crm/views.xml +++ b/groupeurd_crm/views.xml @@ -32,6 +32,9 @@ Autres + + +