From 00ecfada762d5fb2aada08751611fc722e4d1e98 Mon Sep 17 00:00:00 2001 From: michel Date: Tue, 21 Nov 2017 16:40:06 +0100 Subject: [PATCH] assistant --- coworking_event/views/event_menu.xml | 4 +- .../wizard/coworking_event_weekly.py | 55 ++++++++++++++++++- .../wizard/coworking_event_weekly_views.xml | 34 ++++++++++++ 3 files changed, 91 insertions(+), 2 deletions(-) diff --git a/coworking_event/views/event_menu.xml b/coworking_event/views/event_menu.xml index e8ff318..620c89a 100644 --- a/coworking_event/views/event_menu.xml +++ b/coworking_event/views/event_menu.xml @@ -7,6 +7,8 @@ res_model="coworking.event" view_mode="tree,form,calendar" context="{'search_default_status_confirmed': True, 'search_default_status_draft': True}" /> - + + diff --git a/coworking_event/wizard/coworking_event_weekly.py b/coworking_event/wizard/coworking_event_weekly.py index 030cfe7..fa487cb 100644 --- a/coworking_event/wizard/coworking_event_weekly.py +++ b/coworking_event/wizard/coworking_event_weekly.py @@ -2,9 +2,62 @@ """ Weekly massive event creation module """ -from odoo import models, fields, api +import logging +from datetime import timedelta +from odoo import models, fields, api, _ +from odoo.exceptions import ValidationError +_LOGGER = logging.getLogger(__name__) class CoworkingEventWeekly(models.TransientModel): """ Weekly massive event creation """ _name = 'coworking.event.weekly' _description = 'Weekly massive event creation' + + title = fields.Char(required=True) + manager_id = fields.Many2one('coworking.coworker', string='Manager', + required=True) + date_start_recurence = fields.Datetime('Date start', required=True) + date_stop_recurence = fields.Datetime('Date stop', required=True) + duration = fields.Float(required=True) + + @api.constrains('date_start_recurence', 'date_stop_recurence') + def _check_dates(self): + """ Check date coherence """ + for weekly in self: + if weekly.date_start_recurence > weekly.date_stop_recurence: + raise ValidationError(_('Please check you dates.')) + + @api.multi + def weekly_create(self): + """ Create multiple events repeated weekly, according to dates """ + self.ensure_one() + # 5 - Rediriger vers la liste des événements (en automatique) + # _LOGGER.warning() + date_start_py = fields.Datetime.from_string(self.date_start_recurence) + delta = timedelta(hours=self.duration) + + date_stop_py = fields.Datetime.from_string(self.date_stop_recurence) + week_start = date_start_py.isocalendar()[1] + week_stop = date_stop_py.isocalendar()[1] + week_count = week_stop - week_start + 1 + wdelta = timedelta(days=7) + + for week_number in xrange(week_count): + if week_number == 0: + date_start = self.date_start_recurence + date_stop = fields.Datetime.to_string(date_start_py + delta) + else: + date_start = fields.Datetime.from_string(self.date_start_recurence) +\ + wdelta * week_number + date_stop = fields.Datetime.to_string(date_start + delta) + date_start = fields.Datetime.to_string(date_start) + self.env['coworking.event'].create({ + 'title': self.title, + 'date_start': date_start, + 'date_end': date_stop, + 'manager_id': self.manager_id.id + }) + return { + 'type': 'ir.actions.act_window', + 'res_model': 'coworking.event', + 'view_mode': 'tree'} diff --git a/coworking_event/wizard/coworking_event_weekly_views.xml b/coworking_event/wizard/coworking_event_weekly_views.xml index 38f0b06..1f436c4 100644 --- a/coworking_event/wizard/coworking_event_weekly_views.xml +++ b/coworking_event/wizard/coworking_event_weekly_views.xml @@ -1,4 +1,38 @@ + + + + Event Weekly Form + coworking.event.weekly + +
+ + + + + + + + + +
+
+
+
+
+ + + + + + +