Skip to content

Commit c8dd270

Browse files
committed
[IMP] estate: chapter 12 (inheritance)
1 parent d490741 commit c8dd270

File tree

6 files changed

+49
-1
lines changed

6 files changed

+49
-1
lines changed

estate/__manifest__.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
'views/estate_property_type_views.xml',
1515
'views/estate_property_tag_views.xml',
1616
'views/estate_menus.xml',
17+
'views/res_users_views.xml',
1718
],
1819
'demo': [
1920
],

estate/models/__init__.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,3 +4,4 @@
44
from . import estate_property_type
55
from . import estate_property_tag
66
from . import estate_property_offer
7+
from . import res_users

estate/models/estate_property.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,12 @@ def _onchange_garden(self):
8383
self.garden_area = 0
8484
self.garden_orientation = ''
8585

86+
@api.ondelete(at_uninstall=False)
87+
def _unlink_check_state(self):
88+
for record in self:
89+
if record.state not in ('new','cancelled'):
90+
raise exceptions.UserError("Only new and cancelled properties can be deleted.")
91+
8692
def property_sold(self):
8793
for record in self:
8894
if record.state != 'cancelled':

estate/models/estate_property_offer.py

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# Part of Odoo. See LICENSE file for full copyright and licensing details.
22

3-
from odoo import fields, models, api
3+
from odoo import fields, models, api, exceptions
44
from datetime import date, timedelta
55

66

@@ -23,6 +23,17 @@ class EstatePropertyOffer(models.Model):
2323
'The offer price must be strictly positive',
2424
)
2525

26+
@api.model
27+
def create(self, vals_list):
28+
for vals in vals_list:
29+
if 'property_id' in vals and vals.get('property_id'):
30+
current_property = self.env['estate.property'].browse(vals['property_id'])
31+
if 'price' in vals and current_property.best_offer > vals.get('price', 0):
32+
raise exceptions.ValidationError(f'The offer must be higher than {current_property.best_offer}')
33+
if current_property.state == 'new':
34+
current_property.state = 'offer_received'
35+
return super().create(vals_list)
36+
2637
@api.depends('validity')
2738
def _compute_deadline(self):
2839
for record in self:

estate/models/res_users.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
# Part of Odoo. See LICENSE file for full copyright and licensing details.
2+
3+
from odoo import fields, models, api, exceptions
4+
5+
6+
class Users(models.Model):
7+
_inherit = 'res.users'
8+
9+
property_ids = fields.One2many('estate.property', 'salesperson_id', string='Estate Property',
10+
domain=[('date_availability', '<=', fields.Date.today())])

estate/views/res_users_views.xml

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

0 commit comments

Comments
 (0)