Skip to content

Commit 35228ac

Browse files
committed
[IMP] estate: model relations (M2O, O2M, M2M)
* Added estate_property_offer model with required fields. * Added estate_property_tag model with required fields. * Added estate_property_type model with required fields. * Implemented relations between models (Many2one, One2many, Many2many). * Created corresponding views for offers, tags, and property types. * Added access rights for new models.
1 parent a0b2ed1 commit 35228ac

12 files changed

+171
-13
lines changed

estate/__manifest__.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,9 @@
88
'description': 'Real estate purchase & sales',
99
'data': [
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_property_menu.xml',
1215
'security/ir.model.access.csv'
1316
],

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
@@ -39,3 +39,10 @@ class EstateProperty(models.Model):
3939
default="new",
4040
)
4141
active = fields.Boolean(default=False)
42+
property_type_id = fields.Many2one("estate.property.type", string="Property Type", required=True)
43+
customer = fields.Many2one("res.partner", string="Customer", copy=False)
44+
salesperson = fields.Many2one(
45+
"res.users", string="Salesperson", default=lambda self: self.env.user
46+
)
47+
tag_ids = fields.Many2many("estate.property.tag", string="Property Tags")
48+
offer_ids = fields.One2many("estate.property.offer", "property_id", string="Offer")
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
from odoo import models, fields
2+
3+
4+
class EstatePropertyOffer(models.Model):
5+
_name = "estate.property.offer"
6+
_description = "Estate Property Offer"
7+
8+
price = fields.Float()
9+
status = fields.Selection(
10+
selection=[("accepted", "Accepted"), ("refused", "Refused")], copy=False
11+
)
12+
partner_id = fields.Many2one("res.partner", string="Partner", required=True)
13+
property_id = fields.Many2one("estate.property", string="Property", required=True)
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
from odoo import fields, models
2+
3+
4+
class EstatePropertyTags(models.Model):
5+
_name = "estate.property.tag"
6+
_description = "Estate Property Tag"
7+
_order = "name"
8+
9+
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 models, fields
2+
3+
4+
class EstatePropertyType(models.Model):
5+
_name = "estate.property.type"
6+
_description = "Estate Property Type"
7+
8+
name = fields.Char(required=True)
Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,5 @@
1-
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
2-
estate.access_estate_property,access_estate_property,model_estate_property,base.group_user,1,1,1,1
1+
"id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink"
2+
estate.access_estate_property,"access_estate_property",estate.model_estate_property,base.group_user,1,1,1,1
3+
estate.access_estate_property_type,"access_estate_property_type",estate.model_estate_property_type,base.group_user,1,1,1,1
4+
estate.access_estate_property_tag,"access_estate_property_tag",estate.model_estate_property_tag,base.group_user,1,1,1,1
5+
estate.access_estate_property_offer,"access_estate_property_offer",estate.model_estate_property_offer,base.group_user,1,1,1,1

estate/views/estate_property_menu.xml

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,4 +15,21 @@
1515
parent="estate_property_menu_advertisement"
1616
action="main_action_estate"
1717
/>
18+
<menuitem
19+
id="estate_menu_configuration"
20+
name="Settings"
21+
parent="estate_property_menu_root"
22+
/>
23+
<menuitem
24+
id="configuration_menu_property_types"
25+
name="Property Types"
26+
parent="estate_menu_configuration"
27+
action="action_estate_property_type"
28+
/>
29+
<menuitem
30+
id="configuration_menu_property_tags"
31+
name="Property Tags"
32+
parent="estate_menu_configuration"
33+
action="action_estate_property_tag"
34+
/>
1835
</odoo>
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
<?xml version="1.0"?>
2+
<odoo>
3+
<record id="action_estate_property_offer" model="ir.actions.act_window">
4+
<field name="name">Property Offers</field>
5+
<field name="res_model">estate.property.offer</field>
6+
<field name="view_mode">list,form</field>
7+
</record>
8+
9+
<record id="action_estate_offer_view_list" model="ir.ui.view">
10+
<field name="name">estate.property.offer.list</field>
11+
<field name="model">estate.property.offer</field>
12+
<field name="arch" type="xml">
13+
<list string="Channel">
14+
<field name="price"/>
15+
<field name="partner_id"/>
16+
<field name="status"/>
17+
</list>
18+
</field>
19+
</record>
20+
21+
<record id="action_estate_offer_view_form" model="ir.ui.view">
22+
<field name="name">estate.property.offer.form</field>
23+
<field name="model">estate.property.offer</field>
24+
<field name="arch" type="xml">
25+
<form string="Offer">
26+
<sheet>
27+
<group>
28+
<field name="price" />
29+
<field name="partner_id" />
30+
<field name="status" />
31+
</group>
32+
</sheet>
33+
</form>
34+
</field>
35+
</record>
36+
37+
</odoo>
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
<?xml version="1.0"?>
2+
<odoo>
3+
<record id="action_estate_property_tag" model="ir.actions.act_window">
4+
<field name="name">Properties Tags</field>
5+
<field name="res_model">estate.property.tag</field>
6+
<field name="view_mode">list,form</field>
7+
<field name="help" type="html">
8+
<p class="o_view_nocontent_smiling_face">
9+
Create your first Property Tag!
10+
</p>
11+
</field>
12+
</record>
13+
14+
<record id="action_estate_property_tag_view_list" model="ir.ui.view">
15+
<field name="name">estate.property.tag.list</field>
16+
<field name="model">estate.property.tag</field>
17+
<field name="arch" type="xml">
18+
<list string="Tag">
19+
<field name="name"/>
20+
</list>
21+
</field>
22+
</record>
23+
</odoo>

0 commit comments

Comments
 (0)