Skip to content

Commit a9e718c

Browse files
committed
[IMP] estate: Chapter 12 - Inheritance
- Override create method with ondelete constraint - Inherit res.users to display properties on user form
1 parent fb58afd commit a9e718c

File tree

7 files changed

+37
-0
lines changed

7 files changed

+37
-0
lines changed

estate/__manifest__.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
"views/estate_property_type_views.xml",
1818
"views/estate_property_tag_views.xml",
1919
"views/estate_property_offer_views.xml",
20+
"views/res_users_views.xml",
2021
"views/estate_menus.xml",
2122
],
2223
}

estate/models/__init__.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,3 +2,4 @@
22
from . import estate_property_type
33
from . import estate_property_tag
44
from . import estate_property_offer
5+
from . import res_users

estate/models/estate_property.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,3 +85,8 @@ def _check_ninety_percent(self):
8585
for record in self:
8686
if not float_is_zero(record.selling_price, 2) and float_compare(record.expected_price * 0.9, record.selling_price, 2) == 1:
8787
raise ValidationError(_("The selling price must be at least 90% of the expected price! You must reduce the expected price if you want to accept this offer."))
88+
89+
@api.ondelete(at_uninstall=False)
90+
def _unlink_except_new_and_cancelled(self):
91+
if self.filtered(lambda x: x.state not in ("new", "cancelled")):
92+
raise UserError(_("Properties need to be new or cancelled to be unlinked."))

estate/models/estate_property_offer.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,3 +46,11 @@ def action_refuse_offer(self):
4646
"CHECK(price > 0)",
4747
"The offer price must be strictly positive.",
4848
)
49+
50+
@api.model
51+
def create(self, vals_list):
52+
for vals in vals_list:
53+
if vals["price"] <= self.env["estate.property"].browse(vals["property_id"]).best_price:
54+
raise UserError(_("The offer price must be strictly greater than the current best offer."))
55+
self.env["estate.property"].browse(vals["property_id"]).state = "received"
56+
return super().create(vals_list)

estate/models/res_users.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
from odoo import models, fields
2+
3+
class ResUsers(models.Model):
4+
_inherit = "res.users"
5+
6+
property_ids = fields.One2many("estate.property", "salesperson_id")

estate/security/ir.model.access.csv

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,3 +3,4 @@ access_estate_property_user,access_estate_property_user,model_estate_property,ba
33
access_estate_property_type_user,access_estate_property_type_user,model_estate_property_type,base.group_user,1,1,1,1
44
access_estate_property_tag_user,access_estate_property_tag_user,model_estate_property_tag,base.group_user,1,1,1,1
55
access_estate_property_offer_user,access_estate_property_offer_user,model_estate_property_offer,base.group_user,1,1,1,1
6+
access_res_users_user,access_res_users_user,model_res_users,base.group_user,1,1,1,1

estate/views/res_users_views.xml

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<odoo>
3+
<record id="res_users_view_form_estate" model="ir.ui.view">
4+
<field name="name">res.users.view.form.inherit.estate</field>
5+
<field name="model">res.users</field>
6+
<field name="inherit_id" ref="base.view_users_form"/>
7+
<field name="arch" type="xml">
8+
<xpath expr="//notebook" position="inside">
9+
<page string="Real Estate Properties">
10+
<field name="property_ids"/>
11+
</page>
12+
</xpath>
13+
</field>
14+
</record>
15+
</odoo>

0 commit comments

Comments
 (0)