Skip to content

Commit 5952c23

Browse files
[IMP] estate: Server101 Finished Chapter 8
1 parent 2d93191 commit 5952c23

File tree

4 files changed

+49
-4
lines changed

4 files changed

+49
-4
lines changed

estate/models/estate_property.py

Lines changed: 28 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
from dateutil.relativedelta import relativedelta
2-
from odoo import fields, models
2+
from odoo import fields, models,api
33

44

55
class EstateProperty(models.Model):
@@ -14,16 +14,42 @@ class EstateProperty(models.Model):
1414
last_seen= fields.Date("Last Seen", default=fields.Datetime.now)
1515
expected_price = fields.Float(required=True)
1616
selling_price = fields.Float(readonly=True,copy=False)
17+
best_price = fields.Float(string="Best Price",compute="_get_best_price")
1718
bedrooms = fields.Integer(default=2)
1819
living_area = fields.Integer()
1920
facades = fields.Integer()
2021
garage = fields.Boolean()
2122
garden = fields.Boolean()
2223
garden_area = fields.Integer()
2324
garden_orientation = fields.Selection(selection=[('North','North'),('South','South'),('East','East'),('West','West')])
25+
total_area = fields.Float(compute="_get_total_area",string="Total Area");
2426
property_type_id = fields.Many2one("estate.property.type",string="Type")
2527
buyer_id = fields.Many2one("res.partner",string="Buyer")
2628
seller_id = fields.Many2one("res.users",default=lambda self : self.env.user,string="Seller")
2729
tag_ids = fields.Many2many("estate.property.tag",string="Tags")
2830
offer_ids = fields.One2many("estate.property.offer","property_id",string="Offers")
29-
31+
32+
@api.depends('living_area','garden_area')
33+
def _get_total_area(self):
34+
for record in self:
35+
record.total_area = record.garden_area + record.living_area;
36+
37+
38+
@api.depends('offer_ids')
39+
def _get_best_price(self):
40+
for record in self:
41+
max:int = 0
42+
43+
if(len(record.offer_ids)==0):
44+
record.best_price = 0;
45+
continue
46+
47+
for offer in record.offer_ids:
48+
if(offer.price >= max):
49+
max = offer.price
50+
record.best_price = max
51+
52+
@api.onchange("garden")
53+
def _garden_pre_fill(self):
54+
self.garden_area = 10 if self.garden else 0
55+
self.garden_orientation = 'North' if self.garden else ''
Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,23 @@
1-
from odoo import fields, models
1+
from datetime import datetime, time
2+
from dateutil.relativedelta import relativedelta
3+
from odoo import fields, models, api
24

35

46
class EstatePropertyOffer(models.Model):
57
_name = "estate.property.offer"
68
_description = "Property Offer"
7-
price = fields.Float(string="Price");
9+
price = fields.Float(string="Price")
810
status = fields.Selection(copy=False,selection = [("Accepted","Accepted"),("Refused","Refused")])
911
partner_id = fields.Many2one('res.partner',required=True)
1012
property_id = fields.Many2one('estate.property', required=True)
13+
validity = fields.Integer(string="Validity Duration",default=7)
14+
date_deadline = fields.Date(string="Deadline",compute="_get_date_deadline",inverse="_set_date_deadline")
15+
16+
@api.depends("validity")
17+
def _get_date_deadline(self):
18+
for record in self:
19+
record.date_deadline = record.create_date + relativedelta(days=record.validity)
20+
21+
def _set_date_deadline(self):
22+
for record in self:
23+
record.validity = (datetime.combine(record.date_deadline,time()) - record.create_date).days

estate/views/estate_property_offer_views.xml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@
1111
<field name="price"/>
1212
<field name="partner_id" string="Partner"/>
1313
<field name ="status"/>
14+
<field name="date_deadline"/>
15+
<field name="validity"/>
1416
</group>
1517
</sheet>
1618
</form>
@@ -25,6 +27,8 @@
2527
<field name="price"/>
2628
<field name ="partner_id"/>
2729
<field name ="status"/>
30+
<field name="date_deadline"/>
31+
<field name="validity"/>
2832
</list>
2933
</field>
3034
</record>

estate/views/estate_property_views.xml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@
4444
<group>
4545
<field name="expected_price"/>
4646
<field name="selling_price"/>
47+
<field name="best_price"/>
4748
</group>
4849
</group>
4950
<notebook>
@@ -57,6 +58,7 @@
5758
<field name="garden"/>
5859
<field name="garden_area"/>
5960
<field name="garden_orientation"/>
61+
<field name="total_area"/>
6062
</group>
6163
</page>
6264
<page string="Offers">

0 commit comments

Comments
 (0)