mirror of
https://github.com/OCA/pms.git
synced 2025-01-29 00:17:45 +02:00
[WIP] Room Type Management
Added room type and room restriction for management in central node.
This commit is contained in:
@@ -85,7 +85,7 @@ class HotelNode(models.Model):
|
||||
remote_fields = ['complete_name', 'display_name']
|
||||
remote_groups = noderpc.env['ir.model.data'].search_read(remote_domain, remote_fields)
|
||||
|
||||
# Read remote Room Type
|
||||
# Read remote Room Types
|
||||
remote_fields = ['name', 'active', 'sequence']
|
||||
remote_room_types = noderpc.env['hotel.room.type'].search_read([], remote_fields)
|
||||
|
||||
|
||||
@@ -16,11 +16,16 @@ class HotelNodeRoom(models.Model):
|
||||
active = fields.Boolean(default=True)
|
||||
sequence = fields.Integer(default=0)
|
||||
|
||||
@api.model
|
||||
def _get_default_node_id(self):
|
||||
return self.room_type_id.node_id
|
||||
|
||||
name = fields.Char(required=True, translate=True)
|
||||
|
||||
remote_room_id = fields.Integer(require=True, invisible=True, copy=False,
|
||||
remote_room_id = fields.Integer(require=True, invisible=True, copy=False, readonly=True,
|
||||
help="ID of the target record in the remote database")
|
||||
|
||||
room_type_id = fields.Many2one('hotel.node.room.type', 'Hotel Room Type')
|
||||
room_type_id = fields.Many2one('hotel.node.room.type', 'Hotel Room Type', required=True)
|
||||
|
||||
node_id = fields.Many2one('project.project', 'Hotel', required=True)
|
||||
node_id = fields.Many2one('project.project', 'Hotel', required=True, readonly=True,
|
||||
default=_get_default_node_id)
|
||||
|
||||
@@ -3,8 +3,10 @@
|
||||
# Copyright 2018 Dario Lodeiros
|
||||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
||||
|
||||
import wdb
|
||||
import logging
|
||||
from odoo import models, fields, api, _
|
||||
from odoo.exceptions import ValidationError
|
||||
|
||||
_logger = logging.getLogger(__name__)
|
||||
|
||||
@@ -18,9 +20,47 @@ class HotelNodeRoomType(models.Model):
|
||||
|
||||
name = fields.Char(required=True, translate=True)
|
||||
|
||||
remote_room_type_id = fields.Integer(require=True, invisible=True, copy=False,
|
||||
help="ID of the target record in the remote database")
|
||||
remote_room_type_id = fields.Integer(require=True, invisible=True, copy=False, readonly=True,
|
||||
help="ID of the target record in the remote database")
|
||||
|
||||
room_ids = fields.One2many('hotel.node.room', 'room_type_id', 'Rooms')
|
||||
|
||||
node_id = fields.Many2one('project.project', 'Hotel', required=True)
|
||||
|
||||
@api.onchange('node_id')
|
||||
def _onchange_node_id(self):
|
||||
if self.node_id:
|
||||
return {'domain': {'room_ids': [('room_ids', 'in', self.room_ids.ids)]}}
|
||||
|
||||
return {'domain': {'room_ids': []}}
|
||||
|
||||
@api.model
|
||||
def create(self, vals):
|
||||
"""
|
||||
:param dict vals: the model's fields as a dictionary
|
||||
:return: new hotel room type record created.
|
||||
:raise: ValidationError
|
||||
"""
|
||||
_logger.warning("This fuction is not yet implemented.")
|
||||
wdb.set_trace()
|
||||
|
||||
@api.multi
|
||||
def write(self, vals):
|
||||
"""
|
||||
:param dict vals: a dictionary of fields to update and the value to set on them.
|
||||
:raise: ValidationError
|
||||
"""
|
||||
for rec in self:
|
||||
if 'node_id' in vals and vals['node_id'] != rec.node_id.id:
|
||||
msg = _("Changing a room type between nodes is not allowed. Please create a new room type instead.")
|
||||
_logger.error(msg)
|
||||
raise ValidationError(msg)
|
||||
|
||||
_logger.warning("This fuction is not yet implemented.")
|
||||
|
||||
@api.multi
|
||||
def unlink(self):
|
||||
"""
|
||||
:raise: ValidationError
|
||||
"""
|
||||
_logger.warning("This fuction is not yet implemented.")
|
||||
|
||||
@@ -36,7 +36,7 @@ class HotelNodeUser(models.Model):
|
||||
password = fields.Char(default='', invisible=True, copy=False,
|
||||
help="Keep empty if you don't want the user to be able to connect on the hotel.")
|
||||
# Remote user id for client-server understanding
|
||||
remote_user_id = fields.Integer(require=True, invisible=True, copy=False,
|
||||
remote_user_id = fields.Integer(require=True, invisible=True, copy=False, readonly=True,
|
||||
help="ID of the target record in the remote database")
|
||||
|
||||
# The same user can not be assigned to the same hotel
|
||||
@@ -135,7 +135,7 @@ class HotelNodeUser(models.Model):
|
||||
"""
|
||||
for rec in self:
|
||||
if 'node_id' in vals and vals['node_id'] != rec.node_id.id:
|
||||
msg = _("Changing a node user is not allowed. Please create a new user instead.")
|
||||
msg = _("Changing a user between nodes is not allowed. Please create a new user instead.")
|
||||
_logger.error(msg)
|
||||
raise ValidationError(msg)
|
||||
|
||||
|
||||
@@ -33,7 +33,7 @@
|
||||
<notebook>
|
||||
<page name="Rooms" string="Rooms" attrs="{'invisible':[('id','=',False)]}">
|
||||
<group>
|
||||
<field name="room_ids" widget="many2many" domain="[('room_type_id','=',active_id)]"
|
||||
<field name="room_ids" domain="[('room_type_id','=',active_id)]"
|
||||
context="{'default_node_id': node_id, 'default_room_type_id': active_id}"/>
|
||||
</group>
|
||||
</page>
|
||||
|
||||
Reference in New Issue
Block a user