diff --git a/models/project.py b/models/project.py index 5e089b2ce36f7bc3a90e9f74ebb4251c2a7a1f63..e46bbc1abcafa6baa7ed95706056f1732aee1245 100644 --- a/models/project.py +++ b/models/project.py @@ -2,121 +2,143 @@ # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). from odoo import models, fields, api -from datetime import datetime, date, time, timedelta +from datetime import datetime, timedelta + class NymphProject(models.Model): - _name = "project.project" - _inherit = "project.project" - - def _get_type_common(self): - ids = self.env['project.task.type'].search([ - ('case_default', '=', True)]) - return ids - - type_ids = fields.Many2many( - comodel_name='project.task.type', relation='project_task_type_rel', - column1='project_id', column2='type_id', string='Tasks Stages', - default=_get_type_common - ) - zone_etude = fields.Boolean("Zone d'étude") - access = fields.Boolean("Conditions d'accessibilité") - path_drive = fields.Char("Lien Drive") - - ## CRON de vérification Zone Validée - def _cron_project_zone(self): - projects = self.env['project.project'].search([('zone_etude','=', False)],) - print ("projets", str(projects)) - for p in projects: - body = '<li>Projet : '+p.name+'</li>' - body_html = "<div><b>%(title)s</b> : %(body)s</div>" % { - 'title': "Zone étude à remplir", - 'body': body, - } - - message = self.env['mail.message'].create({'message_type': "notification", - "subtype": 1, # subject type - 'body': body, - 'subject': "Message subject", - 'needaction_partner_ids': [(p.user_id.partner_id.id)], - # partner to whom you send notification - }) - p.message_post( - body=body_html, - subject='Zone étude', - message_type='notification', - partner_ids=[(p.user_id.partner_id.id)] , - subtype_id=1, - model='project.project', - res_id=p.id - ) - + _name = "project.project" + _inherit = "project.project" + + def _get_type_common(self): + ids = self.env['project.task.type'].search([ + ('case_default', '=', True)]) + return ids + + type_ids = fields.Many2many( + comodel_name='project.task.type', relation='project_task_type_rel', + column1='project_id', column2='type_id', string='Tasks Stages', + default=_get_type_common + ) + zone_etude = fields.Boolean("Zone d'étude") + access = fields.Boolean("Conditions d'accessibilité") + path_drive = fields.Char("Lien Drive") + + # CRON de vérification Zone Validée + def _cron_project_zone(self): + projects = self.env['project.project'].search([ + ('zone_etude', '=', False)]) + print ("projets", str(projects)) + for p in projects: + body = '<li>Projet : '+p.name+'</li>' + body_html = "<div><b>%(title)s</b> : %(body)s</div>" % { + 'title': "Zone étude à remplir", + 'body': body, + } + + # message = self.env['mail.message'].create( + # { + # 'message_type': "notification", + # "subtype": 1, # subject type + # 'body': body, + # 'subject': "Message subject", + # 'needaction_partner_ids': [(p.user_id.partner_id.id)], + # # partner to whom you send notification + # }) + p.message_post( + body=body_html, + subject='Zone étude', + message_type='notification', + partner_ids=[(p.user_id.partner_id.id)], + subtype_id=1, + model='project.project', + res_id=p.id + ) + + class NymphProjectTaskType(models.Model): - _inherit = 'project.task.type' + _inherit = 'project.task.type' + + case_default = fields.Boolean(string='Default step') - case_default = fields.Boolean(string='Default step') class NymphProjectTask(models.Model): - _inherit = 'project.task' - - type_task = fields.Selection([ - ('bureau', 'Bureau'), - ('terrain', 'Terrain'), - ('reunion', 'Réunion'), - ], string='Type de tâche') - moment = fields.Selection([('diurne', 'Diurne'), ('nocturne', 'Nocturne')], string="Moment tâche") - period_id = fields.Many2one('project.period', string='Période') - date_start = fields.Datetime(string='Starting Date', default=fields.Datetime.now, index=True, copy=False) - date_end = fields.Datetime(string='Ending Date', index=True, copy=False) - - @api.model - def create(self, vals): - res = super(NymphProjectTask, self).create(vals) - if res.period_id: - res.date_start = res.period_id.date_start - res.date_end = res.period_id.date_end - res.date_deadline = res.period_id.date_end.date() - return res - - @api.onchange('period_id') - def _onchange_period_id(self): - if self.period_id: - self.date_start = self.period_id.date_start - self.date_end = self.period_id.date_end - self.date_deadline = self.period_id.date_end.date() - - ## CRON sur Tasks deadline - def _cron_tasks_todo(self): - tasks = self.env['project.task'].search([('date_deadline','<', datetime.now().date() +timedelta(days=15))],) - for p in tasks: - print ("task", str(p.name)) - print ("date", str(p.date_deadline)) - responsable = p.user_id.partner_id.id - body = '<li>Tâche: '+p.name+'</li>' - body += '<li>Deadline: '+str(p.date_deadline)+'</li>' - body_html = "<div><b>%(title)s</b> : %(body)s</div>" % { - 'title': "Tâche à effectuer avant la deadline", - 'body': body, - } - message = self.env['mail.message'].create({'message_type': "notification", - "subtype": 1, # subject type - 'body': body, - 'subject': "Message subject", - 'needaction_partner_ids': [(p.user_id.partner_id.id)], - }) - p.message_post( - body=body_html, - subject='Tâches restantes à effectuer', - message_type='notification', - partner_ids=[(p.user_id.partner_id.id)] , - subtype_id=1, - model='project.task', - res_id=p.id - ) + _inherit = 'project.task' + + @api.model + def default_get(self, fields_list): + result = super(NymphProjectTask, self).default_get(fields_list) + project_id = self.env['project.project'].browse( + self.env.context['default_project_id']) + result['name'] = project_id.name + return result + + type_task = fields.Selection([ + ('bureau', 'Bureau'), + ('terrain', 'Terrain'), + ('reunion', 'Réunion'), + ], string='Type de tâche') + moment = fields.Selection([ + ('diurne', 'Diurne'), + ('nocturne', 'Nocturne')], string="Moment tâche") + period_id = fields.Many2one('project.period', string='Période') + date_start = fields.Datetime( + string='Starting Date', + default=fields.Datetime.now, + index=True, copy=False) + date_end = fields.Datetime(string='Ending Date', index=True, copy=False) + + @api.model + def create(self, vals): + res = super(NymphProjectTask, self).create(vals) + if res.period_id: + res.date_start = res.period_id.date_start + res.date_end = res.period_id.date_end + res.date_deadline = res.period_id.date_end.date() + return res + + @api.onchange('period_id') + def _onchange_period_id(self): + if self.period_id: + self.date_start = self.period_id.date_start + self.date_end = self.period_id.date_end + self.date_deadline = self.period_id.date_end.date() + + # CRON sur Tasks deadline + def _cron_tasks_todo(self): + tasks = self.env['project.task'].search([ + ('date_deadline', '<', datetime.now().date() + timedelta(days=15))]) + for p in tasks: + print ("task", str(p.name)) + print ("date", str(p.date_deadline)) + # responsable = p.user_id.partner_id.id + body = '<li>Tâche: '+p.name+'</li>' + body += '<li>Deadline: '+str(p.date_deadline)+'</li>' + body_html = "<div><b>%(title)s</b> : %(body)s</div>" % { + 'title': "Tâche à effectuer avant la deadline", + 'body': body, + } + # message = self.env['mail.message'].create({ + # 'message_type': "notification", + # "subtype": 1, # subject type + # 'body': body, + # 'subject': "Message subject", + # 'needaction_partner_ids': [(p.user_id.partner_id.id)], + # }) + p.message_post( + body=body_html, + subject='Tâches restantes à effectuer', + message_type='notification', + partner_ids=[(p.user_id.partner_id.id)], + subtype_id=1, + model='project.task', + res_id=p.id + ) + class NymphProjectPeriod(models.Model): - _name = 'project.period' - _description = "Période projet" + _name = 'project.period' + _description = "Période projet" - name = fields.Char("Nom de la période") - date_start = fields.Datetime(string='Début de période') - date_end = fields.Datetime(string='Fin de période') \ No newline at end of file + name = fields.Char("Nom de la période") + date_start = fields.Datetime(string='Début de période') + date_end = fields.Datetime(string='Fin de période') \ No newline at end of file