# -*- coding: utf-8 -*- """ Coworker module """ from odoo import models, fields, api, _ from odoo.exceptions import ValidationError class Coworker(models.Model): """ Coworker model """ _name = 'coworking.coworker' _description = 'Coworker model definition' _order = 'id desc' full_name = fields.Char(compute='_compute_full_name', store=True, index=True) name = fields.Char(required=True) firstname = fields.Char('First name', required=True) coworker_type = fields.Selection([('staffer', 'Staffer'), ('worker', 'Worker'), ('member', 'Member'), ('volunteer', 'Volunteer'), ('visitor', 'Visitor')]) company_name = fields.Char('Company') job = fields.Char() contact_date = fields.Date(default=fields.Date.context_today) street = fields.Char() contact_zip = fields.Char() city = fields.Char() full_contact_adress = fields.Char(compute='_compute_full_contact_adress') phone_number = fields.Char() gsm = fields.Char('GSM') email = fields.Char() url = fields.Char('URL') note = fields.Text() is_done = fields.Boolean('Done?') is_active = fields.Boolean('Active?', default=True) # Concaténation du nom et du prénom @api.depends('name', 'firstname') def _compute_full_name(self): for coworker in self: coworker.full_name = u'{} {}'.format(coworker.name, coworker.firstname) #Test sur contact_date pas de possibilitée de modification # la date est obligatoirement egale ou inferieur à la date enrengistré @api.constrains('contact_date') def _check_contact_date(self): if self.contact_date > fields.Date.context_today(self): raise ValidationError(_('Date most be equal of inferior to to day')) #Contrainte python sur company_name et job, si il y a une raison sociale le champ job est à remplir @api.constrains('company_name', 'job') def _check_company_name(self): for coworker in self: if coworker.company_name and not coworker.job: raise ValidationError(_('You must enter job and compagny both')) #Concatènation de l'adresse si les chanps street, contatc-zip et city sont renseignés @api.depends('street', 'contact_zip', 'city') def _compute_full_contact_adress(self): for coworker in self: if coworker.city: coworker.full_contact_adress = u'{}'.format(coworker.city) if coworker.contact_zip and coworker.city: coworker.full_contact_adress = u'{} {}'.format(coworker.contact_zip, coworker.city) if coworker.street and coworker.contact_zip and coworker.city: coworker.full_contact_adress = u'{} {} {}'.format(coworker.street, coworker.contact_zip, coworker.city)