Skip to content

Commit bcf3e4e

Browse files
committed
[IMP] estate: Modify the res.user to add property_ids by inheritance
Overrides ondelete and create method for the models - on delete for property model - on create, offer to check if an offer with a higher bid already exists or not Inherited the res. user to add a new property_id field to it so that we can list all the properties associated with the User's account.
1 parent d7f849d commit bcf3e4e

File tree

6 files changed

+43
-0
lines changed

6 files changed

+43
-0
lines changed

estate/__manifest__.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
'views/estate_property_tag_views.xml',
1616
'views/estate_property_offer_views.xml',
1717
'views/estate_property_type_views.xml',
18+
'views/res_users_views.xml',
1819
'views/estate_menus.xml',
1920
],
2021
}

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
@@ -103,3 +103,8 @@ def action_property_sold(self):
103103

104104
self.state = 'sold'
105105
return True
106+
107+
@api.ondelete(at_uninstall=False)
108+
def _unlink_if_new_or_sold(self):
109+
if self.filtered(lambda x: x.state not in ('new', 'cancelled')):
110+
raise exceptions.UserError(_('Cannot delete property which is not yer sold or cancelled'))

estate/models/estate_property_offer.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,3 +49,14 @@ def action_offer_refused(self):
4949
for record in self:
5050
record.status = 'refused'
5151
return True
52+
53+
@api.model
54+
def create(self, vals_list):
55+
if len(vals_list) > 0:
56+
prop = self.env['estate_property'].browse(vals_list[0]['property_id'])
57+
if prop.best_price > vals_list[0]['price']:
58+
raise exceptions.UserError(_('An offer with high price already exists.'))
59+
60+
prop.state = 'offer_received'
61+
62+
return super().create(vals_list)

estate/models/res_users.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
from odoo import fields, models
2+
3+
4+
class ResUsers(models.Model):
5+
_inherit = ['res.users']
6+
7+
property_ids = fields.One2many(
8+
'estate_property',
9+
'salesperson',
10+
domain=['|', ('state', '=', 'new'), ('state', '=', 'offer_received')]
11+
)

estate/views/res_users_views.xml

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

0 commit comments

Comments
 (0)