Skip to content

Commit 0bb3d15

Browse files
committed
[ADD] estate: Relations, demo data, and app logo
- Add app logo to Real Estate module interface - Include demo data with 5 sample properties for testing - Implement Many2one (type, buyer, seller), Many2many (tags), One2many (offers)
1 parent 5f7f0e6 commit 0bb3d15

15 files changed

Lines changed: 271 additions & 11 deletions

estate/__manifest__.py

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,17 @@
77
'author': 'Pranjali Sangavekar(prsan)',
88
'license': 'LGPL-3',
99
'depends': ['base'],
10-
'application': True,
11-
'installable': True,
1210
'data': [
1311
'security/security.xml',
1412
'security/ir.model.access.csv',
1513
'views/estate_property_views.xml',
14+
'views/estate_property_type_views.xml',
15+
'views/estate_property_tags_views.xml',
16+
'views/estate_property_offers_views.xml',
1617
'views/estate_menus.xml',
1718
],
19+
'demo': [
20+
'demo/estate_property_data.xml',
21+
],
22+
'application': True,
1823
}
Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<odoo>
3+
<record id="estate_property_1" model="estate.property">
4+
<field name="name">Beautiful Villa in Downtown</field>
5+
<field name="description">A stunning 3-bedroom villa with modern amenities</field>
6+
<field name="postcode">382421</field>
7+
<field name="date_availability">2026-06-15</field>
8+
<field name="expected_price">6767676.00</field>
9+
<field name="bedrooms">3</field>
10+
<field name="living_area">9234</field>
11+
<field name="facades">2</field>
12+
<field name="garage">True</field>
13+
<field name="garden">True</field>
14+
<field name="garden_area">5000</field>
15+
<field name="garden_orientation">south</field>
16+
<field name="state">new</field>
17+
</record>
18+
<record id="estate_property_2" model="estate.property">
19+
<field name="name">Cozy House with Garden</field>
20+
<field name="description">Perfect starter home with large garden</field>
21+
<field name="postcode">400605</field>
22+
<field name="date_availability">2026-07-01</field>
23+
<field name="expected_price">100000.00</field>
24+
<field name="bedrooms">2</field>
25+
<field name="living_area">500</field>
26+
<field name="facades">1</field>
27+
<field name="garage">False</field>
28+
<field name="garden">True</field>
29+
<field name="garden_area">2000</field>
30+
<field name="garden_orientation">north</field>
31+
<field name="state">new</field>
32+
</record>
33+
<record id="estate_property_3" model="estate.property">
34+
<field name="name">Modern Apartment</field>
35+
<field name="description">Newly built apartment in city center</field>
36+
<field name="postcode">382421</field>
37+
<field name="date_availability">2026-05-20</field>
38+
<field name="expected_price">250000.00</field>
39+
<field name="bedrooms">2</field>
40+
<field name="living_area">750</field>
41+
<field name="facades">3</field>
42+
<field name="garage">True</field>
43+
<field name="garden">False</field>
44+
<field name="garden_area">0</field>
45+
<field name="garden_orientation">east</field>
46+
<field name="state">new</field>
47+
</record>
48+
<record id="estate_property_4" model="estate.property">
49+
<field name="name">Traditional Cottage</field>
50+
<field name="description">Charming countryside cottage</field>
51+
<field name="postcode">400605</field>
52+
<field name="date_availability">2026-08-10</field>
53+
<field name="expected_price">180000.00</field>
54+
<field name="bedrooms">3</field>
55+
<field name="living_area">650</field>
56+
<field name="facades">2</field>
57+
<field name="garage">True</field>
58+
<field name="garden">True</field>
59+
<field name="garden_area">3000</field>
60+
<field name="garden_orientation">west</field>
61+
<field name="state">new</field>
62+
</record>
63+
<record id="estate_property_5" model="estate.property">
64+
<field name="name">Luxury Penthouse</field>
65+
<field name="description">High-end penthouse with panoramic views</field>
66+
<field name="postcode">382421</field>
67+
<field name="date_availability">2026-04-01</field>
68+
<field name="expected_price">500000.00</field>
69+
<field name="bedrooms">4</field>
70+
<field name="living_area">1200</field>
71+
<field name="facades">2</field>
72+
<field name="garage">True</field>
73+
<field name="garden">True</field>
74+
<field name="garden_area">1000</field>
75+
<field name="garden_orientation">south</field>
76+
<field name="state">new</field>
77+
</record>
78+
</odoo>

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: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
from dateutil.relativedelta import relativedelta
2-
from odoo import models, fields
2+
from odoo import fields, models
33

44

55
class Estate_Property(models.Model):
@@ -30,3 +30,8 @@ class Estate_Property(models.Model):
3030
],
3131
required=True, copy=False, default='new'
3232
)
33+
property_type_id = fields.Many2one('estate.property.type', string="Property Type")
34+
buyer_id = fields.Many2one('res.partner', string="Buyer", copy=False)
35+
seller_id = fields.Many2one('res.users', string="Seller", default=lambda self: self.env.user)
36+
tag_ids = fields.Many2many('estate.property.tag', string="Tags")
37+
offer_ids = fields.One2many('estate.property.offer', 'property_id', string="Offers")
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
from odoo import fields, models
2+
3+
4+
class EstatePropertyOffer(models.Model):
5+
_name = "estate.property.offer"
6+
_description = "Real estate system - Property Offer"
7+
8+
price = fields.Float(string="Offer Price")
9+
status = fields.Selection(selection=[('accepted', 'Accepted'), ('refused', 'Refused')], copy=False)
10+
partner_id = fields.Many2one('res.partner', string="Partner", required=True)
11+
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 = "Real estate system - Property Tag"
7+
8+
name = fields.Char(string="Tag 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 = "Real estate system - Property Type"
7+
8+
name = fields.Char(string="Property Type Name", required=True)
Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,9 @@
11
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
22
access_estate_property_manager,estate.property manager,model_estate_property,estate.estate_group_manager,1,1,1,1
3-
access_estate_property_user,estate.property agent,model_estate_property,estate.estate_group_user,1,1,0,0
3+
access_estate_property_user,estate.property user,model_estate_property,estate.estate_group_user,1,1,0,0
4+
access_estate_property_type_manager,estate.property.type manager,model_estate_property_type,estate.estate_group_manager,1,1,1,1
5+
access_estate_property_type_user,estate.property.type user,model_estate_property_type,estate.estate_group_user,1,0,0,0
6+
access_estate_property_tag_manager,estate.property.tag manager,model_estate_property_tag,estate.estate_group_manager,1,1,1,1
7+
access_estate_property_tag_user,estate.property.tag user,model_estate_property_tag,estate.estate_group_user,1,0,0,0
8+
access_estate_property_offer_manager,estate.property.offer manager,model_estate_property_offer,estate.estate_group_manager,1,1,1,1
9+
access_estate_property_offer_user,estate.property.offer user,model_estate_property_offer,estate.estate_group_user,1,1,1,0

estate/security/security.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,4 +25,4 @@
2525
<field name="group_ids" eval="[Command.link(ref('estate_group_manager'))]"/>
2626
</record>
2727
</data>
28-
</odoo>
28+
</odoo>

estate/static/description/icon.png

4.67 KB
Loading

0 commit comments

Comments
 (0)