Skip to content

Commit 2b93d6f

Browse files
committed
[IMP] chapter7-estate: Added relational fields between estate models
1 parent db6c0c5 commit 2b93d6f

11 files changed

+157
-42
lines changed

estate/__manifest__.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,11 @@
88
'data': [
99
'security/ir.model.access.csv',
1010
'views/estate_property_views.xml',
11+
'views/estate_property_type_views.xml',
12+
'views/estate_property_tag_views.xml',
13+
'views/estate_property_offer_views.xml',
1114
'views/estate_menus.xml',
12-
],
15+
],
1316
'category': 'Sales/Real Estate',
1417
'installable': True,
1518
'auto_install': False,

estate/models/__init__.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,4 @@
11
from . import estate_property # noqa: F401
22
from . import estate_property_type
3+
from . import estate_property_tag
4+
from . import estate_property_offer

estate/models/estate_property.py

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,3 +55,22 @@ class EstateProperty(models.Model):
5555
"estate.property.type",
5656
string="Property Type",
5757
)
58+
salesperson_id = fields.Many2one(
59+
"res.users",
60+
string="Salesman",
61+
default=lambda self: self.env.user,
62+
)
63+
buyer_id = fields.Many2one(
64+
"res.partner",
65+
string="Buyer",
66+
copy=False,
67+
)
68+
tag_ids = fields.Many2many(
69+
"estate.property.tag",
70+
string="Tags",
71+
)
72+
offer_ids = fields.One2many(
73+
"estate.property.offer",
74+
"property_id",
75+
string="Offers",
76+
)
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
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(string="Price")
9+
10+
status = fields.Selection(
11+
[
12+
("accepted", "Accepted"),
13+
("refused", "Refused"),
14+
],
15+
string="Status",
16+
copy=False, # do not copy when duplicating the offer
17+
)
18+
19+
partner_id = fields.Many2one(
20+
"res.partner",
21+
string="Partner",
22+
required=True,
23+
)
24+
25+
property_id = fields.Many2one(
26+
"estate.property",
27+
string="Property",
28+
required=True,
29+
)
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 EstatePropertyTag(models.Model):
5+
_name = "estate.property.tag"
6+
_description = "Real Estate Property Tag"
7+
8+
name = fields.Char(string="Name", required=True)
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
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
33
access_estate_property_type_user,access_estate_property_type_user,model_estate_property_type,base.group_user,1,1,1,1
4+
access_estate_property_tag_user,access_estate_property_tag_user,model_estate_property_tag,base.group_user,1,1,1,1
5+
access_estate_property_offer_user,access_estate_property_offer_user,model_estate_property_offer,base.group_user,1,1,1,1

estate/views/estate_menus.xml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,4 +9,7 @@
99
parent="menu_estate_settings"
1010
action="action_estate_property_type"
1111
sequence="10"/>
12+
<menuitem id="menu_estate_property_tags" name="Property Tags"
13+
parent="menu_estate_settings"
14+
action="action_estate_property_tag"/>
1215
</odoo>
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
<!-- /home/odoo/odoo19/tutorials/estate/views/estate_property_offer_views.xml -->
2+
<odoo>
3+
<!-- Offers: List view -->
4+
<record id="view_estate_property_offer_list" model="ir.ui.view">
5+
<field name="name">estate.property.offer.list</field>
6+
<field name="model">estate.property.offer</field>
7+
<field name="arch" type="xml">
8+
<list string="Offers">
9+
<field name="price"/>
10+
<field name="partner_id"/>
11+
<field name="status"/>
12+
</list>
13+
</field>
14+
</record>
15+
16+
<!-- Offers: Form view -->
17+
<record id="view_estate_property_offer_form" model="ir.ui.view">
18+
<field name="name">estate.property.offer.form</field>
19+
<field name="model">estate.property.offer</field>
20+
<field name="arch" type="xml">
21+
<form string="Offer">
22+
<sheet>
23+
<group>
24+
<field name="price"/>
25+
<field name="partner_id"/>
26+
<field name="status"/>
27+
</group>
28+
</sheet>
29+
</form>
30+
</field>
31+
</record>
32+
</odoo>
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
<!-- /home/odoo/odoo19/tutorials/estate/views/estate_property_tag_views.xml -->
2+
<odoo>
3+
<!-- Action for property tags -->
4+
<record id="action_estate_property_tag" model="ir.actions.act_window">
5+
<field name="name">Property Tags</field>
6+
<field name="res_model">estate.property.tag</field>
7+
<field name="view_mode">list,form</field>
8+
<field name="help" type="html">
9+
<p>Create and manage tags for your properties.</p>
10+
</field>
11+
</record>
12+
</odoo>
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
<!-- /home/odoo/odoo19/tutorials/estate/views/estate_property_type_views.xml -->
2+
<odoo>
3+
<!-- Action for property types -->
4+
<record id="action_estate_property_type" model="ir.actions.act_window">
5+
<field name="name">Property Types</field>
6+
<field name="res_model">estate.property.type</field>
7+
<field name="view_mode">list,form</field>
8+
</record>
9+
</odoo>

0 commit comments

Comments
 (0)