Skip to content

Commit f23d67c

Browse files
author
SurryaT10
committed
[ADD] Chapter 7: Relations Between Models
Added estate.property.type model which specifies the type of property. Eg: House/Apartment Added estate.property.tag model to indicate the tags(cozy, renovated) for each property Added estate.property.offer model which indicates the offers for each property. Also added views for each model mentioned above.
1 parent 2e143d9 commit f23d67c

File tree

11 files changed

+82
-0
lines changed

11 files changed

+82
-0
lines changed

estate/__manifest__.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@
99

1010
'depends': ['base', 'web'],
1111
'data': [
12+
'views/estate_property_tag_views.xml',
13+
'views/estate_property_type_views.xml',
1214
'views/estate_property_search_view.xml',
1315
'views/estate_property_views.xml',
1416
'views/estate_menus.xml',

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
2+
from . import property_type
3+
from . import property_tag
4+
from . import offer

estate/models/estate.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,3 +26,8 @@ class Estate(models.Model):
2626
default='new',
2727
required=True)
2828
active = fields.Boolean("Active", default=True)
29+
property_type_id = fields.Many2one('estate.property.type', string="Property Type")
30+
buyer_id = fields.Many2one('res.partner', string="Buyer", copy=False)
31+
salesperson_id = fields.Many2one('res.users', string="Salesperson", default=lambda self: self.env.user)
32+
tag_ids = fields.Many2many('estate.property.tag', string="Tags")
33+
offer_ids = fields.One2many('estate.property.offer', 'property_id', string="Offers")

estate/models/offer.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
from odoo import fields, models
2+
3+
4+
class Offer(models.Model):
5+
_name ='estate.property.offer'
6+
_description = 'Estate Property Offer'
7+
8+
price = fields.Float("Offer Price")
9+
status = fields.Selection(
10+
string="Status",
11+
selection=[('accepted', "Accepted"), ('refused', "Refused")],
12+
copy=False)
13+
partner_id = fields.Many2one('res.partner', string="Partner", required=True)
14+
property_id = fields.Many2one('estate.property', string="Property", required=True)

estate/models/property_tag.py

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 PropertyTag(models.Model):
5+
_name = 'estate.property.tag'
6+
_description = 'Estate Property Tag'
7+
8+
name = fields.Char("Tag Name", required=True)

estate/models/property_type.py

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 PropertyType(models.Model):
5+
_name = 'estate.property.type'
6+
_description = 'Estate Property Type'
7+
8+
name = fields.Char("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_model,access_estate_model,model_estate_property,base.group_user,1,1,1,1
3+
access_property_type_model,access_property_type_model,model_estate_property_type,base.group_user,1,1,1,1
4+
access_property_tag_model,access_property_tag_model,model_estate_property_tag,base.group_user,1,1,1,1
5+
access_property_offer_model,access_property_offer_model,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_menu_advertisements" name="Advertisements">
55
<menuitem id="estate_menu_properties" name="Properties" action="estate_property_action"/>
66
</menuitem>
7+
<menuitem id="estate_menu_settings" name="Settings">
8+
<menuitem id="estate_menu_property_types" name="Property Types" action="estate_property_type_action"/>
9+
<menuitem id="estate_menu_propert_tags" name="Property Tags" action="estate_property_tag_action"/>
10+
</menuitem>
711
</menuitem>
812
</odoo>
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
<?xml version="1.0" encoding="utf-8"?>
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+
</odoo>
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
<?xml version="1.0" encoding="utf-8"?>
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</field>
7+
</record>
8+
</odoo>

0 commit comments

Comments
 (0)