Skip to content

Commit c6dec2b

Browse files
committed
[ADD] estate: Add computed field total_area in estate.property
- Implement computed field total_area using @api.depends - Calculate total_area as sum of living_area and garden_area - Use @api.depends for automatic updates
1 parent 427723d commit c6dec2b

4 files changed

Lines changed: 23 additions & 35 deletions

File tree

estate/models/estate_property.py

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,24 @@
11
from dateutil.relativedelta import relativedelta
2-
from odoo import fields, models
2+
3+
from odoo import api, fields, models
34

45

56
class EstateProperty(models.Model):
67
_name = "estate.property"
78
_description = " Real estate Property"
89

10+
def _default_validity(self):
11+
return fields.Date.today() + relativedelta(months=+3)
12+
13+
@api.depends("living_area", "garden_area")
14+
def _compute_total_area(self):
15+
for record in self:
16+
record.total_area = record.garden_area + record.living_area
17+
918
name = fields.Char(required=True, default="UNKNOWN")
1019
description = fields.Text()
1120
postcode = fields.Char()
12-
date_availability = fields.Date(
13-
default=lambda self: fields.Date.today() + relativedelta(months=+3), copy=False)
21+
date_availability = fields.Date(default=_default_validity, copy=False)
1422
expected_price = fields.Float(required=True)
1523
selling_price = fields.Float(readonly=True, copy=False)
1624
bedrooms = fields.Integer(default=2)
@@ -62,3 +70,4 @@ class EstateProperty(models.Model):
6270
"estate.property.offer",
6371
"property_id",
6472
)
73+
total_area = fields.Float(compute="_compute_total_area")

estate/views/estate_menus.xml

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,33 +1,25 @@
11
<odoo>
2-
32
<menuitem id="estate_menu_root" name="Real Estate"/>
4-
53
<menuitem id="estate_advertisements_menu"
64
name="Advertisements"
75
parent="estate_menu_root"/>
8-
96
<menuitem id="estate_property_menu_action"
107
name="Properties"
118
parent="estate_advertisements_menu"
129
action="estate_property_action"/>
13-
1410
<menuitem id="estate_setting_menu"
1511
name="Settings"
1612
parent="estate_menu_root"/>
17-
1813
<menuitem id="estate_property_type_menu_action"
1914
name="property type"
2015
parent="estate_setting_menu"
2116
action="estate_property_type_action"/>
22-
2317
<menuitem id="estate_property_tag_menu_action"
2418
name="property tag"
2519
parent="estate_setting_menu"
2620
action="estate_property_tag_action"/>
27-
2821
<menuitem id="estate_property_tag_menu_action"
2922
name="Property Tag"
3023
parent="estate_setting_menu"
3124
action="estate_property_tag_action"/>
32-
3325
</odoo>

estate/views/estate_property_offer_views.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,4 +27,4 @@
2727
</field>
2828
</record>
2929

30-
</odoo>
30+
</odoo>

estate/views/estate_property_views.xml

Lines changed: 10 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
<odoo>
2-
32
<record id="estate_property_action" model="ir.actions.act_window">
43
<field name="name">Properties</field>
54
<field name="res_model">estate.property</field>
@@ -34,49 +33,42 @@
3433
<field name="tags_ids" widget="many2many_tags"/>
3534
</h4>
3635
</h1>
37-
3836
<group>
39-
<group>
40-
37+
<group>
4138
<field name="property_type_id" />
4239
<field name="postcode"/>
4340
<field name="date_availability"/>
4441
</group>
45-
4642
<group>
4743
<field name="expected_price"/>
4844
<field name="selling_price"/>
4945
</group>
5046
</group>
51-
5247
<notebook>
5348
<page string="Description">
5449
<group>
5550
<field name="description"/>
5651
</group>
57-
5852
<group >
5953
<group>
60-
<field name="bedrooms"/>
61-
<field name="living_area"/>
54+
<field name="bedrooms"/>
6255
<field name="facades"/>
63-
<field name="garage"/>
56+
<field name="garage"/>
6457
<field name="garden"/>
65-
<field name="garden_area"/>
58+
<field name="active" />
6659
</group>
67-
68-
<group>
60+
<group >
6961
<field name="garden_orientation"/>
70-
<field name="active" />
7162
<field name="state" />
72-
</group>
63+
<field name="living_area"/>
64+
<field name="garden_area"/>
65+
<field name="total_area" />
66+
</group>
7367
</group>
7468
</page>
75-
7669
<page string="Offers">
7770
<field name="offer_ids" />
7871
</page>
79-
8072
<page string="Other Info">
8173
<group>
8274
<field name="buyer_id" />
@@ -94,26 +86,21 @@
9486
<field name="model">estate.property</field>
9587
<field name="arch" type="xml">
9688
<search>
97-
9889
<field name="name"/>
9990
<field name="postcode"/>
10091
<field name="expected_price"/>
10192
<field name="selling_price"/>
10293
<field name="bedrooms"/>
10394
<field name="living_area"/>
104-
10595
<filter name="available"
10696
string="Available"
107-
domain="['|', ('state','=','new'), ('state','=','offer_received')]"/>
108-
97+
domain = "[('state', 'in', ('new','offer_received'))]"/>
10998
<group>
11099
<filter name="group_by_postcode"
111100
string="Postcode"
112101
context="{'group_by':'postcode'}"/>
113102
</group>
114-
115103
</search>
116104
</field>
117105
</record>
118-
119106
</odoo>

0 commit comments

Comments
 (0)