Skip to content

Commit 70f2037

Browse files
committed
[IMP] estate: add list, form and search views to estate property
1 parent 0c570c8 commit 70f2037

File tree

4 files changed

+97
-19
lines changed

4 files changed

+97
-19
lines changed

estate/__manifest__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,5 +8,5 @@
88
'data/ir.model.access.csv',
99
'views/estate_property_views.xml',
1010
'views/estate_menus.xml',
11-
]
11+
],
1212
}

estate/data/ir.model.access.csv

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
11
id,name,model_id/id,group_id/id,perm_read,perm_write,perm_create,perm_unlink
2-
estate.access_estate_property,access_estate_property,estate.model_estate_property,base.group_user,1,1,1,1
2+
estate.access_estate_property,access_estate_property,estate.model_estate_property,base.group_user,1,1,1,1

estate/models/estate_property.py

Lines changed: 20 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,34 +1,37 @@
1-
from dateutil.relativedelta import relativedelta
2-
31
from odoo import fields, models
42

53

64
class EstateProperty(models.Model):
75
_name = 'estate.property'
86
_description = 'Property'
97

10-
name = fields.Char(required=True)
11-
description = fields.Text()
12-
postcode = fields.Char()
13-
date_availability = fields.Date(copy=False, default=fields.Date.today() + relativedelta(months=+3))
14-
expected_price = fields.Float(required=True)
15-
selling_price = fields.Float(readonly=True, copy=False)
16-
bedrooms = fields.Integer(default=2)
17-
living_area = fields.Integer()
18-
facades = fields.Integer()
19-
garage = fields.Boolean()
20-
garden = fields.Boolean()
21-
garden_area = fields.Integer()
8+
name = fields.Char('Title', required=True)
9+
description = fields.Text('Description')
10+
postcode = fields.Char('Postcode')
11+
date_availability = fields.Date(
12+
'Available From',
13+
copy=False,
14+
default=fields.Date.add(fields.Date.today(), months=+3),
15+
)
16+
expected_price = fields.Float('Expected Price', required=True)
17+
selling_price = fields.Float('Selling Price', readonly=True, copy=False)
18+
bedrooms = fields.Integer('Bedrooms', default=2)
19+
living_area = fields.Integer('Living Area (sqm)')
20+
facades = fields.Integer('Facades')
21+
garage = fields.Boolean('Garage')
22+
garden = fields.Boolean('Garden')
23+
garden_area = fields.Integer('Garden Area (sqm)')
2224
garden_orientation = fields.Selection(
23-
string='Type',
25+
string='Garden Orientation',
2426
selection=[
2527
('north', 'North'),
2628
('south', 'South'),
2729
('east', 'East'),
2830
('west', 'West'),
2931
],
32+
default='north',
3033
)
31-
active = fields.Boolean(default=True)
34+
active = fields.Boolean('Active', default=True)
3235
state = fields.Selection(
3336
string='State',
3437
selection=[
@@ -40,5 +43,5 @@ class EstateProperty(models.Model):
4043
],
4144
required=True,
4245
copy=False,
43-
default='new'
46+
default='new',
4447
)

estate/views/estate_property_views.xml

Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,80 @@
11
<?xml version="1.0" encoding="UTF-8"?>
22
<odoo>
3+
<record id="estate_property_view_search" model="ir.ui.view">
4+
<field name="name">estate.property.view.search</field>
5+
<field name="model">estate.property</field>
6+
<field name="priority">15</field>
7+
<field name="arch" type="xml">
8+
<search string="Search Properties">
9+
<field name="name" />
10+
<field name="postcode" />
11+
<field name="expected_price" />
12+
<field name="bedrooms" />
13+
<field name="living_area" />
14+
<field name="facades" />
15+
<filter string="Available" name="state"
16+
domain="['|', ('state', '=', 'new'), ('state', '=', 'offer_received')]" />
17+
<filter string="Postcode" name="postcode" context="{'group_by':'postcode'}" />
18+
</search>
19+
</field>
20+
</record>
21+
22+
<record id="estate_property_view_form" model="ir.ui.view">
23+
<field name="name">estate.property.form</field>
24+
<field name="model">estate.property</field>
25+
<field name="arch" type="xml">
26+
<form string="Property">
27+
<sheet>
28+
<group>
29+
<h1>
30+
<field name="name" />
31+
</h1>
32+
</group>
33+
<group>
34+
<group>
35+
<field name="postcode" />
36+
<field name="date_availability" />
37+
</group>
38+
<group>
39+
<field name="expected_price" />
40+
<field name="selling_price" />
41+
</group>
42+
</group>
43+
<notebook>
44+
<page string="Description">
45+
<group>
46+
<field name="description" />
47+
<field name="bedrooms" />
48+
<field name="living_area" />
49+
<field name="facades" />
50+
<field name="garage" />
51+
<field name="garden" />
52+
<field name="garden_area" />
53+
<field name="garden_orientation" />
54+
</group>
55+
</page>
56+
</notebook>
57+
</sheet>
58+
</form>
59+
</field>
60+
</record>
61+
62+
<record id="estate_property_view_tree" model="ir.ui.view">
63+
<field name="name">estate.property.list</field>
64+
<field name="model">estate.property</field>
65+
<field name="arch" type="xml">
66+
<list string="Channel">
67+
<field name="name" />
68+
<field name="postcode" />
69+
<field name="bedrooms" />
70+
<field name="living_area" />
71+
<field name="expected_price" />
72+
<field name="selling_price" />
73+
<field name="date_availability" />
74+
</list>
75+
</field>
76+
</record>
77+
378
<record id="estate_property_action" model="ir.actions.act_window">
479
<field name="name">Property</field>
580
<field name="res_model">estate.property</field>

0 commit comments

Comments
 (0)