Skip to content

Commit 2ff7967

Browse files
committed
[ADD] estate: added constraints
1 parent 3b6035d commit 2ff7967

File tree

4 files changed

+30
-0
lines changed

4 files changed

+30
-0
lines changed

estate/models/estate_property.py

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
from odoo import fields, models, api
22
from odoo.exceptions import UserError
3+
from odoo.tools.float_utils import float_is_zero, float_compare
34
from dateutil.relativedelta import relativedelta
45

56

@@ -39,6 +40,14 @@ class Estateproperty(models.Model):
3940
best_offer = fields.Float(compute="_compute_best_offer")
4041
offer_accepted = fields.Boolean()
4142

43+
_expected_property_price_strictly_positive = models.Constraint(
44+
'CHECK(expected_price > 0)',
45+
)
46+
47+
_property_selling_price_positive = models.Constraint(
48+
'CHECK(selling_price) >= 0',
49+
)
50+
4251
@api.depends("garden_area", "living_area")
4352
def _compute_total_area(self):
4453
for record in self:
@@ -71,3 +80,10 @@ def set_property_cancelled(self):
7180
record.state = 'cancelled'
7281
else:
7382
raise(UserError("Can not cancel sold property"))
83+
84+
@api.onchange('selling_price', 'expected_price')
85+
@api.constrains('selling_price')
86+
def _check_selling_price(self):
87+
for record in self:
88+
if not(float_is_zero(record.selling_price,2)) and record.selling_price < 0.9 * record.expected_price:
89+
raise(UserError("Selling price can not be less than 90'%' of Excpected price"))

estate/models/estate_property_offer.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,10 @@ class EstatePropertyOffer(models.Model):
1919
validity = fields.Integer(string="Validity (days)", default=7)
2020
date_deadline = fields.Date(compute="_compute_date_deadline", inverse="_inverse_date_deadline")
2121

22+
_offer_price_strictly_positive = models.Constraint(
23+
'CHECK(price > 0)',
24+
)
25+
2226
@api.depends("validity")
2327
def _compute_date_deadline(self):
2428
for record in self:

estate/models/estate_property_tag.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,3 +7,8 @@ class EstatePropertyTag(models.Model):
77

88
name = fields.Char('Tag', required=True)
99
description = fields.Char('Description')
10+
11+
_unique_tag = models.Constraint(
12+
'UNIQUE(name)',
13+
'Tag already exists'
14+
)

estate/models/estate_property_type.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,3 +7,8 @@ class EstatePropertyType(models.Model):
77

88
name = fields.Char('Type', required=True)
99
description = fields.Text()
10+
11+
_unique_type = models.Constraint(
12+
'UNIQUE(name)',
13+
'Property type name exists'
14+
)

0 commit comments

Comments
 (0)