Skip to content

Commit ab22687

Browse files
committed
End of chapter 12
1 parent 43a68d8 commit ab22687

File tree

7 files changed

+44
-2
lines changed

7 files changed

+44
-2
lines changed

estate/__manifest__.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,8 @@
1010
'views/estate_property_type_views.xml',
1111
'views/estate_property_tag_views.xml',
1212
'views/estate_property_offer_views.xml',
13-
'views/estate_menus.xml'
13+
'views/estate_menus.xml',
14+
'views/inherited_users_view.xml'
1415
],
1516
'installable': True,
1617
'application': True

estate/models/__init__.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,3 @@
11
from . import estate_property
22
from . import estate_property_type, estate_property_tag, estate_property_offer
3+
from . import inherited_users

estate/models/estate_property.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,12 @@ def _onchange_garden(self):
6565
self.garden_area = 0
6666
self.garden_orientation = ""
6767

68+
@api.ondelete(at_uninstall=False)
69+
def _prevent_deletion_based_on_state(self):
70+
for record in self:
71+
if record.state != "new" and record.state != "cancelled":
72+
raise exceptions.UserError("You cannot delete a property that is not in the New or Cancelled state")
73+
6874
def action_sell_property(self):
6975
for record in self:
7076
if record.state == "cancelled":

estate/models/estate_property_offer.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,16 @@ class EstatePropertyOffer(models.Model):
2424
'The offer price must be strictly positive.')
2525
]
2626

27+
@api.model_create_multi
28+
def create(self, vals_list):
29+
for vals in vals_list:
30+
offered_property = self.env['estate.property'].browse(vals['property_id'])
31+
if offered_property.state == 'new':
32+
offered_property.state = 'offer_received'
33+
if vals.get("price", 0.0) < offered_property.best_offer:
34+
raise exceptions.UserError("You cannot create on offer with a lower amount than an existing offer.")
35+
return super().create(vals_list)
36+
2737
@api.depends("create_date", "validity")
2838
def _compute_validity_date(self):
2939
for record in self:

estate/models/inherited_users.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
from odoo import fields, models
2+
3+
4+
class inheritedUsers(models.Model):
5+
_inherit = "res.users"
6+
7+
property_ids = fields.One2many("estate.property", "salesman_id", domain="['|', ('state', '=', 'new'), ('state', '=', 'offer_received')]")

estate/views/estate_property_views.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@
6868
</page>
6969
<page string="Offers">
7070
<group>
71-
<field name="offer_ids" string=" " readonly="state=='offer_received' or state=='sold' or state=='cancelled'"/>
71+
<field name="offer_ids" string=" " readonly="state=='offer_accepted' or state=='sold' or state=='cancelled'"/>
7272
</group>
7373
</page>
7474
<page string="Other info">

estate/views/inherited_users_view.xml

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
<?xml version='1.0' encoding='utf-8'?>
2+
<odoo>
3+
<record id="inherited_user_form_view" model="ir.ui.view">
4+
<field name="name">inherited.users.form.view</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="//page[@name='account_security']" position="after">
9+
<page string="Real Estate Properties">
10+
<group>
11+
<field name='property_ids'/>
12+
</group>
13+
</page>
14+
</xpath>
15+
</field>
16+
</record>
17+
</odoo>

0 commit comments

Comments
 (0)