From 9bb4467892ca3644dbf6ffb2fd37b68699522d44 Mon Sep 17 00:00:00 2001 From: shsak-odoo Date: Wed, 3 Dec 2025 14:58:48 +0530 Subject: [PATCH 1/7] [ADD] Chapter-2 - estate- Created new application estate --- estate/__init__.py | 0 estate/__manifest__.py | 11 +++++++++++ 2 files changed, 11 insertions(+) create mode 100644 estate/__init__.py create mode 100644 estate/__manifest__.py diff --git a/estate/__init__.py b/estate/__init__.py new file mode 100644 index 00000000000..e69de29bb2d diff --git a/estate/__manifest__.py b/estate/__manifest__.py new file mode 100644 index 00000000000..d70c48c05d0 --- /dev/null +++ b/estate/__manifest__.py @@ -0,0 +1,11 @@ +{ + 'name': "Real Estate", + 'version': '1.0', + 'depends': ['base'], + 'author': "Shivam Saksham(shsak)", + 'category': 'Sales', + 'description': """ + An Real Estate App to buy and sell properties. + """, + 'application':True, +} \ No newline at end of file From 4872b92fba7a04f3f1051519128d8d22f5c0b8b5 Mon Sep 17 00:00:00 2001 From: shsak-odoo Date: Wed, 3 Dec 2025 16:10:46 +0530 Subject: [PATCH 2/7] [FIX] Chapter2-estate: Fixed manifest file white spaces --- estate/__manifest__.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/estate/__manifest__.py b/estate/__manifest__.py index d70c48c05d0..b60e58b0b20 100644 --- a/estate/__manifest__.py +++ b/estate/__manifest__.py @@ -5,7 +5,8 @@ 'author': "Shivam Saksham(shsak)", 'category': 'Sales', 'description': """ - An Real Estate App to buy and sell properties. + An Real Estate App to buy, sell, and rent properties. """, - 'application':True, -} \ No newline at end of file + 'application': True, + 'license': 'LGPL-3' +} From d96bfac0d703f232e53658c3de5d00a30b2e5f98 Mon Sep 17 00:00:00 2001 From: shsak-odoo Date: Thu, 4 Dec 2025 11:32:30 +0530 Subject: [PATCH 3/7] [IMP] Chapter-3-estate: Created Estate property model --- estate/__init__.py | 1 + estate/models/__init__.py | 1 + estate/models/estate_property.py | 23 +++++++++++++++++++++++ 3 files changed, 25 insertions(+) create mode 100644 estate/models/__init__.py create mode 100644 estate/models/estate_property.py diff --git a/estate/__init__.py b/estate/__init__.py index e69de29bb2d..0650744f6bc 100644 --- a/estate/__init__.py +++ b/estate/__init__.py @@ -0,0 +1 @@ +from . import models diff --git a/estate/models/__init__.py b/estate/models/__init__.py new file mode 100644 index 00000000000..5e1963c9d2f --- /dev/null +++ b/estate/models/__init__.py @@ -0,0 +1 @@ +from . import estate_property diff --git a/estate/models/estate_property.py b/estate/models/estate_property.py new file mode 100644 index 00000000000..78dda0d6a6a --- /dev/null +++ b/estate/models/estate_property.py @@ -0,0 +1,23 @@ +from odoo import models, fields + + +class EstateProperty(models.Model): + _name = "estate_property" + _description = "Estate Property details" + + name = fields.Char(required=True) + description = fields.Text() + postcode = fields.Char() + date_availability = fields.Date() + expected_price = fields.Float(required=True) + selling_price = fields.Float() + bedrooms = fields.Integer() + living_area = fields.Integer() + facades = fields.Integer() + garage = fields.Boolean() + garden = fields.Boolean() + garden_area = fields.Integer() + garden_orientation = fields.Selection( + string='Orientation', + selection=[('north', 'North'), ('south', 'South'), ('east', 'East'), ('west', 'West')] + ) From 252fd3114deb9ba695a28703818e43d9bd9c7e82 Mon Sep 17 00:00:00 2001 From: shsak-odoo Date: Thu, 4 Dec 2025 12:30:24 +0530 Subject: [PATCH 4/7] [IMP] Chapter-4-estate: added the security access to estate application --- estate/__manifest__.py | 5 ++++- estate/security/ir.model.access.csv | 2 ++ 2 files changed, 6 insertions(+), 1 deletion(-) create mode 100644 estate/security/ir.model.access.csv diff --git a/estate/__manifest__.py b/estate/__manifest__.py index b60e58b0b20..4c814f3f75b 100644 --- a/estate/__manifest__.py +++ b/estate/__manifest__.py @@ -8,5 +8,8 @@ An Real Estate App to buy, sell, and rent properties. """, 'application': True, - 'license': 'LGPL-3' + 'license': 'LGPL-3', + 'data': [ + 'security/ir.model.access.csv', + ], } diff --git a/estate/security/ir.model.access.csv b/estate/security/ir.model.access.csv new file mode 100644 index 00000000000..fe21e56c6d2 --- /dev/null +++ b/estate/security/ir.model.access.csv @@ -0,0 +1,2 @@ +id,name,model_id/id,group_id/id,perm_read,perm_write,perm_create,perm_unlink +estate.access_estate_property,access_estate_property,estate.model_estate_property,base.group_user,1,1,1,1 \ No newline at end of file From 1c7baa0aa5e1e31f7af4f048276b011a0e05de13 Mon Sep 17 00:00:00 2001 From: shsak-odoo Date: Thu, 4 Dec 2025 17:10:44 +0530 Subject: [PATCH 5/7] [IMP] Chapter-5-estate: Added menus,actions and views --- estate/__manifest__.py | 2 ++ estate/models/estate_property.py | 16 ++++++++++++---- estate/views/estate_menus.xml | 7 +++++++ estate/views/estate_property_views.xml | 7 +++++++ 4 files changed, 28 insertions(+), 4 deletions(-) create mode 100644 estate/views/estate_menus.xml create mode 100644 estate/views/estate_property_views.xml diff --git a/estate/__manifest__.py b/estate/__manifest__.py index 4c814f3f75b..70ade2f66c8 100644 --- a/estate/__manifest__.py +++ b/estate/__manifest__.py @@ -11,5 +11,7 @@ 'license': 'LGPL-3', 'data': [ 'security/ir.model.access.csv', + 'views/estate_property_views.xml', + 'views/estate_menus.xml', ], } diff --git a/estate/models/estate_property.py b/estate/models/estate_property.py index 78dda0d6a6a..2150598222c 100644 --- a/estate/models/estate_property.py +++ b/estate/models/estate_property.py @@ -8,16 +8,24 @@ class EstateProperty(models.Model): name = fields.Char(required=True) description = fields.Text() postcode = fields.Char() - date_availability = fields.Date() + date_availability = fields.Date(default=fields.Date.add(fields.Date.today(), month=3), copy=False) expected_price = fields.Float(required=True) - selling_price = fields.Float() - bedrooms = fields.Integer() + selling_price = fields.Float(readonly=True, copy=False) + bedrooms = fields.Integer(default=2) living_area = fields.Integer() facades = fields.Integer() garage = fields.Boolean() garden = fields.Boolean() garden_area = fields.Integer() garden_orientation = fields.Selection( - string='Orientation', + string='Garden Orientation', selection=[('north', 'North'), ('south', 'South'), ('east', 'East'), ('west', 'West')] ) + state = fields.Selection( + string='Status', + selection=[('new','New'), ('offer_received', 'Offer Received'), ('offer_accepted', 'Offer Accepted'), ('sold', 'Sold'), ('cancelled', 'Cancelled')], + default='new', + required=True, + copy=False + ) + active = fields.Boolean(default=True) diff --git a/estate/views/estate_menus.xml b/estate/views/estate_menus.xml new file mode 100644 index 00000000000..17a1223dc5d --- /dev/null +++ b/estate/views/estate_menus.xml @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/estate/views/estate_property_views.xml b/estate/views/estate_property_views.xml new file mode 100644 index 00000000000..ef6aab5f4be --- /dev/null +++ b/estate/views/estate_property_views.xml @@ -0,0 +1,7 @@ + + + Properties + estate_property + list,form + + \ No newline at end of file From 6bf602a99c4f3b4efd7c7975f0a016b3e0719741 Mon Sep 17 00:00:00 2001 From: shsak-odoo Date: Thu, 4 Dec 2025 18:09:58 +0530 Subject: [PATCH 6/7] [FIX] Chapter-5-estate: White Space fix in estate_property model --- estate/models/estate_property.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/estate/models/estate_property.py b/estate/models/estate_property.py index 2150598222c..38ef759a90c 100644 --- a/estate/models/estate_property.py +++ b/estate/models/estate_property.py @@ -23,7 +23,7 @@ class EstateProperty(models.Model): ) state = fields.Selection( string='Status', - selection=[('new','New'), ('offer_received', 'Offer Received'), ('offer_accepted', 'Offer Accepted'), ('sold', 'Sold'), ('cancelled', 'Cancelled')], + selection=[('new', 'New'), ('offer_received', 'Offer Received'), ('offer_accepted', 'Offer Accepted'), ('sold', 'Sold'), ('cancelled', 'Cancelled')], default='new', required=True, copy=False From 9bc24274e0026517500f6b4bc6e7226815f1a497 Mon Sep 17 00:00:00 2001 From: shsak-odoo Date: Fri, 5 Dec 2025 15:54:02 +0530 Subject: [PATCH 7/7] [IMP] Chapter-6-estate: Added form, search, filters, groups views --- estate/models/estate_property.py | 5 +- estate/views/estate_property_views.xml | 73 ++++++++++++++++++++++++++ 2 files changed, 77 insertions(+), 1 deletion(-) diff --git a/estate/models/estate_property.py b/estate/models/estate_property.py index 38ef759a90c..58bac3894dc 100644 --- a/estate/models/estate_property.py +++ b/estate/models/estate_property.py @@ -8,7 +8,10 @@ class EstateProperty(models.Model): name = fields.Char(required=True) description = fields.Text() postcode = fields.Char() - date_availability = fields.Date(default=fields.Date.add(fields.Date.today(), month=3), copy=False) + date_availability = fields.Date( + default=lambda self: fields.Date.add(fields.Date.today(), months=3), + copy=False + ) expected_price = fields.Float(required=True) selling_price = fields.Float(readonly=True, copy=False) bedrooms = fields.Integer(default=2) diff --git a/estate/views/estate_property_views.xml b/estate/views/estate_property_views.xml index ef6aab5f4be..32b10970184 100644 --- a/estate/views/estate_property_views.xml +++ b/estate/views/estate_property_views.xml @@ -1,4 +1,77 @@ + + estate_property_form + estate_property + +
+ +

+ +

+ + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ + + Properties List + estate_property + + + + + + + + + + + + + + + Properties Search + estate_property + + + + + + + + + + + + + + Properties estate_property