diff --git a/estate/__manifest__.py b/estate/__manifest__.py
index 34e8d90..928e637 100644
--- a/estate/__manifest__.py
+++ b/estate/__manifest__.py
@@ -3,12 +3,15 @@
{
"name": "Real Estate",
+ "license": "LGPL-3",
+ "category": "Real Estate",
"depends": [
"base",
"web",
],
"data": [
"security/ir.model.access.csv",
+ "security/security.xml",
"views/estate_property_offer_views.xml",
"views/estate_property_tag_views.xml",
"views/estate_property_type_views.xml",
diff --git a/estate/models/estate_property.py b/estate/models/estate_property.py
index 21f0df1..12e15d2 100644
--- a/estate/models/estate_property.py
+++ b/estate/models/estate_property.py
@@ -14,6 +14,7 @@ class EstateProperty(models.Model):
_name = "estate.property"
_description = "Real Estate Property"
_order = "id desc"
+ _check_company_auto = True
_sql_constraints = [
("check_expected_price", "CHECK(expected_price > 0)", "The expected price must be strictly positive"),
("check_selling_price", "CHECK(selling_price >= 0)", "The offer price must be positive"),
@@ -67,7 +68,7 @@ def _default_date_availability(self):
# Relational
property_type_id = fields.Many2one("estate.property.type", string="Property Type")
- user_id = fields.Many2one("res.users", string="Salesman", default=lambda self: self.env.user)
+ user_id = fields.Many2one("res.users", string="Salesman")
buyer_id = fields.Many2one("res.partner", string="Buyer", readonly=True, copy=False)
tag_ids = fields.Many2many("estate.property.tag", string="Tags")
offer_ids = fields.One2many("estate.property.offer", "property_id", string="Offers")
@@ -80,6 +81,11 @@ def _default_date_availability(self):
)
best_price = fields.Float("Best Offer", compute="_compute_best_price", help="Best offer received")
+ # Multi-Company
+ company_id = fields.Many2one(
+ 'res.company', required=True, default=lambda self: self.env.company
+ )
+
# ---------------------------------------- Compute methods ------------------------------------
@api.depends("living_area", "garden_area")
diff --git a/estate/security/ir.model.access.csv b/estate/security/ir.model.access.csv
index a73754c..e0dec1d 100644
--- a/estate/security/ir.model.access.csv
+++ b/estate/security/ir.model.access.csv
@@ -1,5 +1,13 @@
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
-access_estate_property,access.estate.property,estate.model_estate_property,base.group_user,1,1,1,1
-access_estate_property_offer,access.estate.property.offer,estate.model_estate_property_offer,base.group_user,1,1,1,1
-access_estate_property_tag,access.estate.property.tag,estate.model_estate_property_tag,base.group_user,1,1,1,1
-access_estate_property_type,access.estate.property.type,estate.model_estate_property_type,base.group_user,1,1,1,1
+access_estate_property,access_estate_property,model_estate_property,base.group_user,0,0,0,0
+access_estate_property_type,access_estate_property_type,model_estate_property_type,base.group_user,0,0,0,0
+access_estate_property_tag,access_estate_property_tag,model_estate_property_tag,base.group_user,0,0,0,0
+access_estate_property_offer,access_estate_property_offer,model_estate_property_offer,base.group_user,0,0,0,0
+access_estate_property_manager,access.estate.property,estate.model_estate_property,estate.estate_group_manager,1,1,1,1
+access_estate_property_offer_manager,access.estate.property.offer,estate.model_estate_property_offer,estate.estate_group_manager,1,1,1,1
+access_estate_property_tag_manager,access.estate.property.tag,estate.model_estate_property_tag,estate.estate_group_manager,1,1,1,1
+access_estate_property_type_manager,access.estate.property.type,estate.model_estate_property_type,estate.estate_group_manager,1,1,1,1
+access_estate_property_agent,access.estate.property,estate.model_estate_property,estate.estate_group_user,1,1,1,0
+access_estate_property_offer_agent,access.estate.property.offer,estate.model_estate_property_offer,estate.estate_group_user,1,0,0,0
+access_estate_property_tag_agent,access.estate.property.tag,estate.model_estate_property_tag,estate.estate_group_user,1,0,0,0
+access_estate_property_type_agent,access.estate.property.type,estate.model_estate_property_type,estate.estate_group_user,1,0,0,0
diff --git a/estate/security/security.xml b/estate/security/security.xml
new file mode 100644
index 0000000..9155047
--- /dev/null
+++ b/estate/security/security.xml
@@ -0,0 +1,29 @@
+
+
+
+
+ Agent
+
+
+
+
+ Manager
+
+
+
+
+
+ limit estate agent access to own properties or unclaimed properties
+
+
+ [('company_id', 'in', company_ids), '|', ('user_id', '=', False), ('user_id', '=', user.id)]
+
+
+
+ Estate manager rule
+
+
+ [(1, '=', 1)]
+
+
+
diff --git a/estate/views/estate_menus.xml b/estate/views/estate_menus.xml
index 4c931bf..1f46615 100644
--- a/estate/views/estate_menus.xml
+++ b/estate/views/estate_menus.xml
@@ -5,7 +5,7 @@
-