From 395a4becdbaf6e2356b9f781d68bfdc65f8b95d8 Mon Sep 17 00:00:00 2001 From: eloyoussef Date: Sat, 10 Mar 2018 23:09:44 +0100 Subject: [PATCH] =?UTF-8?q?Derniere=20version=20de=20multidays=20avant=20m?= =?UTF-8?q?ise=20=C3=A0=20jours=20master?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../models/golem_resource_reservation.py | 56 ++++++++++++++++++- .../golem_resource_reservation_views.xml | 4 +- 2 files changed, 56 insertions(+), 4 deletions(-) diff --git a/golem_resource/models/golem_resource_reservation.py b/golem_resource/models/golem_resource_reservation.py index 322b363..c817037 100644 --- a/golem_resource/models/golem_resource_reservation.py +++ b/golem_resource/models/golem_resource_reservation.py @@ -56,6 +56,8 @@ class GolemResourceReservation(models.Model): states={'draft': [('readonly', False)]}) resource_avaibility_start = fields.Date(related='resource_id.avaibility_start') resource_avaibility_stop = fields.Date(related='resource_id.avaibility_stop') + resource_availibility_24_7 = fields.Boolean(related='resource_id.availibility_24_7') + resource_availibility_24_24 = fields.Boolean(related='resource_id.availibility_24_24') resource_timetable_ids = fields.One2many(related='resource_id.timetable_ids') note = fields.Text(help='Notes, optional subject for the reservation, reason') @@ -181,10 +183,58 @@ class GolemResourceReservation(models.Model): 'this period, please choose another périod before ' 'confirming') raise ValidationError(verr) + #check if it's a multidays reservation + res_date_start = fields.Datetime.from_string(reservation.date_start).date() + res_date_stop = fields.Datetime.from_string(reservation.date_stop).date() + multidays = res_date_start != res_date_stop + #check if the resource hasn't a total availibility - if not reservation.resource_id.availibility_24_7: + if not reservation.resource_availibility_24_7: + if reservation.resource_availibility_24_24 and multidays: + pass + + + elif reservation.resource_availibility_24_24: + + # Check if reservation is not taking place out the avaibility timetables + is_day_allowed = False + for timetable in reservation.resource_id.timetable_ids: + # Check for the time according to resource timetable avaibility + date = fields.Datetime.from_string(reservation.date_start) + if int(timetable.weekday) == date.weekday(): + is_day_allowed = True + if not is_day_allowed: + verr = _('Not allowed, the resource is not available ' + 'this day. Please choose another date.') + raise ValidationError(verr) + + elif not reservation.resource_availibility_24_24 and multidays: + pass + + else: + pass + + # Check if reservation is not taking place out the avaibility timetables + is_day_allowed = False + for timetable in reservation.resource_id.timetable_ids: + # Check for the time according to resource timetable avaibility + date = fields.Datetime.from_string(reservation.date_start) + if int(timetable.weekday) == date.weekday(): + is_day_allowed = True + if reservation.hour_start < timetable.time_start or \ + reservation.hour_stop > timetable.time_stop: + verr = _('Not allowed, the resource is not available ' + 'during this period, please choose another ' + 'time before confirming.') + raise ValidationError(verr) + if not is_day_allowed: + verr = _('Not allowed, the resource is not available ' + 'this day. Please choose another date.') + raise ValidationError(verr) + + # Check if reservation is not taking place out the avaibility timetables - is_day_allowed = False + """is_day_allowed = False for timetable in reservation.resource_id.timetable_ids: # Check for the time according to resource timetable avaibility date = fields.Datetime.from_string(reservation.date) @@ -199,7 +249,7 @@ class GolemResourceReservation(models.Model): if not is_day_allowed: verr = _('Not allowed, the resource is not available ' 'this day. Please choose another date.') - raise ValidationError(verr) + raise ValidationError(verr)""" """ # Check if the resource is already taken during this period # PERF : check the date, not iterate over all reservations diff --git a/golem_resource/views/golem_resource_reservation_views.xml b/golem_resource/views/golem_resource_reservation_views.xml index 70a3142..662d4cc 100644 --- a/golem_resource/views/golem_resource_reservation_views.xml +++ b/golem_resource/views/golem_resource_reservation_views.xml @@ -84,9 +84,11 @@ along with this program. If not, see . + - +