Commit d53d4aa1 by Damien Moulard

Merge branch '3877_prevent_shift_registration_if_exempted' into 'dev_cooperatic'

Prevent shift registration if member is exempted at shift date

See merge request !48
parents 58145a69 ccfc19f7
...@@ -13,6 +13,21 @@ class ShiftTemplate(models.Model): ...@@ -13,6 +13,21 @@ class ShiftTemplate(models.Model):
_inherit = 'shift.template' _inherit = 'shift.template'
def _will_member_be_still_exempted_at_date(self, partner, rec_date):
answer = False
if partner.cooperative_state == "exempted":
#_logger.debug("%s is exempted now, but what about at %s", str(partner.id), str(rec_date))
rec_date = datetime.strptime(rec_date, '%Y-%m-%d')
for l in partner.leave_ids:
#_logger.debug("leave start end : %s %s", str(l.start_date), str(l.stop_date))
if (rec_date >= datetime.strptime(l.start_date, '%Y-%m-%d') and
rec_date <= datetime.strptime(l.stop_date, '%Y-%m-%d')):
answer = True
#_logger.debug("Partner will be still exempted")
return answer
@api.model @api.model
def ng_create_shifts_from_template(self, instance=None, after=False, before=False): def ng_create_shifts_from_template(self, instance=None, after=False, before=False):
conf = self.env['ir.config_parameter'] conf = self.env['ir.config_parameter']
...@@ -87,20 +102,22 @@ class ShiftTemplate(models.Model): ...@@ -87,20 +102,22 @@ class ShiftTemplate(models.Model):
for attendee in ticket.registration_ids: for attendee in ticket.registration_ids:
state, strl_id = attendee._get_state(rec_date) state, strl_id = attendee._get_state(rec_date)
if state: if state:
vals = { # only register if attendee is not exempted when the event will occur
'partner_id': attendee.partner_id.id, if self._will_member_be_still_exempted_at_date(attendee.partner_id, rec_date) is False:
'user_ids': [(6, 0, template.user_ids.ids)], vals = {
'state': state, 'partner_id': attendee.partner_id.id,
'email': attendee.email, 'user_ids': [(6, 0, template.user_ids.ids)],
'phone': attendee.phone, 'state': state,
'name': attendee.name, 'email': attendee.email,
'shift_id': shift_id.id, 'phone': attendee.phone,
'shift_ticket_id': ticket_id.id, 'name': attendee.name,
'tmpl_reg_line_id': strl_id, 'shift_id': shift_id.id,
'template_created': True, 'shift_ticket_id': ticket_id.id,
} 'tmpl_reg_line_id': strl_id,
self.env['shift.registration'].with_context( 'template_created': True,
from_shift_template=True).create(vals) }
self.env['shift.registration'].with_context(
from_shift_template=True).create(vals)
@api.model @api.model
...@@ -115,9 +132,9 @@ class ShiftTemplate(models.Model): ...@@ -115,9 +132,9 @@ class ShiftTemplate(models.Model):
('week_list', '=', today.strftime('%a').upper()[0:2]), ('week_list', '=', today.strftime('%a').upper()[0:2]),
('last_shift_date', '<=', datetime.strftime(futur, "%Y-%m-%d"))] ('last_shift_date', '<=', datetime.strftime(futur, "%Y-%m-%d"))]
templates = self.env['shift.template'].search(filters) templates = self.env['shift.template'].search(filters)
# templates = self.env['shift.template'].search([('id', '=', 60)]) #templates = self.env['shift.template'].search([('id', '=', 123)])
for template in templates: for template in templates:
# _logger.info("Shift template = %s", str(template)) #_logger.debug("Shift template = %s", str(template))
self.ng_create_shifts_from_template( instance=template, self.ng_create_shifts_from_template( instance=template,
before=fields.Datetime.to_string( before=fields.Datetime.to_string(
datetime.today() + timedelta(days=shift_creation_days))) datetime.today() + timedelta(days=shift_creation_days)))
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment