Skip to content

Commit 9d14654

Browse files
committed
[IMP] estate: Refine model fields and view structure
- Clean whitespace and improve formatting across model files. - Enhance state management logic in estate_property. - Remove unused buttons and fields to simplify property views. - Update selection fields for improved readability and maintainability.
1 parent 2343bb9 commit 9d14654

File tree

7 files changed

+50
-39
lines changed

7 files changed

+50
-39
lines changed

Estate/models/estate_property.py

Lines changed: 36 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
class EstateProperty(models.Model):
88
_name = "estate.property"
99
_description = "Real Estate Property"
10-
_order = "id desc"
10+
_order = "id desc "
1111
name = fields.Char(required=True)
1212
description = fields.Text()
1313
postcode = fields.Char()
@@ -20,9 +20,27 @@ class EstateProperty(models.Model):
2020
garage = fields.Boolean()
2121
garden = fields.Boolean()
2222
garden_area = fields.Integer()
23-
garden_orientation = fields.Selection([("north", "North"),("south", "South"),("east", "East"),("west", "West"),])
23+
garden_orientation = fields.Selection(
24+
[
25+
("north", "North"),
26+
("south", "South"),
27+
("east", "East"),
28+
("west", "West"),
29+
]
30+
)
2431
active = fields.Boolean(default=True)
25-
state = fields.Selection([("new", "New"),("offer_received", "Offer Received"),("offer_accepted", "Offer Accepted"),("sold", "Sold"),("canceled", "Canceled")], required=True, copy=False , )
32+
state = fields.Selection(
33+
[
34+
("new", "New"),
35+
("offer_received", "Offer Received"),
36+
("offer_accepted", "Offer Accepted"),
37+
("sold", "Sold"),
38+
("canceled", "Canceled"),
39+
],
40+
required=True,
41+
copy=False,
42+
default="new"
43+
)
2644
property_type_id = fields.Many2one("estate.property.type", string="Property Type")
2745
buyer_id = fields.Many2one("res.partner", string="Buyer")
2846
salesperson_id = fields.Many2one("res.users", string="Salesperson")
@@ -31,20 +49,19 @@ class EstateProperty(models.Model):
3149
total_area = fields.Float(compute="_compute_total_area", string="Total Area", store=True)
3250
best_price = fields.Float(compute="_compute_best_price", string="Best Offer", store=True)
3351
validity_days = fields.Integer(default=7)
34-
date_deadline = fields.Date(compute="_compute_date_deadline",inverse="_inverse_date_deadline",store=True,)
35-
property_type_id = fields.Many2one("estate.property.type", string="Property Type")
36-
52+
date_deadline = fields.Date(compute="_compute_date_deadline", inverse="_inverse_date_deadline", store=True)
53+
3754
_check_price = models.Constraint(
3855
'CHECK(expected_price > 0 AND selling_price >= 0)',
39-
'The expected price of a property must be strictly positive.'
56+
'The Price of a property must be strictly positive.',
4057
)
41-
58+
4259
@api.depends("living_area", "garden_area")
4360
def _compute_total_area(self):
4461
for record in self:
4562
record.total_area = (record.living_area or 0) + (record.garden_area or 0)
4663

47-
@api.depends("offer_ids.price")
64+
@api.depends("offer_ids.price" , "state")
4865
def _compute_best_price(self):
4966
for record in self:
5067
record.best_price = max(record.offer_ids.mapped("price")) if record.offer_ids else 0.0
@@ -74,7 +91,16 @@ def _onchange_garden(self):
7491
else:
7592
record.garden_area = 0
7693
record.garden_orientation = False
77-
94+
95+
def write(self, vals):
96+
if 'offer_ids' in vals:
97+
result = super().write(vals)
98+
for record in self:
99+
if record.offer_ids and record.state == 'new':
100+
record.state = 'offer_received'
101+
return result
102+
return super().write(vals)
103+
78104
def action_set_sold(self):
79105
for record in self:
80106
record.state = "sold"
@@ -83,15 +109,6 @@ def action_set_canceled(self):
83109
for record in self:
84110
record.state = "canceled"
85111

86-
def action_set_next_status(self):
87-
for record in self:
88-
if record.state == "new":
89-
record.state = "offer_received"
90-
elif record.state == "offer_received":
91-
record.state = "offer_accepted"
92-
elif record.state == "offer_accepted":
93-
record.state = "sold"
94-
95112
def action_back_to_new(self):
96113
for record in self:
97114
record.state = "new"

Estate/models/estate_property_offer.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,22 +6,21 @@ class EstatePropertyOffer(models.Model):
66
_name = "estate.property.offer"
77
_description = "Real Estate Property Offer"
88
_order = "price desc"
9+
910
price = fields.Float(required=True)
1011
status = fields.Selection(
1112
[
12-
('pending', 'Pending'),
1313
('accepted', 'Accepted'),
1414
('refused', 'Refused'),
1515
],
1616
)
17-
1817
property_id = fields.Many2one("estate.property", string="Property", required=True)
1918
partner_id = fields.Many2one("res.partner", string="Buyer", required=True)
2019

2120
def action_accept_offer(self):
2221
for record in self:
2322
record.status = 'accepted'
24-
23+
2524
def action_refuse_offer(self):
2625
for record in self:
2726
record.status = 'refused'

Estate/models/estate_property_tag.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
class EstatePropertyTag(models.Model):
55
_name = "estate.property.tag"
66
_description = "Real Estate Property Tag"
7-
_order = "name desc"
8-
color = fields.Integer( string='Color Index', default=3)
7+
_order = "name desc "
8+
color = fields.Integer(string='Color Index', default=3)
99

1010
name = fields.Char(required=True)

Estate/models/estate_property_type.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,24 +5,26 @@
55
class EstatePropertyType(models.Model):
66
_name = "estate.property.type"
77
_description = "Real Estate Property Type"
8-
_order="name desc"
8+
_order="name desc "
99

1010
name = fields.Char(required=True)
1111
property_ids = fields.One2many("estate.property", "property_type_id", string="Properties")
1212
sequence = fields.Integer('Sequence', default=7)
13-
offer_count = fields.Integer(string="Number of Offers",compute="_compute_offer_count")
13+
offer_count = fields.Integer(string="Number of Offers", compute="_compute_offer_count")
1414

1515
_check_type_name_unique_ratio = models.Constraint(
1616
'CHECK(name)',
1717
'The property name must be unique.'
1818
)
19+
1920
@api.depends('property_ids.offer_ids')
2021
def _compute_offer_count(self):
2122
for property_type in self:
2223
offer_count = 0
2324
for property in property_type.property_ids:
2425
offer_count += len(property.offer_ids)
2526
property_type.offer_count = offer_count
27+
2628
@api.constrains('name')
2729
def _check_type_name_unique(self):
2830
for record in self:

Estate/views/estate_property_offer_views.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,4 +31,4 @@
3131
</form>
3232
</field>
3333
</record>
34-
</odoo>
34+
</odoo>

Estate/views/estate_property_views.xml

Lines changed: 4 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,6 @@
2828
<field name="arch" type="xml">
2929
<form string="Property">
3030
<header>
31-
<button name="action_set_next_status" string="Next" type="object"/>
3231
<button name="action_back_to_new" string="Reset to New" type="object"/>
3332
<button name="action_set_sold" string="Mark as Sold" type="object"/>
3433
<button name="action_set_canceled" string="Cancel" type="object"/>
@@ -41,7 +40,6 @@
4140
<group>
4241
<group string="Property Details">
4342
<field name="postcode"/>
44-
<field name="create_date"/>
4543
<field name="expected_price"/>
4644
<field name="selling_price"/>
4745
<field name="bedrooms"/>
@@ -54,20 +52,19 @@
5452
</group>
5553
</group>
5654
<notebook>
57-
<page string="Description">
55+
<!-- <page string="Description">
5856
<field name="description" placeholder="Add property description..."/>
59-
</page>
57+
</page> -->
6058
<page string="Details">
6159
<form>
62-
<group string="Details">
60+
<group>
6361
<field name="buyer_id"/>
6462
<field name="salesperson_id"/>
6563
<field name="property_type_id"/>
6664
<field name="tag_ids" widget="many2many_tags"/>
6765
<separator string="Summary"/>
6866
<field name="total_area" readonly="1"/>
6967
<field name="best_price" readonly="1"/>
70-
<field name="state"/>
7168
<field name="validity_days"/>
7269
<field name= "date_deadline"/>
7370
</group>
@@ -90,15 +87,13 @@
9087
</field>
9188
</record>
9289

93-
9490
<record id="estate_property_form_action" model="ir.actions.act_window">
9591
<field name="name">Property(Form)</field>
9692
<field name="res_model">estate.property</field>
9793
<field name="view_mode">form</field>
9894
<field name="view_id" ref="estate_property_form_view"/>
9995
</record>
10096

101-
10297
<record id="estate_property_search_view" model="ir.ui.view">
10398
<field name="name">estate.property.search</field>
10499
<field name="model">estate.property</field>
@@ -118,6 +113,4 @@
118113
</search>
119114
</field>
120115
</record>
121-
122-
123-
</odoo>
116+
</odoo>

Estate/views/res_users_view.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,4 +22,4 @@
2222
<field name="view_mode">form</field>
2323
<field name="view_id" ref="view_users_form_inherit_properties"/>
2424
</record>
25-
</odoo>
25+
</odoo>

0 commit comments

Comments
 (0)