Skip to content

Commit 7e58d88

Browse files
committed
[FIX] estate: Fixing the code and xml
1 parent e66f5d0 commit 7e58d88

File tree

9 files changed

+147
-106
lines changed

9 files changed

+147
-106
lines changed

estate/models/__init__.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
from . import estate_property
2-
from . import estate_property_type
3-
from . import estate_property_tags
42
from . import estate_property_offer
3+
from . import estate_property_tags
4+
from . import estate_property_type

estate/models/estate_property.py

Lines changed: 21 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,21 @@
1-
from odoo import models, fields, api
21
from datetime import date
2+
33
from dateutil.relativedelta import relativedelta
4+
5+
from odoo import api, fields, models
46
from odoo.exceptions import UserError
57
from odoo.tools import float_compare
68

79

810
class EstateProperty(models.Model):
911
_name = "estate.property"
1012
_description = "Real Estate Property"
13+
_order = "id desc"
1114

1215
name = fields.Char(string="Title", required=True)
13-
Property_Type = fields.Text()
16+
property_type = fields.Selection(
17+
string='Property Type',
18+
selection=[('house', 'House'), ('apartment', 'Apartment')])
1419
description = fields.Text()
1520
postcode = fields.Char()
1621
state = fields.Text()
@@ -28,11 +33,11 @@ class EstateProperty(models.Model):
2833
selection=[('north', 'North'), ('south', 'South'),
2934
('east', 'East'), ('west', 'West')])
3035
active = fields.Boolean(default=True)
31-
status = fields.Selection(
36+
state = fields.Selection(
3237
copy=False,
3338
readonly=True,
3439
default='new',
35-
string='Status',
40+
string='States',
3641
selection=[
3742
('new', 'New'),
3843
('offer_received', 'Offer Received'),
@@ -42,22 +47,22 @@ class EstateProperty(models.Model):
4247
)
4348

4449
def action_set_sold(self):
45-
if (self.state != "Cancelled"):
46-
self.state = "Sold"
50+
if self.state != "cancelled":
51+
self.state = "sold"
4752
else:
4853
raise UserError("A cancelled property can not be sold")
4954
return True
5055

5156
def action_set_cancelled(self):
52-
if (self.state != "Sold"):
53-
self.state = "Cancelled"
57+
if (self.state != "sold"):
58+
self.state = "cancelled"
5459
else:
5560
raise UserError("A sold property can not be cancelled")
5661
return True
5762

58-
Property_Type_id = fields.Many2one('estate.property.type', string='Type')
59-
Buyer_id = fields.Many2one('res.partner', string='Buyer', copy=False)
60-
Salesman_id = fields.Many2one('res.users', string='Salesman', default=lambda self: self.env.user)
63+
property_type_id = fields.Many2one('estate.property.type', string='Type')
64+
buyer_id = fields.Many2one('res.partner', string='Buyer', copy=False)
65+
salesman_id = fields.Many2one('res.users', string='Salesman', default=lambda self: self.env.user)
6166
tags_ids = fields.Many2many('estate.property.tags', string='Tags')
6267
offer_ids = fields.One2many("estate.property.offer", "property_id", string="offer")
6368
total_area = fields.Integer(string='Total Area(m2)', compute='_compute_total_area', store=True)
@@ -72,10 +77,11 @@ def _compute_total_area(self):
7277
def _compute_best_price(self):
7378
for record in self:
7479
if record.offer_ids:
75-
record.best_price = max(record.offer_ids.mapped('price'))
76-
else:
77-
record.best_price = 0.0
78-
80+
record.best_price = max(record.offer_ids.mapped('price')) if record.offer_ids else 0
81+
# if record.offer_ids:
82+
# record.best_price = max(record.offer_ids.mapped('price'))
83+
# else:
84+
# record.best_price = 0.0
7985
@api.onchange('garden')
8086
def _onchange_garden(self):
8187
if self.garden:

estate/models/estate_property_offer.py

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
class EstatePropertyOffer(models.Model):
77
_name = 'estate.property.offer'
88
_description = 'Estate Property Offer'
9+
_order = 'price desc'
910

1011
price = fields.Float(string='price', required=True)
1112
state = fields.Selection(selection=[('accepted', 'Accepted'),
@@ -14,7 +15,6 @@ class EstatePropertyOffer(models.Model):
1415
copy=False,
1516
default='accepted',
1617
)
17-
1818
validity = fields.Integer(string='Validity(days)', default=7)
1919
partner_id = fields.Many2one('res.partner', string='Partner', required=True)
2020
property_id = fields.Many2one('estate.property', required=True)
@@ -23,11 +23,8 @@ class EstatePropertyOffer(models.Model):
2323
@api.depends('validity', 'create_date')
2424
def _compute_date_deadline(self):
2525
for offer in self:
26-
if offer.create_date:
27-
create_date = offer.create_date.date()
28-
else:
29-
create_date = fields.Date.today()
30-
offer.date_deadline = create_date + relativedelta(days=offer.validity)
26+
if not offer.create_date:
27+
offer.date_deadline = fields.Date.today() + relativedelta(days=offer.validity)
3128

3229
def action_accept(self):
3330
for offer in self:

estate/models/estate_property_tags.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,5 +4,6 @@
44
class PropertyTypeTags(models.Model):
55
_name = 'estate.property.tags'
66
_description = 'Estate Property Tags'
7+
_order = 'name'
78

8-
name = fields.Char(string='tags', required=True)
9+
name = fields.Char(required=True)

estate/models/estate_property_type.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,5 +4,8 @@
44
class PropertyType(models.Model):
55
_name = 'estate.property.type'
66
_description = 'Estate Property Type'
7+
_order = 'sequence, name'
78

89
name = fields.Char(required=True)
10+
property_ids = fields.One2many('estate.property', 'property_type_id', string='Properties')
11+
sequence = fields.Integer(string="Sequence", default=10)

estate/views/estate_property_tags_view.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,4 +26,4 @@
2626
</form>
2727
</field>
2828
</record> -->
29-
</odoo>
29+
</odoo>
Lines changed: 37 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,39 @@
11
<?xml version="1.0"?>
22
<odoo>
3-
<record id="estate_property_type_action" model="ir.actions.act_window">
4-
<field name="name">Property Type</field>
5-
<field name="res_model">estate.property.type</field>
6-
<field name="view_mode">list,form</field>
7-
</record>
8-
</odoo>
3+
<record id="estate_property_type_action" model="ir.actions.act_window">
4+
<field name="name">Property Type</field>
5+
<field name="res_model">estate.property.type</field>
6+
<field name="view_mode">list,form</field>
7+
</record>
8+
<record id="estate_property_type_list" model="ir.ui.view">
9+
<field name="name">estate.property.list</field>
10+
<field name="model">estate.property.type</field>
11+
<field name="arch" type="xml">
12+
<list string="Property_type">
13+
<field name ="sequence" widget="handle"/>
14+
<field name="name"/>
15+
<field name="property_ids" widget="one2many_list" mode="list"/>
16+
</list>
17+
</field>
18+
</record>
19+
<record id="estate_property_type_form" model="ir.ui.view">
20+
<field name="name">estate.property.type.form</field>
21+
<field name="model">estate.property.type</field>
22+
<field name="arch" type="xml">
23+
<form string="Property Type">
24+
<sheet>
25+
<group>
26+
<field name="name"/>
27+
<field name="property_ids" widget="one2many_list" mode="list,form">
28+
<list editable="bottom">
29+
<field name="name"/>
30+
<field name="expected_price"/>
31+
<field name="state"/>
32+
</list>
33+
</field>
34+
</group>
35+
</sheet>
36+
</form>
37+
</field>
38+
</record>
39+
</odoo>

estate/views/estate_property_views.xml

Lines changed: 77 additions & 74 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
<field name="res_model">estate.property</field>
66
<field name="view_mode">list,form</field>
77
</record>
8+
89
<record id="estate_property_view_list" model="ir.ui.view">
910
<field name="name">estate.property.list</field>
1011
<field name="model">estate.property</field>
@@ -19,90 +20,92 @@
1920
<field name="living_area"/>
2021
<field name="total_area"/>
2122
<field name="active"/>
22-
<field name="Property_Type_id"/>
23-
<field name="Salesman_id"/>
23+
<field name="property_type_id"/>
24+
<field name="salesman_id"/>
2425
<field name="best_price"/>
2526
<field name="state"/>
2627
</list>
2728
</field>
2829
</record>
30+
2931
<record id="estate_property_view_form" model="ir.ui.view">
3032
<field name="name">estate.property.form</field>
3133
<field name="model">estate.property</field>
3234
<field name="arch" type="xml">
33-
<form string="Property Form">
34-
<sheet>
35-
<header>
36-
<button name="action_set_sold" type="object" string="Sold"/>
37-
<button name="action_set_cancelled" type="object" string="Cancel"/>
38-
</header>
39-
<div class="oe_title">
40-
<h1>
41-
<field name="name"/>
42-
</h1>
43-
</div>
44-
<seperator/>
45-
<group>
46-
<group>
47-
<field name="state"/>
48-
<field name="Property_Type"/>
49-
<field name="postcode"/>
50-
<field name="date_availability"/>
51-
</group>
52-
<group>
53-
<field name="expected_price"/>
54-
<field name="best_price"/>
55-
<field name="selling_price"/>
56-
</group>
57-
</group>
58-
<notebook>
59-
<page string="Description">
60-
<group>
61-
<field name="description"/>
62-
<field name="bedrooms"/>
63-
<field name="living_area"/>
64-
<field name="facades"/>
65-
<field name="garage"/>
66-
<field name="garden"/>
67-
<field name="garden_area"/>
68-
<field name="garden_orientation"/>
69-
<field name="active"/>
70-
<field name="tags_ids" widget="many2many_tags"/>
71-
<field name="total_area" readonly="1"/>
72-
<field name="best_price" readonly="1"/>
73-
</group>
74-
</page>
75-
<page string="Other Info">
76-
<group>
77-
<field name="Salesman_id"/>
78-
<field name="Buyer_id"/>
79-
</group>
80-
</page>
81-
<page string="Offers">
82-
<field name ="offer_ids">
83-
<list>
84-
<field name="partner_id"/>
85-
<field name="price"/>
86-
<field name="state"/>
87-
<field name="validity"/>
88-
<field name="date_deadline"/>
89-
<button name="action_accept" type="object" icon="fa-check" title="Accept"/>
90-
<button name="action_refuse" type="object" icon="fa-times" title="Refuse"/>
91-
</list>
92-
<form>
93-
<field name="partner_id"/>
94-
<field name="price"/>
95-
<field name="state"/>
96-
<field name="validity"/>
97-
<field name="date_deadline"/>
98-
</form>
99-
</field>
100-
</page>
101-
</notebook>
102-
</sheet>
103-
</form>
35+
<form string="Property Form">
36+
<sheet>
37+
<header>
38+
<button name="action_set_sold" type="object" string="Sold"/>
39+
<button name="action_set_cancelled" type="object" string="Cancel"/>
40+
<field name="state" widget="statusbar" statusbar_visible="new,offer_received,offer_accepted,sold"/>
41+
</header>
42+
<div class="oe_title">
43+
<h1>
44+
<field name="name"/>
45+
</h1>
46+
</div>
47+
<seperator/>
48+
<group>
49+
<group>
50+
<field name="property_type"/>
51+
<field name="postcode"/>
52+
<field name="date_availability"/>
53+
</group>
54+
<group>
55+
<field name="expected_price"/>
56+
<field name="best_price"/>
57+
<field name="selling_price"/>
58+
</group>
59+
</group>
60+
<notebook>
61+
<page string="Description">
62+
<group>
63+
<field name="description"/>
64+
<field name="bedrooms"/>
65+
<field name="living_area"/>
66+
<field name="facades"/>
67+
<field name="garage"/>
68+
<field name="garden"/>
69+
<field name="garden_area"/>
70+
<field name="garden_orientation"/>
71+
<field name="active"/>
72+
<field name="tags_ids" widget="many2many_tags"/>
73+
<field name="total_area" readonly="1"/>
74+
<field name="best_price" readonly="1"/>
75+
</group>
76+
</page>
77+
<page string="Offers">
78+
<field name ="offer_ids" widget="one2many_list" mode="list,form">
79+
<list editable="bottom">
80+
<field name="partner_id"/>
81+
<field name="price"/>
82+
<field name="state"/>
83+
<field name="validity"/>
84+
<field name="date_deadline"/>
85+
<button name="action_accept" type="object" icon="fa-check" title="Accept"/>
86+
<button name="action_refuse" type="object" icon="fa-times" title="Refuse"/>
87+
</list>
88+
<form>
89+
<field name="partner_id"/>
90+
<field name="price"/>
91+
<field name="state"/>
92+
<field name="validity"/>
93+
<field name="date_deadline"/>
94+
</form>
95+
</field>
96+
</page>
97+
<page string="Other Info">
98+
<group>
99+
<field name="salesman_id"/>
100+
<field name="buyer_id"/>
101+
</group>
102+
</page>
103+
</notebook>
104+
</sheet>
105+
</form>
104106
</field>
105107
</record>
108+
106109
<record id="estate_property_view_search" model="ir.ui.view">
107110
<field name="name">estate.property.views.search</field>
108111
<field name="model">estate.property</field>
@@ -112,7 +115,7 @@
112115
<field name="living_area"/>
113116
<separator/>
114117
<filter string="Archived" name="active" domain="[('active', '=', False)]"/>
115-
<filter string="status" name="status" domain="[('status', 'in', ('new', 'offer_received'))]"/>
118+
<filter string="state" name="state" domain="[('state', 'in', ('new', 'offer_received'))]"/>
116119
<filter string="active" name="group_active" context="{'group_by':'active'}"/>
117120
<filter string="postcode" name="group_active" context="{'group_by':'postcode'}"/>
118121
<filter string="bedrooms" name="group_bedrooms" context="{'group_by':'bedrooms'}"/>

estate/views/menu_views.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,4 +9,4 @@
99
<menuitem id="estate_tags_model_menu_action" action="estate_property_tags_action"/>
1010
</menuitem>
1111
</menuitem>
12-
</odoo>
12+
</odoo>

0 commit comments

Comments
 (0)