diff --git a/pms_api_rest/__manifest__.py b/pms_api_rest/__manifest__.py index 90e77815a..e235886f1 100644 --- a/pms_api_rest/__manifest__.py +++ b/pms_api_rest/__manifest__.py @@ -20,6 +20,7 @@ "data": [ "data/auth_jwt_validator.xml", "views/pms_property_views.xml", + "views/res_users_views.xml" ], "installable": True, } diff --git a/pms_api_rest/datamodels/pms_property.py b/pms_api_rest/datamodels/pms_property.py index ffe7bbae3..0e2a7c6bf 100644 --- a/pms_api_rest/datamodels/pms_property.py +++ b/pms_api_rest/datamodels/pms_property.py @@ -27,4 +27,3 @@ class PmsPropertyInfo(Datamodel): simpleOutColor = fields.String(required=False, allow_none=True) simpleInColor = fields.String(required=False, allow_none=True) simpleFutureColor = fields.String(required=False, allow_none=True) - availabilityRuleFields = fields.List(fields.String(), required=False, allow_none=True) diff --git a/pms_api_rest/datamodels/pms_user.py b/pms_api_rest/datamodels/pms_user.py index a3b390071..2c2dee967 100644 --- a/pms_api_rest/datamodels/pms_user.py +++ b/pms_api_rest/datamodels/pms_user.py @@ -18,3 +18,4 @@ class PmsApiRestUserOutput(Datamodel): userImageBase64 = fields.String(required=False, allow_none=True) defaultPropertyId = fields.Integer(required=True, allow_none=False) defaultPropertyName = fields.String(required=True, allow_none=False) + availabilityRuleFields = fields.List(fields.String(), required=False, allow_none=True) diff --git a/pms_api_rest/models/__init__.py b/pms_api_rest/models/__init__.py index 9216f6ffd..49652c702 100644 --- a/pms_api_rest/models/__init__.py +++ b/pms_api_rest/models/__init__.py @@ -1 +1,2 @@ from . import pms_property +from . import res_users diff --git a/pms_api_rest/models/pms_property.py b/pms_api_rest/models/pms_property.py index 5482dc38c..a9c224253 100644 --- a/pms_api_rest/models/pms_property.py +++ b/pms_api_rest/models/pms_property.py @@ -82,21 +82,3 @@ class PmsProperty(models.Model): help="Color for pending payment reservations in the planning.", default="rgba(162,70,137)", ) - - availability_rule_field_ids = fields.Many2many( - string="Availability Rules", - help="Configurable availability rules", - default=lambda x: x._get_default_avail_rule_fields(), - comodel_name="ir.model.fields", - relation="ir_model_fields_pms_property_rel", - column1="ir_model_fields", - column2="pms_property", - - ) - - def _get_default_avail_rule_fields(self): - avail_rule_fields = self.env['ir.model.fields'].search([('model_id', '=', 'pms.availability.plan.rule'), ('name', 'in', ('min_stay', 'quota'))]) - if avail_rule_fields: - return avail_rule_fields.ids - else: - return [] diff --git a/pms_api_rest/models/res_users.py b/pms_api_rest/models/res_users.py new file mode 100644 index 000000000..cb2c94328 --- /dev/null +++ b/pms_api_rest/models/res_users.py @@ -0,0 +1,23 @@ +from odoo import fields, models + + +class ResUsers(models.Model): + _inherit = "res.users" + + availability_rule_field_ids = fields.Many2many( + string="Availability Rules", + help="Configurable availability rules", + default=lambda self: self._get_default_avail_rule_fields(), + comodel_name="ir.model.fields", + relation="ir_model_fields_res_users_rel", + column1="ir_model_fields", + column2="res_users", + + ) + + def _get_default_avail_rule_fields(self): + default_avail_rule_fields = self.env['ir.model.fields'].search([('model_id', '=', 'pms.availability.plan.rule'), ('name', 'in', ('min_stay', 'quota'))]) + if default_avail_rule_fields: + return default_avail_rule_fields.ids + else: + return [] diff --git a/pms_api_rest/services/pms_availability_plan_service.py b/pms_api_rest/services/pms_availability_plan_service.py index cc9382038..c5a2c9077 100644 --- a/pms_api_rest/services/pms_availability_plan_service.py +++ b/pms_api_rest/services/pms_availability_plan_service.py @@ -134,7 +134,7 @@ class PmsAvailabilityPlanService(Component): closed=rule.closed, closedDeparture=rule.closed_departure, closedArrival=rule.closed_arrival, - quota=rule.quota, + quota=rule.quota if rule.quota != -1 else 0, ) result.append(availability_plan_rule_info) @@ -208,25 +208,14 @@ class PmsAvailabilityPlanService(Component): ] ) if avail_rule: - if pms_avail_plan_rule_info.minStay: - vals.update({"min_stay": pms_avail_plan_rule_info.minStay}) - if pms_avail_plan_rule_info.minStayArrival: - vals.update( - {"min_stay_arrival": pms_avail_plan_rule_info.minStayArrival} - ) - if pms_avail_plan_rule_info.maxStay: - vals.update({"max_stay": pms_avail_plan_rule_info.maxStay}) - if pms_avail_plan_rule_info.maxStayArrival: - vals.update( - {"max_stay_arrival": pms_avail_plan_rule_info.maxStayArrival} - ) - if pms_avail_plan_rule_info.quota: - vals.update({"quota": pms_avail_plan_rule_info.quota}) - vals.update( + avail_rule.write( { + "min_stay": pms_avail_plan_rule_info.minStay, + "max_stay": pms_avail_plan_rule_info.maxStay, + "max_stay_arrival": pms_avail_plan_rule_info.maxStayArrival, + "quota": pms_avail_plan_rule_info.quota, "closed": pms_avail_plan_rule_info.closed, "closed_departure": pms_avail_plan_rule_info.closedDeparture, "closed_arrival": pms_avail_plan_rule_info.closedArrival } ) - avail_rule.write(vals) diff --git a/pms_api_rest/services/pms_login_service.py b/pms_api_rest/services/pms_login_service.py index 72ea073ac..95f650437 100644 --- a/pms_api_rest/services/pms_login_service.py +++ b/pms_api_rest/services/pms_login_service.py @@ -60,6 +60,9 @@ class PmsLoginService(Component): key="pms_secret_key_example", algorithm=jwt.ALGORITHMS.HS256, ) + avail_rule_names = [] + for avail_field in user_record.availability_rule_field_ids: + avail_rule_names.append(avail_field.name) return PmsApiRestUserOutput( token=token, @@ -69,4 +72,5 @@ class PmsLoginService(Component): defaultPropertyId=user_record.pms_property_id.id, defaultPropertyName=user_record.pms_property_id.name, userImageBase64=user_record.partner_id.image_1024, + availabilityRuleFields=avail_rule_names, ) diff --git a/pms_api_rest/services/pms_property_service.py b/pms_api_rest/services/pms_property_service.py index dcbcc0dee..042047941 100644 --- a/pms_api_rest/services/pms_property_service.py +++ b/pms_api_rest/services/pms_property_service.py @@ -28,9 +28,6 @@ class PmsPropertyService(Component): for prop in self.env["pms.property"].search( domain, ): - avail_rule_names = [] - for avail_field in prop.availability_rule_field_ids: - avail_rule_names.append(avail_field.name) result_properties.append( PmsPropertyInfo( id=prop.id, @@ -49,7 +46,6 @@ class PmsPropertyService(Component): simpleOutColor=prop.simple_out_color, simpleInColor=prop.simple_in_color, simpleFutureColor=prop.simple_future_color, - availabilityRuleFields=avail_rule_names, ) ) return result_properties @@ -74,8 +70,6 @@ class PmsPropertyService(Component): if not pms_property: pass else: - for avail_field in pms_property.availability_rule_field_ids: - avail_rule_names.append(avail_field.name) res = PmsPropertyInfo( id=pms_property.id, name=pms_property.name, @@ -91,7 +85,6 @@ class PmsPropertyService(Component): staffReservationColor=pms_property.staff_reservation_color, toAssignReservationColor=pms_property.to_assign_reservation_color, pendingPaymentReservationColor=pms_property.pending_payment_reservation_color, - availabilityRuleFields=avail_rule_names ) return res diff --git a/pms_api_rest/views/pms_property_views.xml b/pms_api_rest/views/pms_property_views.xml index 8c6c35ec6..cc3afd76e 100644 --- a/pms_api_rest/views/pms_property_views.xml +++ b/pms_api_rest/views/pms_property_views.xml @@ -71,14 +71,6 @@ attrs="{'invisible': [('color_option_config', '!=', 'advanced')]}" /> - - - diff --git a/pms_api_rest/views/res_users_views.xml b/pms_api_rest/views/res_users_views.xml new file mode 100644 index 000000000..731260c72 --- /dev/null +++ b/pms_api_rest/views/res_users_views.xml @@ -0,0 +1,22 @@ + + + + User Properties fields + res.users + + + + + + + + + + + +