Skip to content

Commit 20252b6

Browse files
committed
[IMP] realestate: add kanban view and polish code
1 parent 12c05d2 commit 20252b6

21 files changed

+93
-184
lines changed

estate_account/models/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
11
from . import estate_account
2-
from . import realestate
2+
from . import realestate_property

estate_account/models/estate_account.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,5 @@
33

44
class EstateAccount(models.Model):
55
_name = "estate.account"
6+
_description = "EstateAccount"
67
name = fields.Char(required=True)

estate_account/models/realestate.py renamed to estate_account/models/realestate_property.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,21 @@
1-
from odoo import models, fields, Command
1+
from odoo import models, Command
22

33

44
class Realestate(models.Model):
5-
_name = "realestate"
6-
_inherit = "realestate"
5+
_name = "realestate_property"
6+
_inherit = "realestate_property"
77

88
def action_set_property_sold(self):
99
self.env["account.move"].create(
1010
{
11-
"partner_id": super().buyer_id.id,
11+
"partner_id": self.buyer_id.id,
1212
"move_type": "out_invoice",
1313
"line_ids": [
1414
Command.create(
1515
{
1616
"name": self.name,
1717
"quantity": 1,
18-
"price_unit": super().selling_price,
18+
"price_unit": self.selling_price,
1919
}
2020
)
2121
],
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
22
access_estate_account,access.estate_acount,model_estate_account,,1,1,1,1
3-
access_realestate,access.realestate,model_realestate,,1,1,1,1
3+
access_realestate_property,access.realestate_property,model_realestate_property,,1,1,1,1

realestate/__manifest__.py

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,10 @@
33
"depends": ["base"],
44
"data": [
55
"security/ir.model.access.csv",
6-
"views/estate_view.xml",
7-
"views/owner_view.xml",
8-
"views/tag_view.xml",
9-
"views/seller_view.xml",
10-
"views/buyer_view.xml",
11-
"views/offer_view.xml",
12-
"views/type_view.xml",
6+
"views/realestate_property_view.xml",
7+
"views/realestate_tag_view.xml",
8+
"views/realestate_offer_view.xml",
9+
"views/realestate_types_view.xml",
1310
],
1411
"application": True,
1512
"installable": True,

realestate/models/__init__.py

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,4 @@
1-
from . import realestate
2-
from . import owner
3-
from . import types
4-
from . import tags
5-
from . import seller
6-
from . import buyer
7-
from . import offer
1+
from . import realestate_property
2+
from . import realestate_types
3+
from . import realestate_tags
4+
from . import realestate_offer

realestate/models/buyer.py

Lines changed: 0 additions & 8 deletions
This file was deleted.

realestate/models/owner.py

Lines changed: 0 additions & 10 deletions
This file was deleted.

realestate/models/offer.py renamed to realestate/models/realestate_offer.py

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,29 +4,33 @@
44

55

66
class Offer(models.Model):
7-
_name = "offer"
7+
_name = "realestate_offer"
88
_order = "price desc"
9+
_description = "Offer"
910
price = fields.Float()
1011
status = fields.Selection([("accepted", "Accepted"), ("refused", "Refused")])
1112
buyer_id = fields.Many2one("res.partner")
12-
property_id = fields.Many2one("realestate")
13+
property_id = fields.Many2one("realestate_property")
1314
property_type_id = fields.Many2one(related="property_id.type_id")
1415
state = fields.Selection(related="property_id.state")
1516
validity = fields.Integer()
16-
deadline = fields.Date(compute="_compute_deadline", inverse="_inverse_deadline")
17+
deadline_date = fields.Date(
18+
compute="_compute_deadline", inverse="_inverse_deadline"
19+
)
1720
highest_offer = fields.Float(compute="_calc_highest_price")
1821

1922
@api.depends("validity")
2023
def _compute_deadline(self):
2124
for record in self:
22-
record.deadline = (
25+
record.deadline_date = (
2326
record.create_date or fields.Datetime.now()
2427
).date() + timedelta(days=record.validity)
2528

2629
def _inverse_deadline(self):
2730
for record in self:
2831
record.validity = (
29-
record.deadline - (record.create_date or fields.Datetime.now()).date()
32+
record.deadline_date
33+
- (record.create_date or fields.Datetime.now()).date()
3034
).days
3135

3236
def set_offer_accepted(self):
@@ -53,7 +57,7 @@ def set_offer_refused(self):
5357
]
5458

5559
def create(self, vals):
56-
res = super(Offer, self).create(vals)
60+
res = super().create(vals)
5761

5862
if res.price < res.property_id.best_price:
5963
raise UserError("Please set a higher price!")

realestate/models/realestate.py renamed to realestate/models/realestate_property.py

Lines changed: 14 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@
33

44

55
class Realestate(models.Model):
6-
_name = "realestate"
7-
_description = "Estate"
6+
_name = "realestate_property"
7+
_description = "Properties"
88
_order = "type_id"
99
name = fields.Char(required=True)
1010
description = fields.Text()
@@ -38,26 +38,23 @@ class Realestate(models.Model):
3838
],
3939
default="new",
4040
)
41-
owner_id = fields.Many2one("buyer")
42-
type_id = fields.Many2one("types", widget="handle")
43-
tag_ids = fields.Many2many("tags", string="Tags")
44-
seller_id = fields.Many2one("seller")
41+
owner_id = fields.Many2one("res.partner")
42+
type_id = fields.Many2one("realestate_types", widget="handle")
43+
tag_ids = fields.Many2many("realestate_tags", string="Tags")
44+
seller_id = fields.Many2one("res.partner")
4545
buyer_id = fields.Many2one("res.partner")
46-
offer_ids = fields.One2many("offer", "property_id")
47-
status = fields.Selection(related="offer_ids.status")
48-
price = fields.Float(related="offer_ids.price")
49-
validity = fields.Integer(related="offer_ids.validity")
50-
deadline = fields.Date(related="offer_ids.deadline")
46+
offer_ids = fields.One2many("realestate_offer", "property_id")
47+
5148
total_area = fields.Integer(compute="_compute_total")
52-
best_price = fields.Float(compute="_max_offer_price")
49+
best_price = fields.Float(compute="_compute_max_offer_price")
5350

5451
@api.depends("living_area", "garden_area")
5552
def _compute_total(self):
5653
for record in self:
5754
record.total_area = record.living_area + record.garden_area
5855

5956
@api.depends("offer_ids")
60-
def _max_offer_price(self):
57+
def _compute_max_offer_price(self):
6158
for record in self:
6259
record.best_price = max(record.offer_ids.mapped("price"), default=0)
6360

@@ -68,7 +65,7 @@ def _onchange_garden(self):
6865
self.garden_orientation = "north"
6966
else:
7067
self.garden_area = 0
71-
self.garden_orientation = ""
68+
self.garden_orientation = False
7269

7370
def action_set_property_sold(self):
7471
for record in self:
@@ -82,34 +79,25 @@ def action_set_property_cancelled(self):
8279
raise UserError("Sold properties cannot be Cancelled")
8380
record.state = "cancelled"
8481

85-
# def action_set_offer_accepted(self):
86-
# for record in self:
87-
# if record.status
88-
8982
_sql_constraints = [
9083
(
9184
"check_expected_price",
92-
"CHECK(expected_price> 0)",
85+
"CHECK(expected_price > 0)",
9386
"Expected price must be positive.",
9487
),
9588
(
9689
"check_selling_price",
97-
"CHECK(selling_price> 0)",
90+
"CHECK(selling_price > 0)",
9891
"Selling price must be positive.",
9992
),
100-
(
101-
"check_offer_price",
102-
"CHECK(price> 0)",
103-
"Offer price must be positive.",
104-
),
10593
]
10694

10795
@api.constrains("selling_price")
10896
def _validate_selling_price(self):
10997
for record in self:
11098
if record.selling_price < 0.9 * record.expected_price:
11199
raise ValidationError(
112-
"Selling price must be at least 90'%' of the expected price"
100+
"Selling price must be at least 90% of the expected price"
113101
)
114102

115103
@api.constrains("offer_ids")

0 commit comments

Comments
 (0)