Skip to content

Commit 1e865d3

Browse files
committed
[ADD] estate:add basic menus, form and list views
- Created estate property form and list view - Created search bar fields Chapter 5: Finally, Some UI To Play With Chapter 6: Basic Views
1 parent 838d9b8 commit 1e865d3

File tree

4 files changed

+126
-5
lines changed

4 files changed

+126
-5
lines changed

estate/__manifest__.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,9 @@
44
'summary': 'This is the Real Estate Advertisement module',
55
'description': 'This is the Real Estate Advertisement module.',
66
'data': [
7-
'security/ir.model.access.csv'
7+
'security/ir.model.access.csv',
8+
'views/estate_property_views.xml',
9+
'views/estate_menus.xml'
810
],
911
'author': 'Milan Bavishi',
1012
'license': 'LGPL-3'

estate/models/estate_property.py

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,19 @@
11
from odoo import fields, models
2+
from dateutil.relativedelta import relativedelta
23

34

45
class EstateProperty(models.Model):
56
_name = "estate_property"
67
_description = "This is the table of real estate property data"
78

8-
name = fields.Char(required=True)
9+
name = fields.Char(required=True,default="Unknown")
910
description = fields.Text()
1011
postcode = fields.Char()
11-
date_availability = fields.Date()
12+
date_availability = fields.Date(copy=False,
13+
default=lambda self: fields.Date.today() + relativedelta(month=3))
1214
expected_price = fields.Float(required=True)
13-
selling_price = fields.Float()
14-
bedrooms = fields.Integer()
15+
selling_price = fields.Float(readonly=True,copy=False)
16+
bedrooms = fields.Integer(default=2)
1517
living_area = fields.Integer()
1618
facades = fields.Integer()
1719
garage = fields.Boolean()
@@ -23,3 +25,15 @@ class EstateProperty(models.Model):
2325
('south', 'South'),
2426
('east', 'East'),
2527
('west', 'West')])
28+
state = fields.Selection(
29+
string='State',
30+
default='new',
31+
required=True,
32+
copy=False,
33+
selection=[('new', 'New'),
34+
('offer received', 'Offer Received'),
35+
('offer accepted', 'Offer accepted'),
36+
('sold', 'Sold'),
37+
('cancelled', 'Cancelled')]
38+
)
39+
active = fields.Boolean()

estate/views/estate_menus.xml

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
<odoo>
2+
<data>
3+
<menuitem
4+
id="estate_property_menu_root"
5+
name="Estate Property"/>
6+
<menuitem
7+
id="estate_property_advertisements"
8+
name="Advertisements"
9+
parent="estate_property_menu_root"/>
10+
<menuitem
11+
id="estate_property_properties"
12+
name="Properties"
13+
parent="estate_property_advertisements"
14+
action="estate_property_action"/>
15+
</data>
16+
</odoo>
Lines changed: 89 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,89 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<odoo>
3+
<record id="estate_property_action" model="ir.actions.act_window">
4+
<field name="name">Estate Property</field>
5+
<field name="res_model">estate_property</field>
6+
<field name="view_mode">list,form</field>
7+
</record>
8+
9+
<record id="estate_property_list" model="ir.ui.view">
10+
<field name="name">Estate_Property_list</field>
11+
<field name="model">estate_property</field>
12+
<field name="arch" type="xml">
13+
<list>
14+
<field name="name"/>
15+
<field name="postcode"/>
16+
<field name="bedrooms"/>
17+
<field name="living_area"/>
18+
<field name="facades"/>
19+
<field name="garage"/>
20+
<field name="garden"/>
21+
<field name="garden_area"/>
22+
<field name="garden_orientation"/>
23+
<field name="state"/>
24+
<field name="date_availability"/>
25+
<field name="active"/>
26+
<field name="description"/>
27+
<field name="expected_price"/>
28+
<field name="selling_price"/>
29+
</list>
30+
</field>
31+
</record>
32+
33+
<record id="estate_property_view_form" model="ir.ui.view">
34+
<field name="name">Estate_Property_view_form</field>
35+
<field name="model">estate_property</field>
36+
<field name="arch" type="xml">
37+
<form>
38+
<sheet>
39+
<div>
40+
<h1>
41+
<field name="name"/>
42+
</h1>
43+
</div>
44+
<group>
45+
<group>
46+
<field name="postcode" string="Postcode"/>
47+
<field name="date_availability" string="Available Form"/>
48+
</group>
49+
<group>
50+
<field name="expected_price" string="Expected Price"/>
51+
<field name="selling_price" string="Selling Price"/>
52+
</group>
53+
</group>
54+
<notebook>
55+
<page string="Description">
56+
<group>
57+
<field name="description" string="Description"/>
58+
<field name="bedrooms" string="Bedrooms"/>
59+
<field name="living_area" string="Living Area(sqm)"/>
60+
<field name="facades" string="Facades"/>
61+
<field name="garage" string="Garage"/>
62+
<field name="garden" string="Garden"/>
63+
<field name="garden_area" string="Garden Area(sqm)"/>
64+
<field name="garden_orientation" string="Garden Orientation"/>
65+
<field name="state" string="state"/>
66+
<field name="active" string="active"/>
67+
</group>
68+
</page>
69+
</notebook>
70+
</sheet>
71+
</form>
72+
</field>
73+
</record>
74+
75+
<record id="estate_property_search_view" model="ir.ui.view">
76+
<field name="name">Estate_Property_search</field>
77+
<field name="model">estate_property</field>
78+
<field name="arch" type="xml">
79+
<search>
80+
<field name="name"/>
81+
<field name="postcode"/>
82+
<field name="expected_price"/>
83+
<field name="bedrooms"/>
84+
<field name="living_area"/>
85+
<field name="facades"/>
86+
</search>
87+
</field>
88+
</record>
89+
</odoo>

0 commit comments

Comments
 (0)