Skip to content

Commit 68a0e8d

Browse files
committed
[ADD] estate: new module created
- New model 'property' created - Security: give read, write, create and unlink permissions to the group base.group_user. - Basic list, form views added
1 parent b16e643 commit 68a0e8d

File tree

6 files changed

+126
-0
lines changed

6 files changed

+126
-0
lines changed

estate/__init__.py

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
from . import models

estate/__manifest__.py

+14
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
{
2+
'name': 'Estate',
3+
'version': '0.1',
4+
'depends': ['base'],
5+
'summary': 'Estate module',
6+
'category': 'Tutorials/Estate',
7+
'application': True,
8+
'installable': True,
9+
'license': 'AGPL-3',
10+
'data': [
11+
'security/ir.model.access.csv',
12+
'views/estate_property_views.xml',
13+
]
14+
}

estate/models/__init__.py

+2
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
from . import property
2+

estate/models/property.py

+32
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
from dateutil.relativedelta import relativedelta
2+
from odoo import fields, models
3+
4+
5+
def _default_date_availability():
6+
return fields.Date.today() + relativedelta(months=3)
7+
8+
9+
class EstateProperty(models.Model):
10+
_name = 'estate.property'
11+
_description = "Estate Property"
12+
name = fields.Char(required=True)
13+
description = fields.Text()
14+
postcode = fields.Char()
15+
date_availability = fields.Date(copy=False,
16+
default=_default_date_availability,
17+
string='Available from')
18+
expected_price = fields.Float(required=True)
19+
selling_price = fields.Float(readonly=True, copy=False)
20+
bedrooms = fields.Integer(default=2)
21+
living_area = fields.Integer(string='Living area (sqm)')
22+
facades = fields.Integer()
23+
garage = fields.Boolean()
24+
garden = fields.Boolean()
25+
garden_area = fields.Integer(string='Garden area (sqm)')
26+
garden_orientation = fields.Selection(
27+
selection=[('north', 'North'), ('south', 'South'), ('east', 'East'), ('west', 'West')])
28+
active: bool = fields.Boolean(default=True)
29+
state = fields.Selection(copy=False, default='New', required=True,
30+
selection=[('New', 'New'), ('Offer Received', 'Offer Received'),
31+
('Offer Accepted', 'Offer Accepted'), ('Sold', 'Sold'),
32+
('Cancelled', 'Cancelled')])

estate/security/ir.model.access.csv

+2
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+
"access_estate_property","access_estate_property","model_estate_property","base.group_user",1,1,1,1
+75
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<odoo>
3+
<record id="estate_property_model_action" model="ir.actions.act_window">
4+
<field name="name">Properties</field>
5+
<field name="res_model">estate.property</field>
6+
<field name="view_mode">list,form</field>
7+
</record>
8+
9+
<menuitem id="estate_menu_root" name="Real Estate">
10+
<menuitem id="estate_first_level_menu" name="Advertisements">
11+
<menuitem id="estate_model_menu_action" action="estate_property_model_action"/>
12+
</menuitem>
13+
</menuitem>
14+
15+
<record id="estate_property_view_list" model="ir.ui.view">
16+
<field name="name">estate.property.list</field>
17+
<field name="model">estate.property</field>
18+
<field name="arch" type="xml">
19+
<list>
20+
<field name="name" string="Title"/>
21+
<field name="postcode"/>
22+
<field name="bedrooms"/>
23+
<field name="living_area"/>
24+
<field name="expected_price"/>
25+
<field name="selling_price"/>
26+
<field name="date_availability"/>
27+
</list>
28+
</field>
29+
</record>
30+
31+
<record id="estate_property_view_form" model="ir.ui.view">
32+
<field name="name">estate.property.form</field>
33+
<field name="model">estate.property</field>
34+
35+
<field name="arch" type="xml">
36+
<form string="Property">
37+
<sheet>
38+
<div class="oe_title">
39+
<h1>
40+
<field name="name"/>
41+
</h1>
42+
</div>
43+
44+
<group>
45+
<group>
46+
<field name="postcode"/>
47+
<field name="date_availability"/>
48+
</group>
49+
<group>
50+
<field name="expected_price"/>
51+
<field name="selling_price"/>
52+
</group>
53+
</group>
54+
55+
<notebook>
56+
<page string="Description">
57+
<group>
58+
<field name="description"/>
59+
<field name="bedrooms"/>
60+
<field name="living_area"/>
61+
<field name="facades"/>
62+
<field name="garage"/>
63+
<field name="garden"/>
64+
<field name="garden_area"/>
65+
<field name="garden_orientation"/>
66+
</group>
67+
</page>
68+
</notebook>
69+
70+
</sheet>
71+
</form>
72+
</field>
73+
</record>
74+
75+
</odoo>

0 commit comments

Comments
 (0)