assistant

This commit is contained in:
michel 2017-11-21 16:40:06 +01:00
parent 5e0cd006d5
commit 00ecfada76
3 changed files with 91 additions and 2 deletions

View File

@ -7,6 +7,8 @@
res_model="coworking.event" view_mode="tree,form,calendar" res_model="coworking.event" view_mode="tree,form,calendar"
context="{'search_default_status_confirmed': True, 'search_default_status_draft': True}" /> context="{'search_default_status_confirmed': True, 'search_default_status_draft': True}" />
<!-- Menu item to open Event list --> <!-- Menu item to open Event list -->
<menuitem id="event_menu" name="Event" action="event_action" /> <menuitem id="event_topmenu" name="Event" />
<menuitem id="event_menu" name="Events" action="event_action"
parent="event_topmenu" sequence="1" />
</odoo> </odoo>

View File

@ -2,9 +2,62 @@
""" Weekly massive event creation module """ """ 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): class CoworkingEventWeekly(models.TransientModel):
""" Weekly massive event creation """ """ Weekly massive event creation """
_name = 'coworking.event.weekly' _name = 'coworking.event.weekly'
_description = 'Weekly massive event creation' _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'}

View File

@ -1,4 +1,38 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<odoo> <odoo>
<!-- Form -->
<record id="view_form_weekly_event" model="ir.ui.view">
<field name="name">Event Weekly Form</field>
<field name="model">coworking.event.weekly</field>
<field name="arch" type="xml">
<form string="event">
<sheet>
<group>
<field name="title" />
<field name="manager_id" />
<field name="date_start_recurence" />
<field name="date_stop_recurence" />
<field name="duration" widget="float_time" />
</group>
</sheet>
<footer>
<button type="object" name="weekly_create" string="Create"
class="oe_highlight" />
<button string="Close" special="cancel" />
</footer>
</form>
</field>
</record>
<!-- Action -->
<act_window id="weekly_event_action" name="Weekly event"
res_model="coworking.event.weekly" view_mode="form"
target="new" />
<!-- Menu -->
<menuitem id="weekly_event_menu" name="Weekly events" action="weekly_event_action"
parent="event_topmenu" sequence="5" />
</odoo> </odoo>