1- from odoo import fields , models
1+ from odoo import api , fields , models
2+
3+ DEFAULT_GARDEN_AREA = 10
4+ DEFAULT_GARDEN_ORIENTATION = "north"
25
36
47class PropertyModel (models .Model ):
@@ -10,6 +13,7 @@ class PropertyModel(models.Model):
1013 postcode = fields .Char ()
1114 date_availability = fields .Date (default = fields .Date .add (fields .Date .today (), months = 3 ), copy = False )
1215 expected_price = fields .Float (required = True )
16+ best_offer = fields .Float (compute = "_get_highest_price" )
1317 selling_price = fields .Float (readonly = True , copy = False )
1418 bedrooms = fields .Integer (default = 2 )
1519 living_area = fields .Integer ()
@@ -18,13 +22,9 @@ class PropertyModel(models.Model):
1822 garden = fields .Boolean ()
1923 garden_area = fields .Integer ()
2024 garden_orientation = fields .Selection (
21- selection = [
22- ('north' , 'North' ),
23- ('south' , 'South' ),
24- ('east' , 'East' ),
25- ('west' , 'West' )
26- ]
25+ selection = [('north' , 'North' ), ('south' , 'South' ), ('east' , 'East' ), ('west' , 'West' )]
2726 )
27+ total_living_area = fields .Integer (compute = "_compute_total_area" )
2828
2929 active = fields .Boolean (default = True )
3030 state = fields .Selection (
@@ -44,3 +44,23 @@ class PropertyModel(models.Model):
4444 salesperson = fields .Many2one ("res.users" , default = lambda self : self .env .user )
4545 tag_ids = fields .Many2many ("estate.property.tag" )
4646 offer_ids = fields .One2many ("estate.property.offer" , "property_id" )
47+
48+ @api .depends ("living_area" , "garden_area" )
49+ def _compute_total_area (self ):
50+ for record in self :
51+ record .total_living_area = record .living_area + record .garden_area
52+
53+ @api .depends ("offer_ids" )
54+ def _get_highest_price (self ):
55+ for record in self :
56+ record .best_offer = max (record .offer_ids .mapped ("price" )) if record .offer_ids else 0
57+
58+ @api .onchange ("garden" )
59+ def _update_garden_area_and_orientation (self ):
60+ for record in self :
61+ if record .garden :
62+ record .garden_area = DEFAULT_GARDEN_AREA
63+ record .garden_orientation = DEFAULT_GARDEN_ORIENTATION
64+ else :
65+ record .garden_area = 0
66+ record .garden_orientation = None
0 commit comments