mirror of
https://github.com/OCA/pms.git
synced 2025-01-29 00:17:45 +02:00
* [REF] pms: refactor amenity type * [REF] pms: refactor amenity * [REF]Refactor amenity views and demo data * [WIP] master model 2nd day * [WIP] Master model refactor * [WIP] Refactor in tests * [WIP] Add mandatory sequence in pms_property at tests and fix create in folio, reservation and checkin * [WIP] Test refactor * [WIP]Refactor pms_room, pms_room_clousure_reason and pms_room_type * [WIP]review of guidelines in master models * [WIP]test refactor * [WIP]review guidelines in master models 2 * [WIP] fixed fields in pms_l10n_es * [WIP]Refactor product_product, product_template, res_company, res_partner and res_user * [IMP] Add common.py for tests * [WIP] Refactor fields in pms.folio and pms.reservation * [WIP] Review guidelines in pms.reservation, pms.reservation.line and rename availability models * [WIP] Rename availability models * [WIP] Refactor availability models * [WIP] Refactor availity models 2 * [WIP] Pms: add sequences creation in pms_property create * [WIP] Fix sequence creation in pmp.property * [REF] Refactor fields in res_partner and rename date_overnight * [REF] Refactoring master models tests * [FIX] Fix sequence create in pms.reservation * [REF] Refactor helps in master and availability models * [IMP] Extend test coverage in test_pms_reservation * [REF] Refactor fields in pms_reservation * [REF] Refactor fields in pms_reservation 2 * [REF] Refactor fields in service flow * [REF] Refactor pms_reservation * [REF] Refactor pms_reservation 2 * [REF] draft button removed from view * [REF] change no_show to arrival_delayed in field state of pms_reservation * [REF] Add compute_preferred_room_id in pms_reservation * [REF] Fix cache problem in test_reservation_action_checkout Co-authored-by: braisab <braisterbutalino@gmail.com> Co-authored-by: Sara Lago <saralago126@gmail.com> Co-authored-by: Brais Abeijón <>
58 lines
2.3 KiB
Python
58 lines
2.3 KiB
Python
# Copyright 2019 Pablo Quesada
|
|
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
|
from odoo import _, api, fields, models
|
|
from odoo.exceptions import ValidationError
|
|
from odoo.http import request
|
|
|
|
|
|
class ResUsers(models.Model):
|
|
_inherit = "res.users"
|
|
|
|
pms_property_id = fields.Many2one(
|
|
string="Default Property",
|
|
help="The property that is selected within " "those allowed for the user",
|
|
comodel_name="pms.property",
|
|
domain="[('id','in',pms_property_ids)]",
|
|
context={"user_preference": True},
|
|
)
|
|
pms_property_ids = fields.Many2many(
|
|
string="Properties",
|
|
help="The properties allowed for this user",
|
|
comodel_name="pms.property",
|
|
relation="pms_property_users_rel",
|
|
column1="user_id",
|
|
column2="pms_property_id",
|
|
domain="[('company_id','in',company_ids)]",
|
|
)
|
|
|
|
@api.model
|
|
def get_active_property_ids(self):
|
|
# TODO: Require performance test and security (dont allow any property id)
|
|
# checks (Review lazy_property decorator?)
|
|
user_property_ids = self.env.user.pms_property_ids.ids
|
|
if request and request.httprequest.cookies.get("pms_pids"):
|
|
active_property_ids = list(
|
|
map(int, request.httprequest.cookies.get("pms_pids", "").split(","))
|
|
)
|
|
active_property_ids = [
|
|
pid for pid in active_property_ids if pid in user_property_ids
|
|
]
|
|
return self.env["pms.property"].browse(active_property_ids).ids
|
|
return user_property_ids
|
|
|
|
@api.constrains("pms_property_id", "pms_property_ids")
|
|
def _check_property_in_allowed_properties(self):
|
|
if any(user.pms_property_id not in user.pms_property_ids for user in self):
|
|
raise ValidationError(
|
|
_("The chosen property is not in the allowed properties for this user")
|
|
)
|
|
|
|
@api.constrains("pms_property_ids", "company_id")
|
|
def _check_company_in_property_ids(self):
|
|
for record in self:
|
|
for pms_property in record.pms_property_ids:
|
|
if pms_property.company_id not in record.company_ids:
|
|
raise ValidationError(
|
|
_("Some properties do not belong to the allowed companies")
|
|
)
|