Skip to content

Commit 274a152

Browse files
committed
[ADD] training: chapter 1-6
1 parent a3755e1 commit 274a152

File tree

6 files changed

+140
-6
lines changed

6 files changed

+140
-6
lines changed

estate/__manifest__.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,4 +8,9 @@
88
'version': '1.0',
99
'application': True,
1010
'installable': True,
11+
'data': [
12+
'security/ir.model.access.csv',
13+
'views/estate_menus_views.xml',
14+
'views/estate_property_views.xml',
15+
]
1116
}

estate/models/estate_property.py

Lines changed: 21 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,18 @@
11
from odoo import fields, models
2+
from datetime import datetime, timedelta
3+
from dateutil.relativedelta import relativedelta
24

35
class EstateProperty(models.Model):
46
_name = "estate.property"
57
_description = "Estate Test"
68

7-
name = fields.Char(string="Title")
8-
description = fields.Text()
9+
name = fields.Char(string="Name", required=True)
10+
description = fields.Char()
911
postcode = fields.Char()
10-
date_availability = fields.Date()
11-
expected_price = fields.Float()
12-
selling_price = fields.Float()
13-
bedrooms = fields.Integer()
12+
date_availability = fields.Date(String="Available From", copy=False, default=lambda self: (datetime.today() + relativedelta(months=3)).date())
13+
expected_price = fields.Float(required=True)
14+
selling_price = fields.Float(readonly=True, copy=False)
15+
bedrooms = fields.Integer(default=2)
1416
living_area = fields.Integer()
1517
facades = fields.Integer()
1618
garage = fields.Boolean()
@@ -24,4 +26,17 @@ class EstateProperty(models.Model):
2426
('west', 'West')
2527
],
2628
string="Garden Orientation"
29+
)
30+
state = fields.Selection(
31+
[
32+
('new', 'New'),
33+
('offer_received', 'Offer Received'),
34+
('offer_accepted', 'Offer Accepted'),
35+
('sold', 'Sold'),
36+
('cancelled', 'Cancelled')
37+
],
38+
string="Status",
39+
required=True,
40+
copy=False,
41+
default='new'
2742
)

estate/security/ir.model.access.csv

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
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,estate.model_estate_property,base.group_user,1,1,1,1

estate/static/description/city.png

6.93 KB
Loading

estate/views/estate_menus_views.xml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
<odoo>
2+
<data>
3+
<menuitem id="test_menu_root" name="Real Estate" web_icon="estate,static/description/city.png"/>
4+
<menuitem id="test_first_level_menu" name="Advertisements" parent="test_menu_root"/>
5+
<menuitem id="test_model_menu_action" name="Estate Property" parent="test_first_level_menu" action="estate_property"/>
6+
</data>
7+
</odoo>
Lines changed: 105 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,105 @@
1+
<odoo>
2+
<data>
3+
<!-- List Section: Opens when the app is loaded -->
4+
<record id="view_estate_property_list" model="ir.ui.view">
5+
<field name="model">estate.property</field>
6+
<field name="arch" type="xml">
7+
<list>
8+
<field name="name"/>
9+
<field name="description"/>
10+
<field name="postcode"/>
11+
<field name="date_availability"/>
12+
<field name="expected_price"/>
13+
<field name="selling_price"/>
14+
<field name="bedrooms"/>
15+
<field name="living_area"/>
16+
<field name="facades"/>
17+
<field name="garage"/>
18+
<field name="garden"/>
19+
<field name="garden_area"/>
20+
<field name="garden_orientation"/>
21+
<field name="state"/>
22+
</list>
23+
</field>
24+
</record>
25+
26+
<!-- Form Section: Opens when any record is clicked -->
27+
<record id="view_estate_property_form" model="ir.ui.view">
28+
<field name="name">estate.property.form</field>
29+
<field name="model">estate.property</field>
30+
<field name="arch" type="xml">
31+
<form>
32+
<sheet>
33+
<!-- Title -->
34+
<h1>
35+
<field name="name" placeholder="e.g. Swagat Afford U101"/>
36+
</h1>
37+
38+
<!-- Top Section -->
39+
<group>
40+
<group>
41+
<field name="postcode"/>
42+
<field name="date_availability"/>
43+
</group>
44+
<group>
45+
<field name="expected_price"/>
46+
<field name="selling_price"/>
47+
</group>
48+
</group>
49+
50+
<!-- Tabbed Section -->
51+
<notebook>
52+
<page string="Description">
53+
<group>
54+
<field name="description"/>
55+
<field name="bedrooms"/>
56+
<field name="living_area"/>
57+
<field name="facades"/>
58+
<field name="garage"/>
59+
<field name="garden"/>
60+
<field name="garden_area"/>
61+
<field name="garden_orientation"/>
62+
</group>
63+
</page>
64+
</notebook>
65+
</sheet>
66+
</form>
67+
</field>
68+
</record>
69+
70+
<!-- Search Section -->
71+
<record id="view_estate_property_search" model="ir.ui.view">
72+
<field name="name">estate.property.search</field>
73+
<field name="model">estate.property</field>
74+
<field name="arch" type="xml">
75+
<search string="Search Properties">
76+
77+
<!-- Basic Searchable Fields -->
78+
<field name="name" string="Title" />
79+
<field name="postcode"/>
80+
<field name="expected_price" />
81+
<field name="selling_price" />
82+
<field name="bedrooms" />
83+
<field name="garden" />
84+
85+
<!-- Filter by -->
86+
<filter name="available" string="Available" domain="['|', ('state', '=', 'new'), ('state', '=', 'offer_received')]"/>
87+
<filter name="has_garden" string="Has Garden" domain="[('garden', '=', True)]"/>
88+
<filter name="has_two_bedrooms" string="Has 2 Bedrooms" domain="[('bedrooms', '=', 2)]"/>
89+
90+
<!-- Group by -->
91+
<group expand="1" string="Group By">
92+
<filter name="group_by_postcode" string="Post Code" context="{'group_by': 'postcode'}" />
93+
<filter name="group_by_garden" string="Garden" context="{'group_by': 'garden'}" />
94+
</group>
95+
</search>
96+
</field>
97+
</record>
98+
99+
<record id="estate_property" model="ir.actions.act_window">
100+
<field name="name">Estate Entry</field>
101+
<field name="res_model">estate.property</field>
102+
<field name="view_mode">list,form</field>
103+
</record>
104+
</data>
105+
</odoo>

0 commit comments

Comments
 (0)