Skip to content

Commit bd34b5d

Browse files
committed
[IMP] Estate: Adding inheritance
[FIX] super()
1 parent 8b9ad65 commit bd34b5d

File tree

6 files changed

+43
-10
lines changed

6 files changed

+43
-10
lines changed

estate/__manifest__.py

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -5,21 +5,14 @@
55
'author': "Victor Decleire",
66
'application': True,
77
'license': "LGPL-3",
8-
# 'description': """
9-
# Description text
10-
# """,
11-
# # data files always loaded at installation
128
'data': [
139
'security/ir.model.access.csv',
1410

1511
'views/estate_property_offer_views.xml',
12+
'views/inherited_model_views.xml',
1613
'views/estate_property_views.xml',
1714
'views/estate_property_tag_views.xml',
1815
'views/estate_property_type_views.xml',
1916
'views/estate_menus.xml',
2017
],
21-
# # data files containing optionally loaded demonstration data
22-
# 'demo': [
23-
# 'demo/demo_data.xml',
24-
# ],
2518
}

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 inherited_model

estate/models/estate_property.py

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ class EstateProperty(models.Model):
3535
selection=[('new', 'New'), ('received', 'Offer Received'), ('accepted', 'Offer Accepted'), ('sold', 'Sold'), ('cancelled', 'Cancelled')],
3636
default='new', copy=False, required=True)
3737
seller_id = fields.Many2one('res.users', default=lambda self: self.env.user)
38-
buyer_id = fields.Many2one('res.partner')
38+
buyer_id = fields.Many2one('res.partner', readonly=True)
3939
tag_ids = fields.Many2many('estate.property.tag', string="Tags")
4040
type_id = fields.Many2one('estate.property.type', string="Type")
4141
offer_ids = fields.One2many('estate.property.offer', 'property_id')
@@ -82,5 +82,10 @@ def action_set_cancelled(self):
8282
@api.constrains('selling_price', 'expected_price')
8383
def _check_selling_price(self):
8484
self.ensure_one()
85-
if len(self.offer_ids) > 0 and float_compare(self.expected_price, 0.9 * self.selling_price, 0) > 0:
85+
if self.buyer_id and float_compare(self.expected_price, 0.9 * self.selling_price, 0) > 0:
8686
raise ValidationError("The selling price cannot be lower than 90% of the expected price.")
87+
88+
@api.ondelete(at_uninstall=False)
89+
def _unlink_if_not_new_or_cancelled(self):
90+
if any(record.state in ['new', 'cancelled'] for record in self):
91+
raise UserError("Can't delete a property which has a state of new or cancelled!")

estate/models/estate_property_offer.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
from odoo import fields, models, api
22
from odoo.tools.date_utils import add
3+
from odoo.exceptions import ValidationError
4+
from odoo.tools.float_utils import float_compare
35

46

57
class EstatePropertyOffer(models.Model):
@@ -40,3 +42,13 @@ def action_refuse_offer(self):
4042
for record in self:
4143
record.status = 'refused'
4244
return 1
45+
46+
@api.model
47+
def create(self, vals):
48+
for val in vals:
49+
created_property = self.env['estate.property'].browse(val['property_id'])
50+
if any(float_compare(val['price'], offer.price, 0) < 0 for offer in created_property.offer_ids):
51+
raise ValidationError("A bigger offer already exists")
52+
if created_property.state == 'new':
53+
created_property.state = 'received'
54+
return super().create(vals)

estate/models/inherited_model.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 InheritedModel(models.Model):
5+
_inherit = "res.users"
6+
7+
property_ids = fields.One2many("estate.property", "seller_id", domain="['|', ('state', '=', 'new'), ('state', '=', 'received')]")
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" model="ir.ui.view">
4+
<field name="name">res.users.view.form.inherit</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='page_security']" position="after">
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)