Skip to content

Commit 91026a2

Browse files
committed
chapter n°7
1 parent bdf1749 commit 91026a2

13 files changed

+290
-75
lines changed

estate/__init__.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,4 +4,3 @@
44
from . import models
55

66
from odoo import api, SUPERUSER_ID
7-

estate/__manifest__.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,11 @@
33
'depends': ['base'],
44
'data': [
55
'security/ir.model.access.csv',
6+
'views/estate_property_offer_views.xml',
7+
'views/estate_property_type_views.xml',
8+
'views/estate_property_tag_views.xml',
9+
'views/estate_property_views.xml',
10+
'views/estate_menus.xml',
611
]
712
}
813

estate/models/__init__.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,3 +2,6 @@
22
# Part of Odoo. See LICENSE file for full copyright and licensing details.
33

44
from . import estate_property
5+
from . import estate_property_type
6+
from . import estate_property_tag
7+
from . import estate_property_offer

estate/models/estate_property.py

Lines changed: 48 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,66 @@
11
from odoo import fields, models
2+
from datetime import date
3+
from dateutil.relativedelta import relativedelta
4+
25

36
class EstateProperty(models.Model):
47
_name = "estate.property"
5-
_description = 'Real Estate Property'
8+
_description = "Real Estate Property"
9+
10+
property_type_id = fields.Many2one(
11+
"estate.property.type",
12+
string="Property Type",
13+
)
14+
buyer_id = fields.Many2one(
15+
"res.partner",
16+
string="Buyer",
17+
copy=False,
18+
)
19+
salesperson_id = fields.Many2one(
20+
"res.users",
21+
string="Salesperson",
22+
default=lambda self: self.env.user,
23+
copy=False,
24+
)
25+
tag_ids = fields.Many2many("estate.property.tag")
26+
offer_ids = fields.One2many("estate.property.offer", "property_id", string="Offers")
627

28+
active = fields.Boolean(default=True)
729
name = fields.Char(string="Title", required=True)
830
description = fields.Text(string="Description")
931
postcode = fields.Char(string="Postcode")
10-
date_availability = fields.Date(string="Available From")
32+
date_availability = fields.Date(
33+
string="Available From",
34+
copy=False,
35+
default=date.today() + relativedelta(months=3),
36+
)
1137
expected_price = fields.Float(string="Expected Price", required=True)
12-
selling_price = fields.Float(string="Selling Price")
13-
bedrooms = fields.Integer(string="Bedrooms")
38+
selling_price = fields.Float(string="Selling Price", readonly=True, copy=False)
39+
bedrooms = fields.Integer(string="Bedrooms", default=2)
1440
living_area = fields.Integer(string="Living Area (sqm)")
1541
facades = fields.Integer(string="Number of Facades")
1642
garage = fields.Boolean(string="Has Garage?")
1743
garden = fields.Boolean(string="Has Garden?")
1844
garden_area = fields.Integer(string="Garden Area (sqm)")
1945
garden_orientation = fields.Selection(
2046
selection=[
21-
('north', 'North'),
22-
('south', 'South'),
23-
('east', 'East'),
24-
('west', 'West'),
47+
("north", "North"),
48+
("south", "South"),
49+
("east", "East"),
50+
("west", "West"),
2551
],
26-
string="Garden Orientation"
52+
string="Garden Orientation",
53+
)
54+
state = fields.Selection(
55+
selection=[
56+
("new", "New"),
57+
("offer_received", "Offer Received"),
58+
("offer_accepted", "Offer Accepted"),
59+
("sold", "Sold"),
60+
("cancelled", "Cancelled"),
61+
],
62+
string="Status",
63+
required=True,
64+
copy=False,
65+
default="new",
2766
)
28-
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
from odoo import models, fields
2+
3+
4+
class EstatePropertyOffer(models.Model):
5+
_name = "estate.property.offer"
6+
_description = "Real Estate Property Offer"
7+
8+
price = fields.Float()
9+
10+
status = fields.Selection(
11+
[("accepted", "Accepted"), ("refused", "Refused")], copy=False
12+
)
13+
14+
partner_id = fields.Many2one("res.partner", required=True)
15+
property_id = fields.Many2one("estate.property", required=True)

estate/models/estate_property_tag.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
from odoo import fields, models
2+
3+
4+
class EstatePropertyTag(models.Model):
5+
_name = "estate.property.tag"
6+
_description = "Real Estate Property Tag"
7+
8+
name = fields.Char(string="Name", required=True)

estate/models/estate_property_type.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
from odoo import fields, models
2+
3+
4+
class EstatePropertyType(models.Model):
5+
_name = "estate.property.type"
6+
_description = "Real Estate Property Type"
7+
8+
name = fields.Char(string="Title", required=True)

estate/security/ir.model.access.csv

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,5 @@
11
"id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink"
2-
"estate_property.access_rights_base_group_user","estate_property.access_rights_base_group_user","model_estate_property","base.group_user",1,1,1,1
2+
"model_estate_property_base_group_allow_all","model.estate.property.base.group.allow_all","model_estate_property","base.group_user",1,1,1,1
3+
"model_estate_property_type_base_group_allow_all","model.estate.property.type.base.group.allow_all","model_estate_property_type","base.group_user",1,1,1,1
4+
"model_estate_property_tag_base_group_allow_all","model.estate.property.tag.base.group.allow_all","model_estate_property_tag","base.group_user",1,1,1,1
5+
"model_estate_property_offer_base_group_allow_all","model.estate.property.offer.base.group.allow_all","model_estate_property_offer","base.group_user",1,1,1,1

estate/views/estate_menus.xml

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,12 @@
11
<?xml version="1.0"?>
22
<odoo>
3-
<menuitem id="test_menu_root" name="Real Estate">
4-
<menuitem id="test_first_level_menu" name="Advertisements">
5-
<menuitem id="test_model_menu_action" action="estate_test_action"/>
3+
<menuitem id="real_estate_menu" name="Real Estate">
4+
<menuitem id="advertisements_menu" name="Advertisements">
5+
<menuitem id="estate_property_menu" action="estate_property_action" />
6+
</menuitem>
7+
<menuitem id="settings_menu" name="Settings">
8+
<menuitem id="estate_property_type_menu" action="estate_property_type_action" />
9+
<menuitem id="estate_property_tag_menu" action="estate_property_tag_action" />
610
</menuitem>
711
</menuitem>
8-
</odoo>
12+
</odoo>
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
<odoo>
2+
<record id="view_estate_property_offer_tree" model="ir.ui.view">
3+
<field name="name">estate.property.offer.tree</field>
4+
<field name="model">estate.property.offer</field>
5+
<field name="arch" type="xml">
6+
<list>
7+
<field name="price" />
8+
<field name="partner_id" />
9+
<field name="status" />
10+
</list>
11+
</field>
12+
</record>
13+
14+
<record id="view_estate_property_offer_form" model="ir.ui.view">
15+
<field name="name">estate.property.offer.form</field>
16+
<field name="model">estate.property.offer</field>
17+
<field name="arch" type="xml">
18+
<form>
19+
<group>
20+
<field name="price" />
21+
<field name="partner_id" />
22+
<field name="status" />
23+
</group>
24+
</form>
25+
</field>
26+
</record>
27+
</odoo>

0 commit comments

Comments
 (0)