mirror of
https://github.com/OCA/pms.git
synced 2025-01-29 00:17:45 +02:00
[REF] pms: availability plan wizard massive changes extensibility
Make the code reuse easier in module extensions
This commit is contained in:
@@ -378,6 +378,46 @@ class AvailabilityWizard(models.TransientModel):
|
|||||||
]
|
]
|
||||||
)
|
)
|
||||||
|
|
||||||
|
def _rules_to_overwrite_by_plans(self, availability_plans):
|
||||||
|
self.ensure_one()
|
||||||
|
domain = [
|
||||||
|
("availability_plan_id", "in", availability_plans.ids),
|
||||||
|
]
|
||||||
|
|
||||||
|
if self.room_type_ids:
|
||||||
|
domain.append(("room_type_id", "in", self.room_type_ids.ids))
|
||||||
|
if self.start_date:
|
||||||
|
domain.append(("date", ">=", self.start_date))
|
||||||
|
if self.end_date:
|
||||||
|
domain.append(("date", "<=", self.end_date))
|
||||||
|
|
||||||
|
domain_overwrite = self.build_domain_rules()
|
||||||
|
if len(domain_overwrite):
|
||||||
|
if len(domain_overwrite) == 1:
|
||||||
|
domain.append(domain_overwrite[0][0])
|
||||||
|
else:
|
||||||
|
domain_overwrite = expression.OR(domain_overwrite)
|
||||||
|
domain.extend(domain_overwrite)
|
||||||
|
|
||||||
|
rules = self.env["pms.availability.plan.rule"]
|
||||||
|
if self.start_date and self.end_date:
|
||||||
|
rules = rules.search(domain)
|
||||||
|
if not self.apply_on_all_week and self.start_date and self.end_date:
|
||||||
|
week_days_to_apply = (
|
||||||
|
self.apply_on_monday,
|
||||||
|
self.apply_on_tuesday,
|
||||||
|
self.apply_on_wednesday,
|
||||||
|
self.apply_on_thursday,
|
||||||
|
self.apply_on_friday,
|
||||||
|
self.apply_on_saturday,
|
||||||
|
self.apply_on_sunday,
|
||||||
|
)
|
||||||
|
rules = rules.filtered(
|
||||||
|
lambda x: week_days_to_apply[x.date.timetuple()[6]]
|
||||||
|
)
|
||||||
|
|
||||||
|
return rules
|
||||||
|
|
||||||
@api.depends(
|
@api.depends(
|
||||||
"start_date",
|
"start_date",
|
||||||
"end_date",
|
"end_date",
|
||||||
@@ -420,50 +460,9 @@ class AvailabilityWizard(models.TransientModel):
|
|||||||
]
|
]
|
||||||
record.massive_changes_on = "availability_plan"
|
record.massive_changes_on = "availability_plan"
|
||||||
|
|
||||||
if record.availability_plan_ids:
|
record.rules_to_overwrite = record._rules_to_overwrite_by_plans(
|
||||||
domain = [
|
record.availability_plan_ids
|
||||||
("availability_plan_id", "in", record.availability_plan_ids.ids),
|
)
|
||||||
]
|
|
||||||
|
|
||||||
if record.room_type_ids:
|
|
||||||
domain.append(("room_type_id", "in", record.room_type_ids.ids))
|
|
||||||
if record.start_date:
|
|
||||||
domain.append(("date", ">=", record.start_date))
|
|
||||||
if record.end_date:
|
|
||||||
domain.append(("date", "<=", record.end_date))
|
|
||||||
|
|
||||||
domain_overwrite = self.build_domain_rules()
|
|
||||||
if len(domain_overwrite):
|
|
||||||
if len(domain_overwrite) == 1:
|
|
||||||
domain.append(domain_overwrite[0][0])
|
|
||||||
else:
|
|
||||||
domain_overwrite = expression.OR(domain_overwrite)
|
|
||||||
domain.extend(domain_overwrite)
|
|
||||||
week_days_to_apply = (
|
|
||||||
record.apply_on_monday,
|
|
||||||
record.apply_on_tuesday,
|
|
||||||
record.apply_on_wednesday,
|
|
||||||
record.apply_on_thursday,
|
|
||||||
record.apply_on_friday,
|
|
||||||
record.apply_on_saturday,
|
|
||||||
record.apply_on_sunday,
|
|
||||||
)
|
|
||||||
if record.start_date and record.end_date:
|
|
||||||
rules = self.env["pms.availability.plan.rule"].search(domain)
|
|
||||||
if (
|
|
||||||
not record.apply_on_all_week
|
|
||||||
and record.start_date
|
|
||||||
and record.end_date
|
|
||||||
):
|
|
||||||
record.rules_to_overwrite = rules.filtered(
|
|
||||||
lambda x: week_days_to_apply[x.date.timetuple()[6]]
|
|
||||||
)
|
|
||||||
else:
|
|
||||||
record.rules_to_overwrite = rules
|
|
||||||
else:
|
|
||||||
record.rules_to_overwrite = False
|
|
||||||
else:
|
|
||||||
record.rules_to_overwrite = False
|
|
||||||
|
|
||||||
@api.depends(
|
@api.depends(
|
||||||
"start_date",
|
"start_date",
|
||||||
|
|||||||
Reference in New Issue
Block a user