Skip to content

Commit b95fcd0

Browse files
committed
[CLN] estate{,_account}: clean code of estate and estate_account
" instead of ' for client visible variable use of self.env._ clean of space and lines changed name of classes changed name of action
1 parent 4c9f7ea commit b95fcd0

20 files changed

Lines changed: 255 additions & 280 deletions

awesome_clicker/__init__.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1 @@
11
# -*- coding: utf-8 -*-
2-

estate/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
from . import models
1+
from . import models

estate/__manifest__.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
],
77
'application': True,
88
'installable': True,
9-
'author': 'thfay',
9+
'author': 'Odoo S.A.',
1010
'data': [
1111
'security/ir.model.access.csv',
1212
'views/estate_property_views.xml',
@@ -15,5 +15,6 @@
1515
'views/estate_property_offer_views.xml',
1616
'views/inherit_user_views.xml',
1717
'views/estate_menus.xml',
18-
]
19-
}
18+
],
19+
'license': 'LGPL-3',
20+
}

estate/models/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,4 @@
22
from . import estate_property_type
33
from . import estate_property_tag
44
from . import estate_property_offer
5-
from . import res_users
5+
from . import res_users

estate/models/estate_property.py

Lines changed: 79 additions & 70 deletions
Original file line numberDiff line numberDiff line change
@@ -1,54 +1,78 @@
1-
from odoo import api, fields, models, exceptions
2-
from odoo.tools import float_compare
3-
41
from dateutil.relativedelta import relativedelta
52

3+
from odoo import api, fields, models
4+
from odoo.tools import float_compare
5+
from odoo.exceptions import ValidationError, UserError
6+
67

7-
class Property(models.Model):
8+
class EstateProperty(models.Model):
89
_name = 'estate.property'
9-
_description = "when duplicated status and date are not copied"
10+
_description = "All property created"
1011
_order = 'id desc'
11-
12-
name = fields.Char(required=True, string='title')
13-
description = fields.Text(string="description")
12+
13+
name = fields.Char(required=True, string="Title")
14+
description = fields.Text(string="Description")
1415
postcode = fields.Char()
15-
date_availability = fields.Date(default=(fields.Date.today() + relativedelta(months=3)), copy=False,
16-
string='available date')
17-
expected_price = fields.Float(required=True, string='expected price')
18-
selling_price = fields.Float(readonly=True, copy=False, string='selling price')
16+
date_availability = fields.Date(default=lambda p: fields.Date.today() + relativedelta(months=3), copy=False,
17+
string="Available Date")
18+
expected_price = fields.Float(required=True, string="Expected Price")
19+
selling_price = fields.Float(readonly=True, copy=False, string="Selling price")
1920
bedrooms = fields.Integer(default=2)
20-
living_area = fields.Integer(string='living area')
21-
facades = fields.Integer(string="facades")
22-
garage = fields.Boolean(string="garage")
23-
garden = fields.Boolean(string="garden")
21+
living_area = fields.Integer(string="Living Area")
22+
facades = fields.Integer(string="Facades")
23+
garage = fields.Boolean(string="Garage")
24+
garden = fields.Boolean(string="Garden")
2425
active = fields.Boolean(default=True)
25-
garden_area = fields.Integer(string="garden area", default=0)
26+
garden_area = fields.Integer(string="Garden Area", default=0)
2627

27-
property_type_id = fields.Many2one("estate.property.type", string='property type')
28-
buyer_id = fields.Many2one("res.partner", string='buyer', copy=False)
29-
salesperson_id = fields.Many2one("res.users", string='salesperson', default=lambda self: self.env.user)
28+
property_type_id = fields.Many2one('estate.property.type', string="Property Type")
29+
buyer_id = fields.Many2one('res.partner', string="Buyer", copy=False)
30+
salesperson_id = fields.Many2one('res.users', string="Salesperson", default=lambda self: self.env.user)
3031

31-
tag_ids = fields.Many2many("estate.property.tag")
32+
tag_ids = fields.Many2many('estate.property.tag')
3233

33-
offer_ids = fields.One2many("estate.property.offer", "property_id", string="offer")
34+
offer_ids = fields.One2many(comodel_name='estate.property.offer', inverse_name='property_id', string="Offer")
3435

3536
garden_orientation = fields.Selection(
36-
string="garden orientation",
37-
selection = [('north', "North"), ('south', "South"), ('east', "East"), ('west', "West")]
38-
)
37+
string="Garden Orientation",
38+
selection=[('north', "North"), ('south', "South"), ('east', "East"), ('west', "West")]
39+
)
3940

4041
state = fields.Selection(
4142
string="Status",
4243
required=True,
4344
default='new',
44-
selection = [('new', "New"), ('offer', "Offer"), ('received', "Offer Received"),
45-
('accepted', "Offer Accepted"), ('sold', "Sold"), ('cancelled', "Cancelled")]
46-
)
47-
48-
total_area = fields.Float(compute="_compute_total_area")
49-
50-
best_price = fields.Float(compute="_compute_best_price")
51-
45+
selection=[
46+
('new', "New"),
47+
('offer', "Offer"),
48+
('received', "Offer Received"),
49+
('accepted', "Offer Accepted"),
50+
('sold', "Sold"),
51+
('cancelled', "Cancelled"),
52+
]
53+
)
54+
55+
total_area = fields.Float(compute='_compute_total_area')
56+
57+
best_price = fields.Float(compute='_compute_best_price')
58+
59+
_check_expected_price = models.Constraint(
60+
'CHECK(expected_price > 0)',
61+
"The expected price must be strictly positive.",
62+
)
63+
64+
_check_selling_price = models.Constraint(
65+
'CHECK(selling_price >= 0)',
66+
"The selling price must be positive.",
67+
)
68+
69+
@api.constrains('selling_price', 'expected_price')
70+
def _check_sell_price(self):
71+
for estate in self:
72+
if len(estate.offer_ids) > 0 and float_compare(estate.selling_price, estate.expected_price * 0.9, 2) == -1:
73+
raise ValidationError(self.env._("Put a higher price"))
74+
return True
75+
5276
@api.depends('garden_area', 'living_area')
5377
def _compute_total_area(self):
5478
for estate in self:
@@ -57,61 +81,46 @@ def _compute_total_area(self):
5781
@api.depends('offer_ids.price')
5882
def _compute_best_price(self):
5983
for estate in self:
60-
prices = estate.offer_ids.filtered(lambda o:o.status != 'refused').mapped('price')
84+
prices = estate.offer_ids.filtered(lambda o: o.status != 'refused').mapped('price')
6185
estate.best_price = max(prices) if len(prices) > 0 else 0
6286

6387
@api.onchange('garden')
6488
def _onchange_garden(self):
65-
self.garden_area = 10*self.garden
66-
self.garden_orientation = 'north' if self.garden else None
89+
self.garden_area = 10 * self.garden
90+
self.garden_orientation = 'north' if self.garden else None
6791

68-
def cancel_sell(self):
92+
def action_cancel_sell(self):
6993
for estate in self:
70-
if estate.state == 'sold' :
71-
raise exceptions.UserError("Sold properties can not be canceled")
94+
if estate.state == 'sold':
95+
raise UserError(self.env._("Sold properties can not be canceled"))
7296

7397
estate.state = 'cancelled'
74-
return True
75-
76-
def set_sell(self):
98+
return True
99+
100+
def action_sell(self):
77101
for estate in self:
78-
if estate.state == 'cancelled' :
79-
raise exceptions.UserError("Cancelled properties can not be sell")
102+
if estate.state == 'cancelled':
103+
raise UserError(self.env._("Cancelled properties can not be sell"))
80104

81105
estate.state = 'sold'
82-
return True
83-
106+
return True
107+
84108
def set_received(self):
85109
for estate in self:
86110
estate.state = 'received'
87-
return True
88-
89-
def accepted_offer(self,offer):
111+
return True
112+
113+
def accepted_offer(self, offer):
90114
for estate in self:
91115
if offer.status == 'accepted':
92116
estate.selling_price = offer.price
93117
estate.buyer_id = offer.partner_id
94-
estate.state='accepted'
118+
estate.state = 'accepted'
119+
return True
95120

96-
_check_expected_price = models.Constraint(
97-
'CHECK(expected_price > 0)',
98-
"The expected price must be strictly positive.",
99-
)
100-
101-
_check_selling_price = models.Constraint(
102-
'CHECK(selling_price >= 0)',
103-
"The selling price must be positive.",
104-
)
105-
106-
@api.constrains('selling_price','expected_price')
107-
def _check_sell_price(self):
108-
for estate in self:
109-
if len(estate.offer_ids) > 0 and float_compare(estate.selling_price, estate.expected_price * 0.9 ,2) == -1 :
110-
raise exceptions.ValidationError("Put a higher price")
111-
112121
@api.model
113122
def ondelete(self):
114-
for property in self :
115-
if property.state != 'new' or property.state != 'cancelled' :
116-
raise exceptions.ValidationError("Can only delete new or cancelled properties")
117-
return super().ondelete()
123+
for property in self:
124+
if property.state != 'new' or property.state != 'cancelled':
125+
raise ValidationError(self.env._("Can only delete new or cancelled properties"))
126+
return super().ondelete()
Lines changed: 27 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,66 +1,66 @@
1-
from odoo import api, fields, models, exceptions
2-
31
from dateutil.relativedelta import relativedelta
42

3+
from odoo import api, fields, models
4+
from odoo.exceptions import ValidationError, UserError
5+
56

6-
class PropertyOffer(models.Model):
7+
class EstatePropertyOffer(models.Model):
78
_name = 'estate.property.offer'
8-
_description = "model of property offer"
9+
_description = "All property offer"
910
_order = 'price desc'
10-
11+
1112
price = fields.Float()
1213

1314
property_id = fields.Many2one('estate.property', string="property", required=True, readonly=True)
1415
partner_id = fields.Many2one('res.partner', string="partner", required=True)
15-
property_type_id = fields.Many2one(related='property_id.property_type_id')
16-
16+
property_type_id = fields.Many2one(related='property_id.property_type_id')
1717

1818
status = fields.Selection(
1919
copy=False,
20-
selection = [('accepted', "Accepted"), ('refused', "Refused")]
20+
selection=[('accepted', "Accepted"), ('refused', "Refused")]
2121
)
22-
22+
2323
validity = fields.Integer(default=7)
2424

25-
date_deadline = fields.Date(compute="_compute_deadline", inverse="_inverse_deadline", string="deadline")
25+
date_deadline = fields.Date(compute='_compute_deadline', inverse='_inverse_deadline', string="Deadline")
2626

27-
@api.depends("validity")
27+
_check_price = models.Constraint(
28+
'CHECK(price > 0)',
29+
"The price must be strictly positive.",
30+
)
31+
32+
@api.depends('validity')
2833
def _compute_deadline(self):
2934
for offer in self:
3035
offer.date_deadline = fields.Date.today() + relativedelta(days=offer.validity)
3136

3237
def _inverse_deadline(self):
3338
for offer in self:
34-
offer.validity = relativedelta(offer.date_deadline,fields.Date.today()).days
39+
offer.validity = relativedelta(offer.date_deadline, fields.Date.today()).days
3540

3641
def offer_cancel(self):
3742
for offer in self:
3843
if offer.status == 'accepted':
39-
raise exceptions.UserError('you can not cancel an accepted offer')
44+
raise UserError(self.env._("You can not cancel an accepted offer"))
4045
else:
4146
offer.status = 'refused'
4247
return True
43-
48+
4449
def offer_accept(self):
4550
for offer in self:
4651
if offer.property_id.state != 'accepted':
4752
offer.status = 'accepted'
4853
offer.property_id.accepted_offer(offer)
4954
else:
50-
raise exceptions.UserError('there is already an accepted offer for ' + offer.property_id.name )
51-
55+
raise UserError(self.env._("There is already an accepted offer for %s.", offer.property_id.name))
56+
5257
return True
53-
58+
5459
@api.model
55-
def create(self,vals_list):
56-
for vals in vals_list :
57-
property = self.env['estate.property'].browse(vals['property_id'])
58-
if vals['price'] < property.best_price :
59-
raise exceptions.ValidationError("Can not create an offer lower than an existing offer")
60+
def create(self, vals_list):
61+
for vals in vals_list:
62+
property = self.env['estate.property'].browse(vals['property_id'])
63+
if vals['price'] < property.best_price:
64+
raise ValidationError(self.env._("Can not create an offer lower than an existing offer"))
6065
property.set_received()
6166
return super().create(vals_list)
62-
63-
_check_price = models.Constraint(
64-
'CHECK(price > 0)',
65-
"The price must be strictly positive.",
66-
)
Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,15 @@
11
from odoo import fields, models
22

3-
class PropertyTag(models.Model):
4-
_name = "estate.property.tag"
5-
_description = "model of property tag"
3+
4+
class EstatePropertyTag(models.Model):
5+
_name = 'estate.property.tag'
6+
_description = "All property tag"
67
_order = 'name'
7-
8+
89
name = fields.Char(required=True)
910
color = fields.Integer(default=0)
11+
1012
_check_tag_name = models.Constraint(
1113
'UNIQUE (name)',
1214
"The tag name must be unique."
13-
)
15+
)
Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,30 @@
11
from odoo import api, fields, models
22

3-
class PropertyType(models.Model):
4-
_name = "estate.property.type"
5-
_description = "model of property type"
3+
4+
class EstatePropertyType(models.Model):
5+
_name = 'estate.property.type'
6+
_description = "All property type e.g. House, Manor "
67
_order = 'sequence asc,name'
78

89
name = fields.Char(required=True)
910
sequence = fields.Integer(string="Sequence", default=1, help="Used to order stages. Lower is better.")
10-
11+
1112
property_ids = fields.One2many(comodel_name='estate.property', inverse_name='property_type_id')
1213
offer_ids = fields.One2many(comodel_name='estate.property.offer', inverse_name='property_type_id')
1314

14-
offer_count = fields.Integer(compute='_compute_ofer_count', string="Offer count")
15+
offer_count = fields.Integer(compute='_compute_ofer_count', string="Offer Count")
1516

1617
@api.depends('offer_ids')
1718
def _compute_ofer_count(self):
1819
for type in self:
1920
type.offer_count = len(type.offer_ids)
2021
return True
2122

22-
2323
def action_estate_property_offer_view_by_type(self):
2424
return {
2525
'type': 'ir.actions.act_window',
2626
'res_model': 'estate.property.offer',
27-
'name': ("Offer"),
28-
'views': [[False, 'list']],
27+
'name': self.env._("Offer"),
28+
'views': [(False, 'list')],
2929
'domain': [('property_type_id', '=', self.id)],
30-
}
30+
}

estate/models/res_users.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
1-
from odoo import api, fields, models, exceptions
1+
from odoo import fields, models
2+
23

34
class ResUsers(models.Model):
4-
_inherit = ["res.users"]
5+
_inherit = ['res.users']
56
_name = 'res.users'
67

7-
property_ids = fields.One2many(comodel_name='estate.property', inverse_name='salesperson_id', domain="['|', ('state', '=', 'New'), ('state', '=', 'Offer Received')]")
8+
property_ids = fields.One2many(comodel_name='estate.property', inverse_name='salesperson_id', domain=['|', ('state', '=', 'new'), ('state', '=', 'received')])

0 commit comments

Comments
 (0)