diff --git a/pms/models/pms_property.py b/pms/models/pms_property.py index 0a67406c0..ebbfa19bf 100644 --- a/pms/models/pms_property.py +++ b/pms/models/pms_property.py @@ -2,7 +2,7 @@ # Copyright 2019 Dario Lodeiros # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). -import re +import time from odoo import _, api, fields, models from odoo.exceptions import ValidationError @@ -56,10 +56,30 @@ class PmsProperty(models.Model): ) # Constraints and onchanges - @api.constrains("default_arrival_hour", "default_departure_hour") - def _check_hours(self): - r = re.compile("[0-2][0-9]:[0-5][0-9]") - if not r.match(self.default_arrival_hour): - raise ValidationError(_("Invalid arrival hour (Format: HH:mm)")) - if not r.match(self.default_departure_hour): - raise ValidationError(_("Invalid departure hour (Format: HH:mm)")) + @api.constrains("default_arrival_hour") + def _check_arrival_hour(self): + for record in self: + try: + time.strptime(record.default_arrival_hour, "%H:%M") + return True + except ValueError: + raise ValidationError( + _( + "Format Arrival Hour (HH:MM) Error: %s", + record.default_arrival_hour, + ) + ) + + @api.constrains("default_departure_hour") + def _check_departure_hour(self): + for record in self: + try: + time.strptime(record.default_departure_hour, "%H:%M") + return True + except ValueError: + raise ValidationError( + _( + "Format Departure Hour (HH:MM) Error: %s", + record.default_departure_hour, + ) + ) diff --git a/pms/models/pms_reservation.py b/pms/models/pms_reservation.py index be7974bb5..604a837e8 100644 --- a/pms/models/pms_reservation.py +++ b/pms/models/pms_reservation.py @@ -1,8 +1,9 @@ # Copyright 2017-2018 Alexandre Díaz # Copyright 2017 Dario Lodeiros # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). +import datetime import logging -from datetime import datetime, time, timedelta +import time from odoo import _, api, fields, models from odoo.exceptions import UserError, ValidationError @@ -39,7 +40,7 @@ class PmsReservation(models.Model): if folio and folio.reservation_ids: return folio.reservation_ids[0].checkout else: - return fields.Date.today() + timedelta(1) + return fields.Date.today() + datetime.timedelta(1) def _get_default_arrival_hour(self): folio = False @@ -470,8 +471,8 @@ class PmsReservation(models.Model): for reservation in self: checkin_hour = int(reservation.arrival_hour[0:2]) checkin_minut = int(reservation.arrival_hour[3:5]) - checkin_time = time(checkin_hour, checkin_minut) - reservation.checkin_datetime = datetime.combine( + checkin_time = datetime.time(checkin_hour, checkin_minut) + reservation.checkin_datetime = datetime.datetime.combine( reservation.checkin, checkin_time ) @@ -480,8 +481,8 @@ class PmsReservation(models.Model): for reservation in self: checkout_hour = int(reservation.departure_hour[0:2]) checkout_minut = int(reservation.departure_hour[3:5]) - checkout_time = time(checkout_hour, checkout_minut) - reservation.checkout_datetime = datetime.combine( + checkout_time = datetime.time(checkout_hour, checkout_minut) + reservation.checkout_datetime = datetime.datetime.combine( reservation.checkout, checkout_time ) @@ -531,7 +532,7 @@ class PmsReservation(models.Model): cmds = [] days_diff = (reservation.checkout - reservation.checkin).days for i in range(0, days_diff): - idate = reservation.checkin + timedelta(days=i) + idate = reservation.checkin + datetime.timedelta(days=i) old_line = reservation.reservation_line_ids.filtered( lambda r: r.date == idate ) @@ -914,6 +915,28 @@ class PmsReservation(models.Model): _("No person from reserve %s has arrived", record.name) ) + @api.constrains("arrival_hour") + def _check_arrival_hour(self): + for record in self: + try: + time.strptime(record.arrival_hour, "%H:%M") + return True + except ValueError: + raise ValidationError( + _("Format Arrival Hour (HH:MM) Error: %s", record.arrival_hour) + ) + + @api.constrains("departure_hour") + def _check_departure_hour(self): + for record in self: + try: + time.strptime(record.departure_hour, "%H:%M") + return True + except ValueError: + raise ValidationError( + _("Format Departure Hour (HH:MM) Error: %s", record.departure_hour) + ) + # @api.constrains("reservation_type", "partner_id") # def _check_partner_reservation(self): # for reservation in self: