Skip to content

Commit 11b3175

Browse files
committed
[REF] estate: Refactoring to the coding guidelines
1 parent 199b3c2 commit 11b3175

14 files changed

+50
-39
lines changed

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -127,3 +127,5 @@ dmypy.json
127127

128128
# Pyre type checker
129129
.pyre/
130+
131+
ruff.toml

estate/__manifest__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
'name': "estate",
3-
'version': '0.1',
3+
'version': '18.0.1.0.0',
44
'depends': ['base'],
55
'data': [
66
'security/ir.model.access.csv',

estate/models/estate_property.py

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,27 @@
1-
from odoo import fields, models, api
1+
from odoo import fields, models, api, _
22
from dateutil.relativedelta import relativedelta
33
from odoo.exceptions import UserError, ValidationError
44
from odoo.tools.float_utils import float_compare, float_is_zero
55

66

77
class EstateProperty(models.Model):
8+
"""Model representing a real estate property."""
89

910
_name = "estate.property"
10-
_description = "estate properties"
11+
_description = "Real Estate Properties"
1112
_order = "id desc"
1213
_sql_constraints = [
13-
('check_expected_price', 'CHECK(expected_price > 0 )', 'expected price must be strictly positive'),
14-
('check_selling_price', 'CHECK(selling_price >= 0 )', 'selling price must be positive'),
14+
('check_expected_price', 'CHECK(expected_price > 0 )', 'Expected price must be strictly positive.'),
15+
('check_selling_price', 'CHECK(selling_price >= 0 )', 'Selling price must be positive.'),
1516
]
1617

18+
def _default_date_availability(self):
19+
return fields.Date.today() + relativedelta(months=3)
20+
1721
name = fields.Char("Title", required=True)
1822
description = fields.Text("Description")
1923
postcode = fields.Char("Postcode")
20-
date_availability = fields.Date("Available From", default=(fields.Date.today() + relativedelta(months=3)))
24+
date_availability = fields.Date("Available From", default=_default_date_availability)
2125
expected_price = fields.Float("Expected Price", required=True)
2226
selling_price = fields.Float("Selling Price", readonly=True, copy=False)
2327
bedrooms = fields.Integer("Bedrooms", default=2)
@@ -79,24 +83,24 @@ def _onchange_garden(self):
7983
def action_sold(self):
8084
for record in self:
8185
if record.state == 'canceled':
82-
raise UserError("Canceled properties cannot be sold.")
86+
raise UserError(_("Canceled properties cannot be sold."))
8387
else:
8488
record.state = 'sold'
8589

8690
def action_cancel(self):
8791
for record in self:
8892
if record.state == 'sold':
89-
raise UserError("Sold properties cannot be canceled.")
93+
raise UserError(_("Sold properties cannot be canceled."))
9094
else:
9195
record.state = 'canceled'
9296

9397
@api.constrains('expected_price', 'selling_price')
9498
def _check_selling_price(self):
9599
for record in self:
96100
if not float_is_zero(record.selling_price, precision_rounding=0.01) and float_compare(record.selling_price, record.expected_price * 0.9, precision_rounding=0.01) < 0:
97-
raise ValidationError("the selling price cannot be lower than 90% of the expected price")
101+
raise ValidationError(_("The selling price cannot be lower than 90% of the expected price."))
98102

99103
@api.ondelete(at_uninstall=False)
100104
def _unlink_if_state_is_new_or_cancelled(self):
101105
if any(record.state not in ('new', 'canceled') for record in self):
102-
raise UserError("Only new and canceled properties can be deleted.")
106+
raise UserError(_("Only new and canceled properties can be deleted."))

estate/models/estate_property_offer.py

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,17 @@
1-
from odoo import fields, models, api
1+
from odoo import fields, models, api, _
22
from dateutil.relativedelta import relativedelta
33
from odoo.exceptions import UserError
44
from odoo.tools.float_utils import float_compare
55

66

77
class EstatePropertyOffer(models.Model):
8+
"""Model representing an offer for a real estate property."""
89

910
_name = "estate.property.offer"
10-
_description = "estate property offer"
11+
_description = "Real Estate Property Offers"
1112
_order = "price desc"
1213
_sql_constraints = [
13-
('check_offer_price', 'CHECK(price > 0)', 'An offer price must be strictly positive')
14+
('check_offer_price', 'CHECK(price > 0)', 'An offer price must be strictly positive.'))
1415
]
1516

1617
price = fields.Float(string="Price")
@@ -24,7 +25,7 @@ class EstatePropertyOffer(models.Model):
2425
)
2526
partner_id = fields.Many2one("res.partner", string="Partner", required=True)
2627
property_id = fields.Many2one("estate.property", string="Property", required=True)
27-
validity = fields.Integer("Validity (days)")
28+
validity = fields.Integer("Validity (days)", default=7)
2829
deadline = fields.Date("Deadline", compute="_compute_deadline", inverse="_inverse_deadline")
2930
property_type_id = fields.Many2one(
3031
"estate.property.type", related="property_id.property_type_id", string="Property Type")
@@ -40,7 +41,7 @@ def _inverse_deadline(self):
4041

4142
def action_accept(self):
4243
if 'accepted' in self.mapped("property_id.offer_ids.status"):
43-
raise UserError("An offer is already accepted")
44+
raise UserError(_("An offer is already accepted."))
4445
else:
4546
for record in self:
4647
record.status = 'accepted'
@@ -60,6 +61,6 @@ def create(self, values):
6061
if prop.offer_ids:
6162
max_offer = max(prop.mapped("offer_ids.price"))
6263
if float_compare(vals["price"], max_offer, precision_rounding=0.01) <= 0:
63-
raise UserError(f"The offer must be higher than {max_offer}")
64+
raise UserError(_("The offer must be higher than %.2f."), max_offer)
6465
prop.state = "offer_received"
6566
return super().create(values)

estate/models/estate_property_tag.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,13 @@
22

33

44
class EstatePropertyTag(models.Model):
5+
"""Model representing a property tag."""
56

67
_name = "estate.property.tag"
7-
_description = "estate property tag"
8+
_description = "Real Estate Property Tag"
89
_order = "name"
910
_sql_constraints = [
10-
('unique_name', 'UNIQUE(name)', 'the tag name must be unique')
11+
('unique_name', 'UNIQUE(name)', 'The tag name must be unique.')
1112
]
1213

1314
name = fields.Char("Name", required=True)

estate/models/estate_property_type.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,13 @@
22

33

44
class EstatePropertyType(models.Model):
5+
"""Model representing a property type."""
56

67
_name = "estate.property.type"
7-
_description = "estate property type"
8+
_description = "Real Estate Property Type"
89
_order = "name"
910
_sql_constraints = [
10-
('unique_name', 'UNIQUE(name)', 'the type name must be unique')
11+
('unique_name', 'UNIQUE(name)', 'The type name must be unique.')
1112
]
1213

1314
name = fields.Char("Name", required=True)

estate/models/res_users.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33

44
class ResUsers(models.Model):
5+
"""Model extending users"""
56

67
_inherit = "res.users"
78

estate/views/estate_property_offer_views.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@
44
<field name="res_model">estate.property.offer</field>
55
<field name="view_mode">list,form</field>
66
</record>
7-
<record id="estate_property_offer_list" model="ir.ui.view">
8-
<field name="name">estate.property.offer.list</field>
7+
<record id="estate_property_offer_view_list" model="ir.ui.view">
8+
<field name="name">estate.property.offer.view.list</field>
99
<field name="model">estate.property.offer</field>
1010
<field name="arch" type="xml">
1111
<list string="Property Offers" editable="bottom" decoration-success="status == 'accepted'" decoration-danger="status == 'refused'">

estate/views/estate_property_tag_views.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@
44
<field name="res_model">estate.property.tag</field>
55
<field name="view_mode">list,form</field>
66
</record>
7-
<record id="estate_property_tag_list" model="ir.ui.view">
8-
<field name="name">estate.property.tag.list</field>
7+
<record id="estate_property_tag_view_list" model="ir.ui.view">
8+
<field name="name">estate.property.tag.view.list</field>
99
<field name="model">estate.property.tag</field>
1010
<field name="arch" type="xml">
1111
<list string="Property Tags" editable="bottom">

estate/views/estate_property_type_views.xml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@
44
<field name="res_model">estate.property.type</field>
55
<field name="view_mode">list,form</field>
66
</record>
7-
<record id="estate_property_type_form" model="ir.ui.view">
8-
<field name="name">estate.property.type.form</field>
7+
<record id="estate_property_type_view_form" model="ir.ui.view">
8+
<field name="name">estate.property.type.view.form</field>
99
<field name="model">estate.property.type</field>
1010
<field name="arch" type="xml">
1111
<form>
@@ -38,8 +38,8 @@
3838
</form>
3939
</field>
4040
</record>
41-
<record id="estate_property_type_list" model="ir.ui.view">
42-
<field name="name">estate.property.type.list</field>
41+
<record id="estate_property_type_view_list" model="ir.ui.view">
42+
<field name="name">estate.property.type.view.list</field>
4343
<field name="model">estate.property.type</field>
4444
<field name="arch" type="xml">
4545
<list string="Types">

estate/views/estate_property_views.xml

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@
66
<field name="view_mode">list,form,kanban</field>
77
<field name="context">{'search_default_available': True}</field>
88
</record>
9-
<record id="estate_property_kanban" model="ir.ui.view">
10-
<field name="name">estate.property.kanban</field>
9+
<record id="estate_property_view_kanban" model="ir.ui.view">
10+
<field name="name">estate.property.view.kanban</field>
1111
<field name="model">estate.property</field>
1212
<field name="arch" type="xml">
1313
<kanban default_group_by="property_type_id" records_draggable="False">
@@ -36,8 +36,8 @@
3636
</kanban>
3737
</field>
3838
</record>
39-
<record id="estate_property_form" model="ir.ui.view">
40-
<field name="name">estate.property.form</field>
39+
<record id="estate_property_view_form" model="ir.ui.view">
40+
<field name="name">estate.property.view.form</field>
4141
<field name="model">estate.property</field>
4242
<field name="arch" type="xml">
4343
<form string="Properties">
@@ -99,8 +99,8 @@
9999
</form>
100100
</field>
101101
</record>
102-
<record id="estate_property_list" model="ir.ui.view">
103-
<field name="name">estate.property.list</field>
102+
<record id="estate_property_view_list" model="ir.ui.view">
103+
<field name="name">estate.property.view.list</field>
104104
<field name="model">estate.property</field>
105105
<field name="arch" type="xml">
106106
<list string="Properties" decoration-success="state in ('offer_received', 'offer_accepted')" decoration-muted="state == 'sold'" decoration-bf="state == 'offer_accepted'">
@@ -114,8 +114,8 @@
114114
</list>
115115
</field>
116116
</record>
117-
<record id="estate_property_search" model="ir.ui.view">
118-
<field name="name">estate.property.search</field>
117+
<record id="estate_property_view_search" model="ir.ui.view">
118+
<field name="name">estate.property.view.search</field>
119119
<field name="model">estate.property</field>
120120
<field name="arch" type="xml">
121121
<search string="Properties">

estate/views/res_users_views.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<odoo>
2-
<record id="view_users_form" model="ir.ui.view">
3-
<field name="name">res.users.form.inherit.estate</field>
2+
<record id="res_users_view_form" model="ir.ui.view">
3+
<field name="name">res.users.view.form.inherit.estate</field>
44
<field name="model">res.users</field>
55
<field name="inherit_id" ref="base.view_users_form"/>
66
<field name="arch" type="xml">

estate_account/__manifest__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
'name': "estate_account",
3-
'version': '0.1',
3+
'version': '18.0.1.0.0',
44
'depends': ['estate', 'account'],
55
'author': "baje",
66
'category': 'Uncategorized',

estate_account/models/estate_property.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33

44
class EstateProperty(models.Model):
5+
"""Extend estate property to create an invoice on sold."""
56

67
_inherit = "estate.property"
78

0 commit comments

Comments
 (0)