Skip to content

Commit 167babd

Browse files
committed
[IMP] estate: Implement list, form, and search views with grouping functionality
-Developed and integrated list, form, and search views for the Real Estate module -Including support for group-by operations.
1 parent 0f04867 commit 167babd

File tree

6 files changed

+111
-78
lines changed

6 files changed

+111
-78
lines changed

estate/__init__.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,2 @@
11
from . import models
22

3-

estate/models/__init__.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1 @@
11
from . import estate_property
2-

estate/models/estate_property.py

Lines changed: 25 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,36 +1,40 @@
11
from odoo import models, fields
2+
from dateutil.relativedelta import relativedelta
23

34

45
class EstateProperty(models.Model):
56
_name = "estate.property"
67
_description = "Real Estate Property"
78

89
name = fields.Char(required=True)
9-
description = fields.Text()
10-
pincode = fields.Char()
11-
date_availability = fields.Date()
10+
description = fields.Text("Description")
11+
postcode = fields.Char("Postcode", required=True)
12+
date_availability = fields.Date("Availability Date", default=fields.Date.today()+relativedelta(months=3))
1213
expected_price = fields.Float(required=True)
13-
selling_price = fields.Float(readonly=True, copy=False)
14-
bedrooms = fields.Integer(default=2)
15-
living_area = fields.Integer()
16-
facades = fields.Integer()
17-
garage = fields.Boolean()
18-
garden = fields.Boolean()
19-
garden_area = fields.Integer(string="Garden Area (sqft)")
14+
selling_price = fields.Float("Selling Price", readonly=True)
15+
bedrooms = fields.Integer("Bedrooms", default=2)
16+
living_area = fields.Integer("living_area(sqm)")
17+
facades = fields.Integer("Facades")
18+
garage = fields.Boolean("Garage")
19+
garden = fields.Boolean("Garden")
20+
garden_area = fields.Integer("Garden Area sqm")
2021
garden_orientation = fields.Selection([
2122
('north', 'North'),
2223
('south', 'South'),
2324
('east', 'East'),
2425
('west', 'West'),
2526
])
26-
active=fields.Boolean(default= False)
27-
state=fields.Selection(
28-
selection=[
29-
('new', 'New'),
30-
('offer_received', 'Offer Received'),
31-
('offer_accepted', 'Offer Accepted'),
32-
('sold', 'Sold'),
33-
('cancelled', 'Cancelled')
34-
]
35-
)
36-
27+
state = fields.Selection(
28+
[
29+
('new', 'New'),
30+
('offer_received', 'Offer Received'),
31+
('offer_accepted', 'Offer Accepted'),
32+
('sold', 'Sold'),
33+
('canceled', 'Canceled'),
34+
],
35+
string="Status",
36+
required=True,
37+
copy=False,
38+
default='new'
39+
)
40+
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
1-
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
2-
estsate.access_estate_property,access_estate_property,model_estate_property,base.group_user,1,1,1,1
1+
id,name,model_id/id,group_id/id,perm_read,perm_write,perm_create,perm_unlink
2+
estate.access_estate_property,access_estate_property,model_estate_property,base.group_user,1,1,1,1

estate/views/estate_menus.xml

Lines changed: 19 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,21 @@
11
<odoo>
2-
<menuitem id="estate_menu_root" name="Real Estate"/>
3-
<menuitem id="estate_advertisement_menu" name="Advertisements" parent="estate_menu_root"/>
4-
<menuitem id="estate_property_menu_action"
5-
action="estate_property_action"
6-
parent="estate_advertisement_menu"/>
2+
3+
<menuitem id="estate_root_menu" name="Estate"/>
4+
5+
<menuitem id="estate_advertisement_menu"
6+
name="Advertisements"
7+
parent="estate_root_menu"/>
8+
<menuitem id="estate_property_menu"
9+
name="Properties"
10+
parent="estate_advertisement_menu"
11+
action="action_estate_property"/>
12+
<menuitem id="estate_property_list_menu"
13+
name="List"
14+
parent="estate_property_menu"
15+
action="action_estate_property_list_only"/>
16+
17+
<menuitem id="estate_property_form_menu"
18+
name="Form"
19+
parent="estate_property_menu"
20+
action="estate_property_form_action"/>
721
</odoo>
Lines changed: 65 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -1,73 +1,90 @@
1+
12
<odoo>
2-
<record id="estate_property_search" model="ir.ui.view">
3-
<field name="model">estate.property</field>
4-
<field name="arch" type="xml">
5-
<search string="Search Properties">
6-
<field name="pincode"/>
7-
<field name="bedrooms"/>
8-
<field name="living_area"/>
9-
<field name="expected_price"/>
10-
<field name="selling_price"/>
11-
<field name="facades"/>
12-
<filter string="Available" name="group_by_available" domain="['|' ,('state', '=', 'new'), ('state', '=', 'offer_received')]"/>
13-
</search>
14-
</field>
15-
</record>
3+
164

17-
<record id="estate_property_list" model="ir.ui.view">
5+
<record id="estate_property_list_view" model="ir.ui.view">
6+
<field name="name">estate.property.list</field>
187
<field name="model">estate.property</field>
198
<field name="arch" type="xml">
20-
<list string="List">
9+
<list string="Properties">
2110
<field name="name"/>
22-
<field name="pincode"/>
23-
<field name="bedrooms"/>
24-
<field name="living_area"/>
25-
<field name="selling_price"/>
26-
<field name="date_availability"/>
11+
<field name="postcode"/>
2712
</list>
2813
</field>
2914
</record>
3015

31-
<record id="estate_property_form" model="ir.ui.view">
16+
<record id="action_estate_property_list_only" model="ir.actions.act_window">
17+
<field name="name">Properties (List)</field>
18+
<field name="res_model">estate.property</field>
19+
<field name="view_mode">list</field>
20+
<field name="view_id" ref="estate_property_list_view"/>
21+
</record>
22+
23+
<record id="estate_property_form_view" model="ir.ui.view">
24+
<field name="name">estate.property.form</field>
3225
<field name="model">estate.property</field>
3326
<field name="arch" type="xml">
34-
<form string="test">
27+
<form string="Property">
3528
<sheet>
36-
<group>
29+
<h1>
30+
<field name="name"/>
31+
</h1>
32+
<group>
3733
<group>
38-
<field name="name"/>
34+
<field name="postcode"/>
3935
<field name="date_availability"/>
40-
</group>
41-
<group>
4236
<field name="expected_price"/>
4337
<field name="selling_price"/>
38+
<field name="bedrooms"/>
39+
<field name="living_area"/>
40+
<field name="facades"/>
41+
<field name="garage"/>
42+
<field name="garden"/>
43+
<field name="garden_area"/>
44+
<field name="garden_orientation"/>
4445
</group>
4546
</group>
46-
<notebook>
47-
<page string="Description">
48-
<group>
49-
<field name="description"/>
50-
<field name="pincode"/>
51-
<field name="bedrooms"/>
52-
<field name="living_area"/>
53-
<field name="facades"/>
54-
<field name="garage"/>
55-
<field name="garden"/>
56-
<field name="garden_area"/>
57-
<field name="garden_orientation"/>
58-
<field name="state"/>
59-
</group>
60-
</page>
61-
</notebook>
6247
</sheet>
6348
</form>
6449
</field>
6550
</record>
6651

67-
<record id="estate_property_action" model="ir.actions.act_window">
68-
<field name="name">Properties</field>
52+
<record id="estate_property_form_action" model="ir.actions.act_window">
53+
<field name="name">Property(Form)</field>
6954
<field name="res_model">estate.property</field>
70-
<field name="view_mode">list,form</field>
71-
<field name="context">{"search_default_available":1}</field>
55+
<field name="view_mode">form</field>
56+
<field name="view_id" ref="estate_property_form_view"/>
57+
</record>
58+
59+
60+
<record id="estate_property_search_view" model="ir.ui.view">
61+
<field name="name">estate.property.search</field>
62+
<field name="model">estate.property</field>
63+
<field name="arch" type="xml">
64+
<search string="Search Properties">
65+
<field name="name"/>
66+
<field name="postcode"/>
67+
68+
<filter name="filter_available"
69+
string="Available"
70+
domain="['|', ('state', '=', 'new'), ('state', '=', 'offer_received')]"/>
71+
<separator/>
72+
<filter name="group_by_postcode"
73+
string="Group by Postcode"
74+
context="{'group_by': 'postcode'}"/>
75+
76+
</search>
77+
</field>
7278
</record>
73-
</odoo>
79+
80+
81+
82+
83+
<record id="action_estate_property" model="ir.actions.act_window">
84+
<field name="name">Properties</field>
85+
<field name="res_model">estate.property</field>
86+
<field name="view_mode">list,form</field>
87+
</record>
88+
89+
90+
</odoo>

0 commit comments

Comments
 (0)