diff --git a/hotel_node_master/__manifest__.py b/hotel_node_master/__manifest__.py
index 48bde0927..59ea26b09 100644
--- a/hotel_node_master/__manifest__.py
+++ b/hotel_node_master/__manifest__.py
@@ -17,6 +17,7 @@
'views/hotel_node.xml',
'views/hotel_node_user.xml',
'views/hotel_node_group.xml',
+ 'views/hotel_node_room_type.xml',
'security/hotel_node_security.xml',
'security/ir.model.access.csv'
],
diff --git a/hotel_node_master/models/__init__.py b/hotel_node_master/models/__init__.py
index 58c8f42c1..2555cdee7 100644
--- a/hotel_node_master/models/__init__.py
+++ b/hotel_node_master/models/__init__.py
@@ -3,3 +3,5 @@
from . import hotel_node
from . import hotel_node_user
from . import hotel_node_group
+from . import hotel_node_room
+from . import hotel_node_room_type
diff --git a/hotel_node_master/models/hotel_node.py b/hotel_node_master/models/hotel_node.py
index f4410364e..0c6a943aa 100644
--- a/hotel_node_master/models/hotel_node.py
+++ b/hotel_node_master/models/hotel_node.py
@@ -45,6 +45,9 @@ class HotelNode(models.Model):
group_ids = fields.Many2many('hotel.node.group', 'hotel_node_group_rel', 'node_id', 'group_id',
string='Access Groups')
+ room_type_ids = fields.One2many('hotel.node.room.type', 'node_id',
+ 'Rooms Type in this hotel')
+
@api.constrains('group_ids')
def _check_group_version(self):
"""
@@ -77,15 +80,23 @@ class HotelNode(models.Model):
vals.update({'odoo_version': noderpc.version})
+ # Read remote Groups
remote_domain = [('model', '=', 'res.groups')]
remote_fields = ['complete_name', 'display_name']
remote_groups = noderpc.env['ir.model.data'].search_read(remote_domain, remote_fields)
+ # Read remote Room Type
+ remote_fields = ['name', 'active', 'sequence']
+ remote_room_types = noderpc.env['hotel.room.type'].search_read([], remote_fields)
+
+ wdb.set_trace()
+
noderpc.logout()
except (odoorpc.error.RPCError, odoorpc.error.InternalError, urllib.error.URLError) as err:
raise ValidationError(err)
else:
+ # Process Groups
master_groups = self.env["hotel.node.group"].search_read(
[('odoo_version', '=', vals['odoo_version'])], ['xml_id'])
@@ -105,6 +116,17 @@ class HotelNode(models.Model):
}))
vals.update({'group_ids': group_ids})
+ # Process Room Type
+ room_type_ids = []
+ for room_type in remote_room_types:
+ room_type_ids.append((0, 0, {
+ 'name': room_type['name'],
+ 'active': room_type['active'],
+ 'sequence': room_type['sequence'],
+ 'remote_room_type_id': room_type['id'],
+ }))
+ vals.update({'room_type_ids': room_type_ids})
+
node_id = super().create(vals)
return node_id
diff --git a/hotel_node_master/models/hotel_node_room.py b/hotel_node_master/models/hotel_node_room.py
new file mode 100644
index 000000000..5ed56424b
--- /dev/null
+++ b/hotel_node_master/models/hotel_node_room.py
@@ -0,0 +1,26 @@
+# Copyright 2018 Pablo Q. Barriuso
+# Copyright 2018 Alexandre Díaz
+# Copyright 2018 Dario Lodeiros
+# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
+
+import logging
+from odoo import models, fields, api, _
+
+_logger = logging.getLogger(__name__)
+
+
+class HotelNodeRoom(models.Model):
+ _name = "hotel.node.room"
+ _description = "Rooms"
+
+ active = fields.Boolean(default=True)
+ sequence = fields.Integer(default=0)
+
+ name = fields.Char(required=True, translate=True)
+
+ remote_room_id = fields.Integer(require=True, invisible=True, copy=False,
+ help="ID of the target record in the remote database")
+
+ room_type_id = fields.Many2one('hotel.node.room.type', 'Hotel Room Type')
+
+ node_id = fields.Many2one('project.project', 'Hotel', required=True)
diff --git a/hotel_node_master/models/hotel_node_room_type.py b/hotel_node_master/models/hotel_node_room_type.py
new file mode 100644
index 000000000..0d07204cd
--- /dev/null
+++ b/hotel_node_master/models/hotel_node_room_type.py
@@ -0,0 +1,26 @@
+# Copyright 2018 Pablo Q. Barriuso
+# Copyright 2018 Alexandre Díaz
+# Copyright 2018 Dario Lodeiros
+# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
+
+import logging
+from odoo import models, fields, api, _
+
+_logger = logging.getLogger(__name__)
+
+
+class HotelNodeRoomType(models.Model):
+ _name = "hotel.node.room.type"
+ _description = "Room Type"
+
+ active = fields.Boolean(default=True)
+ sequence = fields.Integer(default=0)
+
+ 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")
+
+ room_ids = fields.One2many('hotel.node.room', 'room_type_id', 'Rooms')
+
+ node_id = fields.Many2one('project.project', 'Hotel', required=True)
diff --git a/hotel_node_master/models/hotel_node_user.py b/hotel_node_master/models/hotel_node_user.py
index 59beaf3a4..64d7b9c9c 100644
--- a/hotel_node_master/models/hotel_node_user.py
+++ b/hotel_node_master/models/hotel_node_user.py
@@ -75,8 +75,7 @@ class HotelNodeUser(models.Model):
if self.node_id:
# TODO clean group_ids
# self.group_ids = []
- node = self.env["project.project"].search([('id', '=', self.node_id.id)])
- return {'domain': {'group_ids': [('odoo_version', '=', node.odoo_version)]}}
+ return {'domain': {'group_ids': [('odoo_version', '=', self.node_id.odoo_version)]}}
return {'domain': {'group_ids': []}}
@@ -87,7 +86,6 @@ class HotelNodeUser(models.Model):
:return: new hotel user record created.
:raise: ValidationError
"""
- wdb.set_trace()
node = self.env["project.project"].browse(vals['node_id'])
if 'group_ids' in vals:
@@ -109,10 +107,11 @@ class HotelNodeUser(models.Model):
'login': vals['login'],
}
- groups = self.env["hotel.node.group"].browse(vals['group_ids'][0][2])
- # TODO Improve one rpc call per remote group for better performance
- remote_groups = [noderpc.env.ref(r.xml_id).id for r in groups]
- remote_vals.update({'groups_id': [[6, False, remote_groups]]})
+ if 'group_ids' in vals:
+ groups = self.env["hotel.node.group"].browse(vals['group_ids'][0][2])
+ # TODO Improve one rpc call per remote group for better performance
+ remote_groups = [noderpc.env.ref(r.xml_id).id for r in groups]
+ remote_vals.update({'groups_id': [[6, False, remote_groups]]})
# create user and delegate in remote node the default values for the user
remote_user_id = noderpc.env['res.users'].create(remote_vals)
diff --git a/hotel_node_master/views/hotel_node.xml b/hotel_node_master/views/hotel_node.xml
index 78f9b14fe..590d465db 100644
--- a/hotel_node_master/views/hotel_node.xml
+++ b/hotel_node_master/views/hotel_node.xml
@@ -48,12 +48,18 @@
+
-
+
+
+
+
+
+
@@ -104,6 +110,12 @@
res_model="project.project"
view_mode="tree,form"
/>
+
+
+
+