Skip to content

Commit 0cd5a6d

Browse files
committed
[IMP] estate: implemented security restrictions for the Real Estate module
- Added groups for real estate agents and managers. - Defined access rights: agents can read types/tags but cannot delete properties - Created record rules to restrict agents to only see/manage their own properties. - Updated estate_account to bypass security for confirming sales without full invoicing access.
1 parent 7d59de0 commit 0cd5a6d

File tree

5 files changed

+46
-7
lines changed

5 files changed

+46
-7
lines changed

estate/__manifest__.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,10 @@
22
'name': "Real State",
33
'depends': ['base'],
44
'author': "Sahil Mangukiya",
5+
'category': 'Real Estate/Brokerage',
56
'description': "This is my First tutorial module.",
67
'data': [
8+
'security/estate_security.xml',
79
'security/ir.model.access.csv',
810
'data/estate.property.type.csv',
911
'views/res_users_views.xml',

estate/security/estate_security.xml

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
<?xml version='1.0' encoding='utf-8'?>
2+
<odoo>
3+
4+
<record id="estate_group_user" model="res.groups">
5+
<field name="name">Agent</field>
6+
<field name="category_id" ref="base.module_category_real_estate_brokerage"></field>
7+
</record>
8+
<record id="estate_group_manager" model="res.groups">
9+
<field name="name">Manager</field>
10+
<field name="category_id" ref="base.module_category_real_estate_brokerage"></field>
11+
<field name="implied_ids" eval="[ref('estate_group_user')]"/>
12+
</record>
13+
14+
<record id="estate_property_record_rule_agent" model="ir.rule">
15+
<field name="name">A description of the rule's role</field>
16+
<field name="model_id" ref="estate.model_estate_property"/>
17+
<field name="groups" eval="[Command.link(ref('estate.estate_group_user'))]"/>
18+
<!-- <field name="perm_create" eval="True"/>
19+
<field name="perm_read" eval="True"/> -->
20+
<field name="domain_force">
21+
['|', ('seller_id', '=', user.id), ('seller_id', '=', False)]
22+
</field>
23+
</record>
24+
25+
<record id="estate_property_record_rule_manager" model="ir.rule">
26+
<field name="name">A description of the rule's role</field>
27+
<field name="model_id" ref="estate.model_estate_property"/>
28+
<field name="groups" eval="[Command.link(ref('estate.estate_group_manager'))]"/>
29+
<field name="domain_force">
30+
[(1, '=', 1)]
31+
</field>
32+
</record>
33+
</odoo>

estate/security/ir.model.access.csv

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,11 @@
11
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
2-
access_estate_property,access_estate_property,model_estate_property,base.group_user,1,1,1,1
3-
access_estate_property_type,access_estate_property_type,model_estate_property_type,base.group_user,1,1,1,1
4-
access_estate_property_tag,access_estate_property_tag,model_estate_property_tag,base.group_user,1,1,1,1
5-
access_estate_property_offer,access_estate_property_offer,model_estate_property_offer,base.group_user,1,1,1,1
2+
access_estate_property,access_estate_property,model_estate_property,estate.estate_group_manager,1,1,1,0
3+
access_estate_property_type,access_estate_property_type,model_estate_property_type,estate.estate_group_manager,1,1,1,1
4+
access_estate_property_tag,access_estate_property_tag,model_estate_property_tag,estate.estate_group_manager,1,1,1,1
5+
access_estate_property_offer,access_estate_property_offer,model_estate_property_offer,estate.estate_group_manager,1,1,1,1
6+
7+
access_estate_property,access_estate_property,model_estate_property,estate.estate_group_user,1,1,1,0
8+
access_estate_property_type,access_estate_property_type,model_estate_property_type,estate.estate_group_user,1,0,0,0
9+
access_estate_property_tag,access_estate_property_tag,model_estate_property_tag,estate.estate_group_user,1,0,0,0
10+
access_estate_property_offer,access_estate_property_offer,model_estate_property_offer,estate.estate_group_user,1,1,1,1
611

estate/views/estate_property_offer_views.xml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
<field name="name">Offers</field>
55
<field name="res_model">estate.property.offer</field>
66
<field name="view_mode">tree,form</field>
7-
<field name="domain">[('property_type_id', '=', active_id)]</field>
87
</record>
98

109
<record id="estate_property_offer_view_tree" model="ir.ui.view">

estate_account/models/estate_property.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
from odoo import models, Command
1+
from odoo import models, Command, fields
22

33

44
class estateProperty(models.Model):
@@ -20,7 +20,7 @@ def action_sold(self):
2020
"price_unit": 100.00
2121
}
2222

23-
self.env["account.move"].create({
23+
self.env["account.move"].sudo().create({
2424
"name": self.name + " Invoice",
2525
"partner_id": self.buyer_id.id,
2626
"move_type": "out_invoice",

0 commit comments

Comments
 (0)