Skip to content

Commit 5b73f5d

Browse files
committed
[ADD] estate: Chapter 7 - add property types, tags, and offers
Add property types, tags, and offers with corresponding views and access rights
1 parent 3d6bb93 commit 5b73f5d

11 files changed

+159
-2
lines changed

estate/__manifest__.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@
77
"data": [
88
"data/ir.model.access.csv",
99
"views/estate_property_views.xml",
10+
"views/estate_property_type_views.xml",
11+
"views/estate_property_tag_views.xml",
1012
"views/estate_menus.xml",
1113
],
1214
"installable": True,

estate/data/ir.model.access.csv

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_user,Estate Property User,model_estate_property,base.group_user,1,1,1,1
3+
access_estate_property_type_user,Estate Property Type User,model_estate_property_type,base.group_user,1,1,1,1
4+
access_estate_property_tag_user,Estate Property Tag User,model_estate_property_tag,base.group_user,1,1,1,1
5+
access_estate_property_offer_user,Estate Property Offer User,model_estate_property_offer,base.group_user,1,1,1,1

estate/models/__init__.py

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

estate/models/estate_property.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,3 +48,10 @@ class EstateProperty(models.Model):
4848
required=True,
4949
copy=False,
5050
)
51+
salesperson_id = fields.Many2one("res.users", string="Salesperson", default=lambda self: self.env.user)
52+
partner_id = fields.Many2one("res.partner", string="Partner", copy=False)
53+
54+
# Relational fields
55+
property_type_id = fields.Many2one("estate.property.type", string="Property Type")
56+
tag_ids = fields.Many2many("estate.property.tag", string="Tags")
57+
offer_ids = fields.One2many("estate.property.offer", "property_id", string="Offers")
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
from odoo import fields, models
2+
3+
4+
class EstatePropertyOffer(models.Model):
5+
_name = "estate.property.offer"
6+
_description = "Estate Property Offer"
7+
8+
price = fields.Float("Price")
9+
status = fields.Selection(
10+
selection=[
11+
("accepted", "Accepted"),
12+
("refused", "Refused"),
13+
],
14+
string="Status",
15+
copy=False,
16+
)
17+
partner_id = fields.Many2one("res.partner", string="Partner", required=True)
18+
property_id = fields.Many2one("estate.property", string="Property", 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+
4+
class EstatePropertyTag(models.Model):
5+
_name = "estate.property.tag"
6+
_description = "Estate Property Tag"
7+
8+
name = fields.Char("Name", 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+
4+
class EstatePropertyType(models.Model):
5+
_name = "estate.property.type"
6+
_description = "Estate Property Type"
7+
8+
name = fields.Char("Name", required=True)

estate/views/estate_menus.xml

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
<menuitem id="estate_menu_root" name="Real Estate"/>
44

55
<menuitem id="estate_property_menu_categ"
6-
name="Properties"
6+
name="Advertisements"
77
parent="estate_menu_root"
88
sequence="10"/>
99

@@ -12,4 +12,21 @@
1212
parent="estate_property_menu_categ"
1313
action="estate_property_action"
1414
sequence="20"/>
15+
16+
<menuitem id="estate_settings_menu_categ"
17+
name="Settings"
18+
parent="estate_menu_root"
19+
sequence="20"/>
20+
21+
<menuitem id="estate_property_type_menu_action"
22+
name="Property Types"
23+
parent="estate_settings_menu_categ"
24+
action="estate_property_type_action"
25+
sequence="10"/>
26+
27+
<menuitem id="estate_property_tag_menu_action"
28+
name="Property Tags"
29+
parent="estate_settings_menu_categ"
30+
action="estate_property_tag_action"
31+
sequence="20"/>
1532
</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_tag_action" model="ir.actions.act_window">
4+
<field name="name">Property Tags</field>
5+
<field name="res_model">estate.property.tag</field>
6+
<field name="view_mode">list,form</field>
7+
</record>
8+
<record id="estate_property_tag_view_tree" model="ir.ui.view">
9+
<field name="name">estate.property.tag.list</field>
10+
<field name="model">estate.property.tag</field>
11+
<field name="arch" type="xml">
12+
<list string="Property Tags">
13+
<field name="name" string="Name"/>
14+
</list>
15+
</field>
16+
</record>
17+
<record id="estate_property_tag_view_form" model="ir.ui.view">
18+
<field name="name">estate.property.tag.form</field>
19+
<field name="model">estate.property.tag</field>
20+
<field name="arch" type="xml">
21+
<form string="Property Tag">
22+
<sheet>
23+
<group>
24+
<field name="name" string="Name"/>
25+
</group>
26+
</sheet>
27+
</form>
28+
</field>
29+
</record>
30+
</odoo>
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
<?xml version="1.0"?>
2+
<odoo>
3+
<record id="estate_property_type_action" model="ir.actions.act_window">
4+
<field name="name">Property Types</field>
5+
<field name="res_model">estate.property.type</field>
6+
<field name="view_mode">list,form,search</field>
7+
</record>
8+
<record id="estate_property_type_view_tree" model="ir.ui.view">
9+
<field name="name">estate.property.type.list</field>
10+
<field name="model">estate.property.type</field>
11+
<field name="arch" type="xml">
12+
<list string="Property Types">
13+
<field name="name" string="Name"/>
14+
</list>
15+
</field>
16+
</record>
17+
<record id="estate_property_type_view_form" model="ir.ui.view">
18+
<field name="name">estate.property.type.form</field>
19+
<field name="model">estate.property.type</field>
20+
<field name="arch" type="xml">
21+
<form string="Property Type">
22+
<sheet>
23+
<group>
24+
<field name="name" string="Name"/>
25+
</group>
26+
</sheet>
27+
</form>
28+
</field>
29+
</record>
30+
31+
<record id="estate_property_type_view_search" model="ir.ui.view">
32+
<field name="name">estate.property.type.search</field>
33+
<field name="model">estate.property.type</field>
34+
<field name="arch" type="xml">
35+
<search string="Search Property Types">
36+
<field name="name"/>
37+
</search>
38+
</field>
39+
</record>
40+
</odoo>

0 commit comments

Comments
 (0)