Skip to content

Commit 0b4370e

Browse files
committed
[IMP] estate: add relation fields for property types, tags and offers
Framework 101: chapter 7
1 parent 2738c11 commit 0b4370e

12 files changed

+158
-3
lines changed

estate/__manifest__.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,9 @@
1010
'security/ir.model.access.csv',
1111

1212
"views/estate_property_views.xml",
13+
"views/estate_property_type_views.xml",
14+
"views/estate_property_tag_views.xml",
15+
"views/estate_property_offer_views.xml",
1316
"views/estate_menus.xml",
1417
]
1518
}

estate/models/__init__.py

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

estate/models/estate_property.py

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,4 +28,11 @@ class EstateProperty(models.Model):
2828
selection=[('new', 'New'), ('offer_received', 'Offer Received'), ('offer_accepted', 'Offer Accepted'), ('sold', 'Sold'), ('cancelled', 'Cancelled')],
2929
default="new",
3030
copy=False
31-
)
31+
)
32+
33+
# Relations
34+
property_type_id = fields.Many2one("estate.property.type", string="Property Type")
35+
salesman_id = fields.Many2one("res.users", default=lambda self: self.env.user)
36+
buyer_id = fields.Many2one("res.partner", copy=False)
37+
tag_ids = fields.Many2many("estate.property.tag")
38+
offer_ids = fields.One2many("estate.property.offer", "property_id")
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
from odoo import fields, models
2+
3+
class EstatePropertyOffer(models.Model):
4+
_name = "estate.property.offer"
5+
_description = "Estate property offer"
6+
7+
price = fields.Float()
8+
status = fields.Selection(
9+
selection=[('accepted', 'Accepted'), ('refused', 'Refused')],
10+
copy=False,
11+
)
12+
13+
# Relations
14+
partner_id = fields.Many2one("res.partner", required=True)
15+
property_id = fields.Many2one("estate.property", required=True)
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
from odoo import fields, models
2+
3+
class EstatePropertyTag(models.Model):
4+
_name = "estate.property.tag"
5+
_description = "Estate property tag"
6+
7+
name = fields.Char(required=True)
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+
class EstatePropertyType(models.Model):
4+
_name = "estate.property.type"
5+
_description = "Estate property type"
6+
7+
name = fields.Char(required=True)
8+
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-
access_estate_property,access_estate_property,model_estate_property,base.group_user,1,1,1,1
2+
access_estate_property,access_estate_property,model_estate_property,base.group_user,1,1,1,1
3+
access_estate_property_type,access_estate_property_type,model_estate_property_type,base.group_user,1,1,1,1
4+
access_estate_property_tag,access_estate_property_tag,model_estate_property_tag,base.group_user,1,1,1,1
5+
access_estate_property_offer,access_estate_property_offer,model_estate_property_offer,base.group_user,1,1,1,1

estate/views/estate_menus.xml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,5 +4,9 @@
44
<menuitem id="estate_properties_first_level" name="Properties">
55
<menuitem id="estate_properties_menu" action="estate_property_action"/>
66
</menuitem>
7+
<menuitem id="estate_settings_first_level" name="Settings">
8+
<menuitem id="estate_property_types_menu" action="estate_property_type_action"/>
9+
<menuitem id="estate_property_tags_menu" action="estate_property_tag_action"/>
10+
</menuitem>
711
</menuitem>
812
</odoo>
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
<?xml version="1.0"?>
2+
<odoo>
3+
<record id="estate_property_offer_list_view" model="ir.ui.view">
4+
<field name="name">estate.property.offer.list</field>
5+
<field name="model">estate.property.offer</field>
6+
<field name="arch" type="xml">
7+
<list>
8+
<field name="price"/>
9+
<field name="partner_id"/>
10+
<field name="status"/>
11+
</list>
12+
</field>
13+
</record>
14+
15+
<record id="estate_property_offer_form_view" model="ir.ui.view">
16+
<field name="name">estate.property.offer.form</field>
17+
<field name="model">estate.property.offer</field>
18+
<field name="arch" type="xml">
19+
<form>
20+
<sheet>
21+
<group>
22+
<field name="price"/>
23+
<field name="partner_id"/>
24+
<field name="status"/>
25+
</group>
26+
</sheet>
27+
</form>
28+
</field>
29+
</record>
30+
</odoo>
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
<?xml version="1.0"?>
2+
<odoo>
3+
<record id="estate_property_tag_list_view" model="ir.ui.view">
4+
<field name="name">estate.property.tag.list</field>
5+
<field name="model">estate.property.tag</field>
6+
<field name="arch" type="xml">
7+
<list>
8+
<field name="name"/>
9+
</list>
10+
</field>
11+
</record>
12+
13+
<record id="estate_property_tag_form_view" model="ir.ui.view">
14+
<field name="name">estate.property.tag.form</field>
15+
<field name="model">estate.property.tag</field>
16+
<field name="arch" type="xml">
17+
<form>
18+
<sheet>
19+
<group>
20+
<field name="name"/>
21+
</group>
22+
</sheet>
23+
</form>
24+
</field>
25+
</record>
26+
27+
<record id="estate_property_tag_action" model="ir.actions.act_window">
28+
<field name="name">Property Tags</field>
29+
<field name="res_model">estate.property.tag</field>
30+
<field name="view_mode">list,form</field>
31+
</record>
32+
</odoo>

0 commit comments

Comments
 (0)