mirror of
https://github.com/OCA/pms.git
synced 2025-01-29 00:17:45 +02:00
[IMP]:pms-pwa: change configurable avail rule fields from property to user
This commit is contained in:
@@ -20,6 +20,7 @@
|
||||
"data": [
|
||||
"data/auth_jwt_validator.xml",
|
||||
"views/pms_property_views.xml",
|
||||
"views/res_users_views.xml"
|
||||
],
|
||||
"installable": True,
|
||||
}
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -1 +1,2 @@
|
||||
from . import pms_property
|
||||
from . import res_users
|
||||
|
||||
@@ -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 []
|
||||
|
||||
23
pms_api_rest/models/res_users.py
Normal file
23
pms_api_rest/models/res_users.py
Normal file
@@ -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 []
|
||||
@@ -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)
|
||||
|
||||
@@ -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,
|
||||
)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -71,14 +71,6 @@
|
||||
attrs="{'invisible': [('color_option_config', '!=', 'advanced')]}"
|
||||
/>
|
||||
</group>
|
||||
<group string="Configurable Availability Rules">
|
||||
<field
|
||||
name="availability_rule_field_ids"
|
||||
widget="many2many_tags"
|
||||
options="{'no_create': True}"
|
||||
domain="['&',('model_id', '=', 'pms.availability.plan.rule'), ('name', 'in', ('min_stay', 'max_stay', 'quota', 'max_stay_arrival', 'closed_arrival', 'closed', 'closed_departure'))]"
|
||||
/>
|
||||
</group>
|
||||
</group>
|
||||
</xpath>
|
||||
</field>
|
||||
|
||||
22
pms_api_rest/views/res_users_views.xml
Normal file
22
pms_api_rest/views/res_users_views.xml
Normal file
@@ -0,0 +1,22 @@
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<odoo>
|
||||
<record id="res_users_view_form" model="ir.ui.view">
|
||||
<field name="name">User Properties fields</field>
|
||||
<field name="model">res.users</field>
|
||||
<field name="inherit_id" ref="base.view_users_form" />
|
||||
<field name="arch" type="xml">
|
||||
<xpath expr="//page[@name='references']/group" position="after">
|
||||
<group>
|
||||
<group string="Configurable Availability Rules">
|
||||
<field
|
||||
name="availability_rule_field_ids"
|
||||
widget="many2many_tags"
|
||||
options="{'no_create': True}"
|
||||
domain="['&',('model_id', '=', 'pms.availability.plan.rule'), ('name', 'in', ('min_stay', 'max_stay', 'quota', 'max_stay_arrival', 'closed_arrival', 'closed', 'closed_departure'))]"
|
||||
/>
|
||||
</group>
|
||||
</group>
|
||||
</xpath>
|
||||
</field>
|
||||
</record>
|
||||
</odoo>
|
||||
Reference in New Issue
Block a user