Skip to content

Commit c260137

Browse files
committed
[IMP] estate: Added custom list, form and search views
chapter 6 : Created list, form, and search views for the estate.property model. Added menu items and actions to open the property views in the Real Estate module. Created new model estate.property.type and added its list & form views, menu, and access rights.
1 parent 22d2d17 commit c260137

File tree

6 files changed

+126
-3
lines changed

6 files changed

+126
-3
lines changed

estate/models/__init__.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,2 @@
11
from . import estate_property # noqa: F401
2+
from . import estate_property_type

estate/models/estate_property.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,4 +50,8 @@ class EstateProperty(models.Model):
5050
required=True,
5151
copy=False,
5252
default='new',
53-
)
53+
)
54+
property_type_id = fields.Many2one(
55+
"estate.property.type",
56+
string="Property Type",
57+
)
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
from odoo import models, fields
2+
3+
4+
class EstatePropertyType(models.Model):
5+
_name = "estate.property.type"
6+
_description = "Real Estate Property Type"
7+
8+
name = fields.Char(string="Name", required=True)
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,3 @@
11
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
22
access_estate_property_user,access_estate_property_user,model_estate_property,base.group_user,1,1,1,1
3+
access_estate_property_type_user,access_estate_property_type_user,model_estate_property_type,base.group_user,1,1,1,1

estate/views/estate_menus.xml

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,12 @@
11
<!-- /home/odoo/odoo19/tutorials/estate/views/estate_menus.xml -->
22
<odoo>
33
<menuitem id="menu_estate_root" name="Real Estate"/>
4-
<menuitem id="menu_estate_advertisements" name="Advertisements" parent="menu_estate_root"/>
5-
<menuitem id="menu_estate_properties" name="Properties" parent="menu_estate_advertisements" action="action_estate_property"/>
4+
<menuitem id="menu_estate_advertisements" name="Advertisements" parent="menu_estate_root" sequence="10"/>
5+
<menuitem id="menu_estate_properties" name="Properties" parent="menu_estate_advertisements" action="action_estate_property" sequence="10"/>
6+
<!-- Settings / Property Types -->
7+
<menuitem id="menu_estate_settings" name="Settings" parent="menu_estate_root" sequence="20"/>
8+
<menuitem id="menu_estate_property_types" name="Property Types"
9+
parent="menu_estate_settings"
10+
action="action_estate_property_type"
11+
sequence="10"/>
612
</odoo>

estate/views/estate_property_views.xml

Lines changed: 103 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,12 +14,115 @@
1414
<field name="arch" type="xml">
1515
<list string="Properties">
1616
<field name="name"/>
17+
<field name="property_type_id"/>
1718
<field name="postcode"/>
1819
<field name="expected_price"/>
1920
<field name="selling_price"/>
2021
<field name="bedrooms"/>
2122
<field name="living_area"/>
23+
<field name="date_availability"/>
2224
</list>
2325
</field>
2426
</record>
27+
28+
<record id="view_estate_property_form" model="ir.ui.view">
29+
<field name="name">estate.property.form</field>
30+
<field name="model">estate.property</field>
31+
<field name="arch" type="xml">
32+
<form string="Properties">
33+
<sheet>
34+
<h1>
35+
<field name="name" nolabel="True"/>
36+
</h1>
37+
38+
<group>
39+
<group>
40+
<field name="property_type_id"/>
41+
<field name="postcode"/>
42+
<field name="date_availability" string="Available From"/>
43+
</group>
44+
<group>
45+
<field name="expected_price" string="Expected Price"/>
46+
<field name="selling_price" string="Selling Price"/>
47+
</group>
48+
</group>
49+
50+
<notebook>
51+
<page string="Description">
52+
<group>
53+
<field name="description"/>
54+
</group>
55+
<group>
56+
<group>
57+
<field name="bedrooms"/>
58+
<field name="living_area" string="Living Area (sqm)"/>
59+
<field name="facades"/>
60+
<field name="garage"/>
61+
</group>
62+
<group>
63+
<field name="garden"/>
64+
<field name="garden_area" string="Garden Area (sqm)"/>
65+
<field name="garden_orientation"/>
66+
</group>
67+
</group>
68+
</page>
69+
</notebook>
70+
71+
</sheet>
72+
</form>
73+
</field>
74+
</record>
75+
76+
<record id="view_estate_property_search" model="ir.ui.view">
77+
<field name="name">estate.property.search</field>
78+
<field name="model">estate.property</field>
79+
<field name="arch" type="xml">
80+
<search string="Search Properties">
81+
<!-- Quick search fields -->
82+
<field name="name" string="Title"/>
83+
<field name="property_type_id"/>
84+
<field name="postcode"/>
85+
<field name="expected_price"/>
86+
<field name="bedrooms"/>
87+
<field name="living_area" string="Living Area (sqm)"/>
88+
<field name="facades"/>
89+
<filter name="available" string="Available"
90+
domain="['|', ('state', '=', 'new'), ('state', '=', 'offer_received')]" />
91+
<filter name="group_by_postcode" string="Postcode" context="{'group_by':'postcode'}" />
92+
</search>
93+
</field>
94+
</record>
95+
<!-- List view for property types -->
96+
<record id="view_estate_property_type_list" model="ir.ui.view">
97+
<field name="name">estate.property.type.list</field>
98+
<field name="model">estate.property.type</field>
99+
<field name="arch" type="xml">
100+
<tree string="Property Types">
101+
<field name="name"/>
102+
</tree>
103+
</field>
104+
</record>
105+
<!-- Form view for property types -->
106+
<record id="view_estate_property_type_form" model="ir.ui.view">
107+
<field name="name">estate.property.type.form</field>
108+
<field name="model">estate.property.type</field>
109+
<field name="arch" type="xml">
110+
<form string="Property Types">
111+
<sheet>
112+
<div class="oe_title">
113+
<label for="name" class="oe_edit_only"/>
114+
<h1>
115+
<field name="name" class="oe_inline"/>
116+
</h1>
117+
</div>
118+
</sheet>
119+
</form>
120+
</field>
121+
</record>
122+
<!-- Action for property types -->
123+
<record id="action_estate_property_type" model="ir.actions.act_window">
124+
<field name="name">Property Types</field>
125+
<field name="res_model">estate.property.type</field>
126+
<field name="view_mode">list,form</field>
127+
</record>
25128
</odoo>

0 commit comments

Comments
 (0)