Skip to content

Commit

Permalink
[IMP] estate: added security rules
Browse files Browse the repository at this point in the history
After this commit:
-added groups managers and agents
-added record rules for agents
-added record rules for managers
  • Loading branch information
smee-odoo committed Sep 2, 2024
1 parent 7100ca9 commit 737fe19
Show file tree
Hide file tree
Showing 9 changed files with 79 additions and 9 deletions.
2 changes: 2 additions & 0 deletions estate/__manifest__.py
Original file line number Diff line number Diff line change
@@ -1,11 +1,13 @@
{
'name': 'ESTATE',
'version': '1.2',
'category': 'Real Estate/Brokerage',
'description': "",
'depends': [
'base_setup',
],
'data': [
'security/security.xml',
'security/ir.model.access.csv',

'data/estate_property_type_data.xml',
Expand Down
6 changes: 6 additions & 0 deletions estate/models/estate_property.py
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,12 @@ class EstateProperty(models.Model):
string='Total Area',
compute='_compute_total_area',
)
company_id = fields.Many2one(
'res.company',
string='Company',
required=True,
default=lambda self: self.env.company.id
)

@api.depends("living_area", "garden_area")
def _compute_total_area(self):
Expand Down
22 changes: 17 additions & 5 deletions estate/security/ir.model.access.csv
Original file line number Diff line number Diff line change
@@ -1,6 +1,18 @@
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_estate_property,access_estate_property,model_estate_property,base.group_user,1,1,1,1
access_estate_property_type,access_estate_property_property,model_estate_property_type,base.group_user,1,1,1,1
estate.access_estate_property_tag,access_estate_property_tag,estate.model_estate_property_tag,base.group_user,1,1,1,1
estate.access_estate_property_offer,access_estate_property_offer,estate.model_estate_property_offer,base.group_user,1,1,1,1
estate.access_estate_property_offer_wizard,access_estate_property_offer_wizard,estate.model_estate_property_offer_wizard,base.group_user,1,1,1,1
access_estate_property,access_estate_property,model_estate_property,base.group_user,1,0,0,0
access_estate_property_type,access_estate_property_property,model_estate_property_type,base.group_user,1,0,0,0
estate.access_estate_property_tag,access_estate_property_tag,estate.model_estate_property_tag,base.group_user,1,0,0,0
estate.access_estate_property_offer,access_estate_property_offer,estate.model_estate_property_offer,base.group_user,1,0,0,0
estate.access_estate_property_offer_wizard,access_estate_property_offer_wizard,estate.model_estate_property_offer_wizard,base.group_user,1,0,0,0

access_estate_property_manager,access_estate_property,model_estate_property,estate.group_estate_manager,1,1,1,1
access_estate_property_type_manager,access_estate_property_property,model_estate_property_type,estate.group_estate_manager,1,1,1,0
estate.access_estate_property_tag_manager,access_estate_property_tag,estate.model_estate_property_tag,estate.group_estate_manager,1,1,1,0
estate.access_estate_property_offer_manager,access_estate_property_offer,estate.model_estate_property_offer,estate.group_estate_manager,1,1,1,0
estate.access_estate_property_offer_wizard_manager,access_estate_property_offer_wizard,estate.model_estate_property_offer_wizard,estate.group_estate_manager,1,1,1,0

access_estate_property_user,access_estate_property,model_estate_property,estate.group_estate_user,1,1,1,1
access_estate_property_type_user,access_estate_property_property,model_estate_property_type,estate.group_estate_user,1,0,0,0
estate.access_estate_property_tag_user,access_estate_property_tag,estate.model_estate_property_tag,estate.group_estate_user,1,0,0,0
estate.access_estate_property_offer_user,access_estate_property_offer,estate.model_estate_property_offer,estate.group_estate_user,1,1,1,1
estate.access_estate_property_offer_wizard_user,access_estate_property_offer_wizard,estate.model_estate_property_offer_wizard,estate.group_estate_user,1,1,1,1
47 changes: 47 additions & 0 deletions estate/security/security.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
<?xml version="1.0"?>
<odoo>
<record id="group_estate_user" model="res.groups">
<field name="name">Agent</field>
<field name="category_id" ref="base.module_category_real_estate_brokerage" />
<field name="comment">The user will be a real estate agent.</field>
</record>

<record id="group_estate_manager" model="res.groups">
<field name="name">Manager</field>
<field name="comment">The user will be the manager.</field>
<field name="category_id" ref="base.module_category_real_estate_brokerage" />
<field name="implied_ids" eval="[(4, ref('group_estate_user'))]" />
</record>

<record id="rule_agent_property_access" model="ir.rule">
<field name="name">Agent access rule</field>
<field name="model_id" ref="model_estate_property" />
<field name="perm_read" eval="1" />
<field name="perm_write" eval="0" />
<field name="perm_create" eval="0" />
<field name="perm_unlink" eval="0" />
<field name="groups" eval="[(4, ref('group_estate_user'))]" />
<field name="domain_force">['|', ('seller_id', '=', False), ('seller_id', '=', user.id)]</field>
</record>
<record id="rule_manager_property_access" model="ir.rule">
<field name="name">Manager access rule</field>
<field name="model_id" ref="model_estate_property" />
<field name="perm_read" eval="1" />
<field name="perm_write" eval="1" />
<field name="perm_create" eval="1" />
<field name="perm_unlink" eval="1" />
<field name="groups" eval="[(4, ref('group_estate_manager'))]" />
<field name="domain_force">[(1, '=', 1)]</field>
</record>

<record model="ir.rule" id="agent_estate_access_rule">
<field name="name">acess to the properties for an agent</field>
<field name="model_id" ref="model_estate_property"/>
<field name="perm_read" eval="1" />
<field name="perm_write" eval="0" />
<field name="perm_create" eval="0" />
<field name="perm_unlink" eval="0" />
<field name="groups" eval="[(4, ref('group_estate_user'))]" />
<field name="domain_force">['|', ('company_id', '=', False), ('company_id', 'in', company_ids)]</field>
</record>
</odoo>
2 changes: 1 addition & 1 deletion estate/views/estate_property_tag_menu.xml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<?xml version="1.0"?>
<odoo>
<menuitem id="estate_second_menu" name="Settings" parent="estate_menu_root">
<menuitem id="estate_second_menu" name="Settings" parent="estate_menu_root" groups="group_estate_manager">
<menuitem id="estate_property_tag_menu_action" action="estate_property_tag_action" />
</menuitem>
</odoo>
2 changes: 1 addition & 1 deletion estate/views/estate_property_type_menu.xml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<?xml version="1.0"?>
<odoo>
<menuitem id="estate_second_menu" name="Settings" parent="estate_menu_root">
<menuitem id="estate_second_menu" name="Settings" parent="estate_menu_root" groups="group_estate_manager">
<menuitem id="estate_property_type_menu_action" action="estate_property_type_action"/>
</menuitem>
</odoo>
1 change: 1 addition & 0 deletions estate/views/estate_property_views.xml
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,7 @@
<field name="property_type_id" options="{'no_create': True, 'no_open': True}" />
<field name="postcode" />
<field name="date_availability" />
<field name="company_id" />
</group>
<group>
<field name="expected_price" />
Expand Down
2 changes: 1 addition & 1 deletion estate/views/estate_test.xml
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@

<menuitem id="estate_menu_action_first_level" name="Estate Properties" parent="estate_first_menu" action="estate_property_action"/>

<menuitem id="estate_second_menu" name="Second Level" parent="estate_menu_root" sequence="20"/>
<menuitem id="estate_second_menu" name="Second Level" parent="estate_menu_root" sequence="20" groups="estate.group_estate_manager"/>

<menuitem id="estate_menu_action_second_level" name="Estate Properties" parent="estate_second_menu" action="estate_property_action"/>
</odoo>
4 changes: 3 additions & 1 deletion estate_account/models/estate_property.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,9 @@ def action_sold_button(self):
})
]
}
self.env['account.move'].create(move_vals)
self.env['account.move'].check_access_rights('create')
self.env['account.move'].check_access_rule('create')
self.env['account.move'].sudo().create(move_vals)

# self.env['account.move.line'].create({
# "move_id": invoice.id,
Expand Down

0 comments on commit 737fe19

Please sign in to comment.