Skip to content

Commit db6c0c5

Browse files
committed
[IMP] chapter6-estate: added custom list, form and search views
1 parent a2976ed commit db6c0c5

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)