Skip to content

Commit 1fafa10

Browse files
committed
[IMP] estate: chapter 7 (relational fields)
1 parent 4dd27c3 commit 1fafa10

11 files changed

+158
-9
lines changed

estate/__manifest__.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@
1111
'security/ir.model.access.csv',
1212

1313
'views/estate_property_views.xml',
14+
'views/estate_property_type_views.xml',
15+
'views/estate_property_tag_views.xml',
1416
'views/estate_menus.xml',
1517
],
1618
'demo': [

estate/models/__init__.py

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

33
from . import estate_property
4+
from . import estate_property_type
5+
from . import estate_property_tag
6+
from . import estate_property_offer

estate/models/estate_property.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,3 +34,11 @@ class EstateProperty(models.Model):
3434
('sold', 'Sold'),
3535
('cancelled', 'Cancelled')],
3636
default='new', required=True, copy=False)
37+
property_type_id = fields.Many2one('estate.property.type', string='Property Type')
38+
property_tag_ids = fields.Many2many('estate.property.tag', string='Property Tag')
39+
buyer_id = fields.Many2one('res.partner', string='Buyer', copy=False,
40+
domain=[('is_company', '=', False)])
41+
salesperson_id = fields.Many2one('res.users', string='Salesperson',
42+
default=lambda self: self.env.user)
43+
offer_ids = fields.Many2many('estate.property.offer','property_id', string='Offers')
44+
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
# Part of Odoo. See LICENSE file for full copyright and licensing details.
2+
3+
from odoo import fields, models
4+
5+
6+
class EstatePropertyOffer(models.Model):
7+
_name='estate.property.offer'
8+
_description='Estate Property Offer'
9+
10+
price = fields.Float(string='Price')
11+
status = fields.Selection(string='Status', copy=False,
12+
selection=[('accepted', 'Accepted'), ('refused', 'Refused')])
13+
partner_id = fields.Many2one('res.partner', string='Customer', required=True)
14+
property_id = fields.Many2one('estate.property', string='Property', required=True)
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
# Part of Odoo. See LICENSE file for full copyright and licensing details.
2+
3+
from odoo import fields, models
4+
5+
6+
class EstatePropertyTag(models.Model):
7+
_name='estate.property.tag'
8+
_description='Estate Property Tag'
9+
10+
name = fields.Char(string='Property Tag', required=True)
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
# Part of Odoo. See LICENSE file for full copyright and licensing details.
2+
3+
from odoo import fields, models
4+
5+
6+
class EstatePropertyType(models.Model):
7+
_name='estate.property.type'
8+
_description='Estate Property Type'
9+
10+
name = fields.Char(string='Property Type', required=True)
Lines changed: 3 additions & 0 deletions
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
22
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: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,29 @@
11
<?xml version="1.0"?>
22
<odoo>
3-
43
<menuitem
54
id="estate_menu_root"
65
name="Real Estate"/>
76
<menuitem
87
id="properties_menu"
98
name="Properties"
109
parent="estate_menu_root"
10+
action="estate.estate_property_action"
1111
sequence="1"/>
1212
<menuitem
13-
id="menu_estate_property"
14-
name="Estate property"
15-
parent="properties_menu"
16-
action="estate.estate_property_action"
13+
id="settings_menu"
14+
name="Settings"
15+
parent="estate_menu_root"
16+
sequence="2"/>
17+
<menuitem
18+
id="properties_type_menu"
19+
name="Property Types"
20+
parent="settings_menu"
21+
action="estate.estate_property_type_action"
1722
sequence="1"/>
18-
23+
<menuitem
24+
id="properties_tag_menu"
25+
name="Property Tags"
26+
parent="settings_menu"
27+
action="estate.estate_property_tag_action"
28+
sequence="2"/>
1929
</odoo>
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
<?xml version="1.0"?>
2+
<odoo>
3+
<record id="estate_property_tag_view_form" model="ir.ui.view">
4+
<field name="name">estate.property.tag.view.form</field>
5+
<field name="model">estate.property.tag</field>
6+
<field name="arch" type="xml">
7+
<form string="Estate Property Tag">
8+
<sheet>
9+
<group>
10+
<field name="name"/>
11+
</group>
12+
</sheet>
13+
</form>
14+
</field>
15+
</record>
16+
17+
<record id="estate_property_tag_view_list" model="ir.ui.view">
18+
<field name="name">estate.property.tag.view.list</field>
19+
<field name="model">estate.property.tag</field>
20+
<field name="arch" type="xml">
21+
<list string="Estate Property Tag">
22+
<field name="name"/>
23+
</list>
24+
</field>
25+
</record>
26+
27+
<record id="estate_property_tag_action" model="ir.actions.act_window">
28+
<field name="name">Estate Property Tag</field>
29+
<field name="res_model">estate.property.tag</field>
30+
<field name="view_mode">list,form</field>
31+
</record>
32+
33+
</odoo>
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
<?xml version="1.0"?>
2+
<odoo>
3+
<record id="estate_property_type_view_form" model="ir.ui.view">
4+
<field name="name">estate.property.type.view.form</field>
5+
<field name="model">estate.property.type</field>
6+
<field name="arch" type="xml">
7+
<form string="Estate Property Type">
8+
<sheet>
9+
<div class="oe_title">
10+
<h1 class="mb32">
11+
<field name="name" class="mb16"/>
12+
</h1>
13+
</div>
14+
</sheet>
15+
</form>
16+
</field>
17+
</record>
18+
19+
<record id="estate_property_type_view_list" model="ir.ui.view">
20+
<field name="name">estate.property.type.view.list</field>
21+
<field name="model">estate.property.type</field>
22+
<field name="arch" type="xml">
23+
<list string="Estate Property Type">
24+
<field name="name"/>
25+
</list>
26+
</field>
27+
</record>
28+
29+
<record id="estate_property_type_action" model="ir.actions.act_window">
30+
<field name="name">Estate Property Type</field>
31+
<field name="res_model">estate.property.type</field>
32+
<field name="view_mode">list,form</field>
33+
</record>
34+
35+
</odoo>

0 commit comments

Comments
 (0)