Skip to content

Commit 0f55d69

Browse files
[IMP] estate: Server101 Finished Chapter 10
[IMP] estate: Server101 Finished Chapter 10
1 parent 273b85b commit 0f55d69

File tree

4 files changed

+19
-3
lines changed

4 files changed

+19
-3
lines changed

estate/models/estate_property.py

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,15 @@
11
from dateutil.relativedelta import relativedelta
22
from odoo import fields, models,api,exceptions
3+
from odoo.tools.float_utils import float_compare, float_is_zero;
4+
from odoo.exceptions import ValidationError;
35

46

57
class EstateProperty(models.Model):
68
_name = "estate.property"
79
_description = "Property"
10+
_positif_expected_price = models.Constraint("CHECK (expected_price > 0)","A price can't be negatif");
11+
_positif_selling_price = models.Constraint("CHECK (selling_price > 0)","A price can't be negatif");
12+
813
state = fields.Selection(selection = [("New","New"), ("Offer_Received","Offer Received") ,("Offer_Accepted","Offer Accepted"), ("Sold","Sold"), ("Cancelled","Cancelled")])
914
active = fields.Boolean('Active',default=True)
1015
name = fields.Char(required=True,default="Unkown")
@@ -66,4 +71,12 @@ def _get_best_price(self):
6671
@api.onchange("garden")
6772
def _garden_pre_fill(self):
6873
self.garden_area = 10 if self.garden else 0
69-
self.garden_orientation = 'North' if self.garden else ''
74+
self.garden_orientation = 'North' if self.garden else ''
75+
76+
@api.constrains('selling_price','expected_price')
77+
def _check_prices(self):
78+
for record in self:
79+
if float_is_zero(record.selling_price,2):
80+
return;
81+
if(float_compare(record.selling_price,record.expected_price*.8,2) == -1):
82+
raise ValidationError(f"Selling price is too low {record.selling_price}");

estate/models/estate_property_offer.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
class EstatePropertyOffer(models.Model):
77
_name = "estate.property.offer"
88
_description = "Property Offer"
9+
_postif_price = models.Constraint("CHECK (price > 0)", "A price can't be negatif");
910
price = fields.Float(string="Price")
1011
status = fields.Selection(copy=False,selection = [("Accepted","Accepted"),("Refused","Refused")])
1112
partner_id = fields.Many2one('res.partner',required=True)

estate/models/estate_property_tag.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,4 +4,5 @@
44
class EstatePropertyTag(models.Model):
55
_name = "estate.property.tag"
66
_description = "Property Tag"
7-
name = fields.Char(required=True)
7+
_unique_tag = models.UniqueIndex("(name)","Tag name must be unique in database")
8+
name = fields.Char(required=True, unique=True)

estate/models/estate_property_type.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,4 +4,5 @@
44
class EstatePropertyType(models.Model):
55
_name = "estate.property.type"
66
_description = "Property Type"
7-
name = fields.Char(required=True)
7+
name = fields.Char(required=True)
8+
_unique_type = models.UniqueIndex("(name)","Property type name must be unique in database")

0 commit comments

Comments
 (0)