Skip to content

Commit 45f1d4e

Browse files
committed
[REF] estate: Code refactored following last comments
1 parent 203b4b9 commit 45f1d4e

File tree

4 files changed

+24
-44
lines changed

4 files changed

+24
-44
lines changed

estate/models/estate_property.py

Lines changed: 11 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
from datetime import date
22

3-
from odoo import fields, models, api
3+
from odoo import fields, models, api, _
44
from odoo.tools import date_utils, float_utils
55
from odoo.exceptions import UserError, ValidationError
66

@@ -66,7 +66,7 @@ class EstateProperty(models.Model):
6666
"res.users", name="Salesperson", default=lambda self: self.env.user
6767
)
6868
tag_ids = fields.Many2many("estate.property.tag", string="Tags")
69-
offers_ids = fields.One2many(
69+
offer_ids = fields.One2many(
7070
"estate.property.offer", "property_id", string="Offers"
7171
)
7272
best_price = fields.Float(
@@ -80,15 +80,11 @@ def _compute_total_area(self):
8080
single_property.living_area + single_property.garden_area
8181
)
8282

83-
@api.depends("offers_ids.price")
83+
@api.depends("offer_ids.price")
8484
def _compute_best_price(self):
8585
for single_property in self:
86-
if single_property.offers_ids:
87-
single_property.best_price = max(
88-
single_property.offers_ids.mapped("price")
89-
)
90-
else:
91-
single_property.best_price = 0
86+
single_property.best_price = max(single_property.offer_ids.mapped("price"), default=0)
87+
9288

9389
@api.onchange("garden")
9490
def _onchange_garden(self):
@@ -102,36 +98,28 @@ def _onchange_garden(self):
10298
def action_property_cancel(self):
10399
for single_property in self:
104100
if single_property.state == "sold":
105-
raise UserError("Sold properties cannot be cancelled!")
101+
raise UserError(_("Sold properties cannot be cancelled!"))
106102
single_property.state = "cancelled"
107103
return True
108104

109105
def action_property_sold(self):
110106
for single_property in self:
111107
if single_property.state == "cancelled":
112-
raise UserError("Cancelled properties cannot be sold!")
108+
raise UserError(_("Cancelled properties cannot be sold!"))
113109
single_property.state = "sold"
114110
return True
115111

116112
@api.constrains("selling_price", "expected_price")
117113
def check_selling_price_in_range(self):
118114
for single_property in self:
119-
if not float_utils.float_is_zero(
120-
single_property.selling_price, precision_rounding=0.1
121-
):
122-
if single_property.selling_price < (
123-
0.9 * single_property.expected_price
124-
):
125-
raise ValidationError(
126-
"Selling price cannot be lower than 90%% of Expected price"
127-
)
115+
if not float_utils.float_is_zero(single_property.selling_price, precision_rounding=0.1):
116+
if single_property.selling_price < (0.9 * single_property.expected_price):
117+
raise ValidationError(_("Selling price cannot be lower than 90%% of Expected price"))
128118
return True
129119

130120
@api.ondelete(at_uninstall=False)
131121
def _unlink_check_property_state(self):
132122
for single_property in self:
133123
if single_property.state not in ["new", "cancelled"]:
134-
raise UserError(
135-
"Property cannot be deleted unless it is new or cancelled"
136-
)
124+
raise UserError(_("Property cannot be deleted unless it is new or cancelled"))
137125
return True

estate/models/estate_property_offer.py

Lines changed: 11 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
from datetime import date
22

3-
from odoo import fields, models, api
3+
from odoo import fields, models, api, _
44
from odoo.tools import date_utils
55
from odoo.exceptions import UserError
66

@@ -58,32 +58,24 @@ def _inverse_date_deadline(self):
5858
def action_offer_accept(self):
5959
for offer in self:
6060
offer.status = "accepted"
61-
offer._action_check_offers()
62-
return True
63-
64-
@api.depends("status")
65-
def _action_check_offers(self):
66-
if self.status == "accepted":
6761
if self.property_id.state in ("offer-accepted", "sold"):
6862
self.status = False
69-
raise UserError("An offer has already been accepted!")
63+
raise UserError(_("An offer has already been accepted!"))
7064
else:
71-
self.property_id.state = "offer-accepted"
72-
self.property_id.selling_price = self.price
73-
self.property_id.buyer_id = self.partner_id
65+
self.property_id.write({"state": "offer-accepted", "selling_price": self.price, "buyer_id": self.partner_id})
7466
return True
7567

7668
@api.depends("status")
7769
def action_offer_refuse(self):
78-
for offer in self:
79-
offer.status = "refused"
70+
self.status = "refused"
8071
return True
8172

8273
@api.model_create_multi
83-
def create(self, vals):
84-
for val in vals:
85-
single_property = self.env["estate.property"].browse(val["property_id"])
86-
if val["price"] < single_property.best_price:
87-
raise UserError("An offer cannot be lower than an existing offer")
74+
def create(self, vals_list):
75+
for vals in vals_list:
76+
single_property = self.env["estate.property"].browse(vals["property_id"])
77+
price = vals.get("price")
78+
if price is not None and price < single_property.best_price:
79+
raise UserError(_("An offer cannot be lower than an existing offer"))
8880
single_property.state = "offer-received"
89-
return super().create(vals)
81+
return super().create(vals_list)

estate/views/estate_property_views.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@
6262
</group>
6363
</page>
6464
<page string="Offers">
65-
<field name = "offers_ids" readonly="state in ['offer-accepted', 'sold', 'cancelled']"/>
65+
<field name = "offer_ids" readonly="state in ['offer-accepted', 'sold', 'cancelled']"/>
6666
</page>
6767
<page string="Other info">
6868
<group>

estate/views/res_users_views.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,4 +12,4 @@
1212
</xpath>
1313
</field>
1414
</record>
15-
</odoo>
15+
</odoo>

0 commit comments

Comments
 (0)