From c797ef9107579b9063c6a212d4486beeb1c7ab5c Mon Sep 17 00:00:00 2001 From: sadeo-odoo Date: Thu, 7 May 2026 21:49:33 +0530 Subject: [PATCH 01/10] [ADD] Completed chapter 1 and chapter 2 and setup for initial estate module --- estate/__init__.py | 0 estate/__manifest__.py | 0 2 files changed, 0 insertions(+), 0 deletions(-) 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..e69de29bb2d From a78e93176b2acbf719219665eb12af5f2fcc2f7e Mon Sep 17 00:00:00 2001 From: sadeo-odoo Date: Fri, 8 May 2026 18:18:31 +0530 Subject: [PATCH 02/10] [ADD] Completed Python oops and completed task for chapter 2 --- app/__init__.py | 0 app/__manifest__.py | 7 +++++++ 2 files changed, 7 insertions(+) create mode 100644 app/__init__.py create mode 100644 app/__manifest__.py diff --git a/app/__init__.py b/app/__init__.py new file mode 100644 index 00000000000..e69de29bb2d diff --git a/app/__manifest__.py b/app/__manifest__.py new file mode 100644 index 00000000000..39c37450537 --- /dev/null +++ b/app/__manifest__.py @@ -0,0 +1,7 @@ +{ + "name":"app", + "version":"1.0", + "depends": ["base"], + "application": True, + "installable": True, +} \ No newline at end of file From 5594d3d1cfa02814bee96afb0b0fca309a724dc1 Mon Sep 17 00:00:00 2001 From: sadeo-odoo Date: Mon, 11 May 2026 18:51:54 +0530 Subject: [PATCH 03/10] [ADD] real_estate:added initial setup files for models: Completed intial set for models and started learning about ORM --- app/__manifest__.py | 7 ------- estate/__init__.py | 1 + estate/__manifest__.py | 12 ++++++++++++ estate/models/__init__.py | 1 + app/__init__.py => estate/models/estate_property.py | 0 5 files changed, 14 insertions(+), 7 deletions(-) delete mode 100644 app/__manifest__.py create mode 100644 estate/models/__init__.py rename app/__init__.py => estate/models/estate_property.py (100%) diff --git a/app/__manifest__.py b/app/__manifest__.py deleted file mode 100644 index 39c37450537..00000000000 --- a/app/__manifest__.py +++ /dev/null @@ -1,7 +0,0 @@ -{ - "name":"app", - "version":"1.0", - "depends": ["base"], - "application": True, - "installable": True, -} \ No newline at end of file diff --git a/estate/__init__.py b/estate/__init__.py index e69de29bb2d..9a7e03eded3 100644 --- a/estate/__init__.py +++ b/estate/__init__.py @@ -0,0 +1 @@ +from . import models \ No newline at end of file diff --git a/estate/__manifest__.py b/estate/__manifest__.py index e69de29bb2d..168b476c554 100644 --- a/estate/__manifest__.py +++ b/estate/__manifest__.py @@ -0,0 +1,12 @@ +{ + 'name': 'estate', + 'version': '1.0', + 'depends': ['base'], + 'category': 'tutorials', + 'author': "sadeo-odoo", + 'license': 'LGPL-3', + 'description': "A real estate module", + 'installable': True, + 'application': True, + +} diff --git a/estate/models/__init__.py b/estate/models/__init__.py new file mode 100644 index 00000000000..599a1f8bdbd --- /dev/null +++ b/estate/models/__init__.py @@ -0,0 +1 @@ +from . import estate_property \ No newline at end of file diff --git a/app/__init__.py b/estate/models/estate_property.py similarity index 100% rename from app/__init__.py rename to estate/models/estate_property.py From 37544c262206b8c20a0c726d6999737954238ee4 Mon Sep 17 00:00:00 2001 From: sadeo-odoo Date: Tue, 12 May 2026 18:41:44 +0530 Subject: [PATCH 04/10] [ADD] estate : completed task of models and added required fields in estate_property --- estate/__manifest__.py | 2 +- estate/models/estate_property.py | 25 +++++++++++++++++++++++++ 2 files changed, 26 insertions(+), 1 deletion(-) diff --git a/estate/__manifest__.py b/estate/__manifest__.py index 168b476c554..3842964b2b3 100644 --- a/estate/__manifest__.py +++ b/estate/__manifest__.py @@ -5,7 +5,7 @@ 'category': 'tutorials', 'author': "sadeo-odoo", 'license': 'LGPL-3', - 'description': "A real estate module", + 'description': 'A real estate module', 'installable': True, 'application': True, diff --git a/estate/models/estate_property.py b/estate/models/estate_property.py index e69de29bb2d..883cdb30158 100644 --- a/estate/models/estate_property.py +++ b/estate/models/estate_property.py @@ -0,0 +1,25 @@ +from odoo import fields,models + +class EstateProperty(models.Model): + _name='estate.property' + _descripion='Estate Property description module' + name=fields.Char(string='Name',required=True) + description=fields.Text(string='Description') + bedrooms=fields.Integer(string='Bedrooms') + price = fields.Float(string='Price') + garden = fields.Boolean(string='Garden') + postcode = fields.Char(string='Postal Code') + date_available = fields.Date(string='Available Date') + expected_price = fields.Float(string='Expected Price') + selling_price = fields.Float(string='Selling Price',required=True) + meeting_time = fields.Datetime(string='Meeting') + living_area = fields.Integer(string='Living Area') + facades = fields.Integer(string='Facades') + garage = fields.Boolean(string='Garage') + garden = fields.Boolean(string='Garden') + garden_area = fields.Integer(string='Garden Area') + garden_orientation=fields.Selection( + [ + ('north','North'),('south','South'),('east','East'),('west','West') + ] + ) From 8c08bd39c06937dac866c98b8fbf27cad53d088f Mon Sep 17 00:00:00 2001 From: sadeo-odoo Date: Tue, 12 May 2026 18:50:30 +0530 Subject: [PATCH 05/10] [ADD] estate: add fields to estate property model Added the required fields for the estate.property model to complete the initial model structure of the Estate module tutorial. Also marked important fields such as name and selling_price as required to ensure proper data validation. --- 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 883cdb30158..3507056d750 100644 --- a/estate/models/estate_property.py +++ b/estate/models/estate_property.py @@ -1,4 +1,4 @@ -from odoo import fields,models +_propertfrom odoo import fields,models class EstateProperty(models.Model): _name='estate.property' From 7697f39f08ad5f0d7937dc6bbf977709692d24f8 Mon Sep 17 00:00:00 2001 From: sadeo-odoo Date: Thu, 14 May 2026 18:24:27 +0530 Subject: [PATCH 06/10] [ADD] Chapter 4 (Security) Added security access rules for the Estate module. Created ir.model.access.csv in the security folder. Configured read, write, create and delete permissions for base.group_user. Updated manifest file to load security data files. --- estate/__manifest__.py | 3 +++ estate/models/estate_property.py | 4 ++-- estate/security/ir.model.access.csv | 2 ++ 3 files changed, 7 insertions(+), 2 deletions(-) create mode 100644 estate/security/ir.model.access.csv diff --git a/estate/__manifest__.py b/estate/__manifest__.py index 3842964b2b3..452d41887c7 100644 --- a/estate/__manifest__.py +++ b/estate/__manifest__.py @@ -8,5 +8,8 @@ 'description': 'A real estate module', 'installable': True, 'application': True, + 'data':[ + 'security/ir.model.access.csv', + ] } diff --git a/estate/models/estate_property.py b/estate/models/estate_property.py index 3507056d750..7d1ca20a19e 100644 --- a/estate/models/estate_property.py +++ b/estate/models/estate_property.py @@ -1,8 +1,8 @@ -_propertfrom odoo import fields,models +from odoo import fields,models class EstateProperty(models.Model): _name='estate.property' - _descripion='Estate Property description module' + _descripion='Estate Property description modulee' name=fields.Char(string='Name',required=True) description=fields.Text(string='Description') bedrooms=fields.Integer(string='Bedrooms') diff --git a/estate/security/ir.model.access.csv b/estate/security/ir.model.access.csv new file mode 100644 index 00000000000..0e11f47e58d --- /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 +access_estate_property,access_estate_property,model_estate_property,base.group_user,1,1,1,1 \ No newline at end of file From 991777f9abb00062f29b7d6d56de51b2ba8227a4 Mon Sep 17 00:00:00 2001 From: sadeo-odoo Date: Fri, 15 May 2026 18:42:08 +0530 Subject: [PATCH 07/10] [ADD] estate: introduce first UI action - Learned Odoo XML data file structure - Created estate_property_views.xml in views folder - Added window action for estate.property model - Configured list and form view modes - Registered XML file in __manifest__.py --- estate/__init__.py | 2 +- estate/__manifest__.py | 2 +- estate/models/__init__.py | 2 +- estate/models/estate_property.py | 1 + estate/security/ir.model.access.csv | 2 +- estate/views/estate_property_views.xml | 7 +++++++ 6 files changed, 12 insertions(+), 4 deletions(-) create mode 100644 estate/views/estate_property_views.xml diff --git a/estate/__init__.py b/estate/__init__.py index 9a7e03eded3..0650744f6bc 100644 --- a/estate/__init__.py +++ b/estate/__init__.py @@ -1 +1 @@ -from . import models \ No newline at end of file +from . import models diff --git a/estate/__manifest__.py b/estate/__manifest__.py index 452d41887c7..ca66b80832f 100644 --- a/estate/__manifest__.py +++ b/estate/__manifest__.py @@ -10,6 +10,6 @@ 'application': True, 'data':[ 'security/ir.model.access.csv', + 'views/estate_property_views.xml', ] - } diff --git a/estate/models/__init__.py b/estate/models/__init__.py index 599a1f8bdbd..5e1963c9d2f 100644 --- a/estate/models/__init__.py +++ b/estate/models/__init__.py @@ -1 +1 @@ -from . import estate_property \ No newline at end of file +from . import estate_property diff --git a/estate/models/estate_property.py b/estate/models/estate_property.py index 7d1ca20a19e..1c1c4e667fc 100644 --- a/estate/models/estate_property.py +++ b/estate/models/estate_property.py @@ -23,3 +23,4 @@ class EstateProperty(models.Model): ('north','North'),('south','South'),('east','East'),('west','West') ] ) + diff --git a/estate/security/ir.model.access.csv b/estate/security/ir.model.access.csv index 0e11f47e58d..32389642d4f 100644 --- a/estate/security/ir.model.access.csv +++ b/estate/security/ir.model.access.csv @@ -1,2 +1,2 @@ id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink -access_estate_property,access_estate_property,model_estate_property,base.group_user,1,1,1,1 \ No newline at end of file +access_estate_property,access_estate_property,model_estate_property,base.group_user,1,1,1,1 diff --git a/estate/views/estate_property_views.xml b/estate/views/estate_property_views.xml new file mode 100644 index 00000000000..09424ecba91 --- /dev/null +++ b/estate/views/estate_property_views.xml @@ -0,0 +1,7 @@ + + + Estate Properties + estate.property + list,form + + From 2f8fef157381050c426ab8ca3ab86af6cf233922 Mon Sep 17 00:00:00 2001 From: sadeo-odoo Date: Mon, 18 May 2026 18:47:47 +0530 Subject: [PATCH 08/10] [ADD] estate: add menus and field improvements - Added estate_menus.xml and linked menu actions - Connected estate.property model with UI menus - Added readonly and non-copy field attributes - Set default values for bedrooms and availability date - Added active and state reserved fields with defaults - Improved Estate module UI interaction and behavior --- estate/__manifest__.py | 1 + estate/models/estate_property.py | 18 ++++++++++++++---- estate/views/estate_menus.xml | 7 +++++++ 3 files changed, 22 insertions(+), 4 deletions(-) create mode 100644 estate/views/estate_menus.xml diff --git a/estate/__manifest__.py b/estate/__manifest__.py index ca66b80832f..a5678adebfc 100644 --- a/estate/__manifest__.py +++ b/estate/__manifest__.py @@ -11,5 +11,6 @@ '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 1c1c4e667fc..f5be6dc9c23 100644 --- a/estate/models/estate_property.py +++ b/estate/models/estate_property.py @@ -1,3 +1,4 @@ +from dateutil.relativedelta import relativedelta from odoo import fields,models class EstateProperty(models.Model): @@ -5,13 +6,13 @@ class EstateProperty(models.Model): _descripion='Estate Property description modulee' name=fields.Char(string='Name',required=True) description=fields.Text(string='Description') - bedrooms=fields.Integer(string='Bedrooms') + bedrooms=fields.Integer(string='Bedrooms',default=2) price = fields.Float(string='Price') garden = fields.Boolean(string='Garden') postcode = fields.Char(string='Postal Code') - date_available = fields.Date(string='Available Date') + date_available = fields.Date(string='Available Date',copy=False,default=lambda self:fields.Date.today() + relativedelta(months=3)) expected_price = fields.Float(string='Expected Price') - selling_price = fields.Float(string='Selling Price',required=True) + selling_price = fields.Float(string='Selling Price',readonly=True,copy=False) meeting_time = fields.Datetime(string='Meeting') living_area = fields.Integer(string='Living Area') facades = fields.Integer(string='Facades') @@ -23,4 +24,13 @@ class EstateProperty(models.Model): ('north','North'),('south','South'),('east','East'),('west','West') ] ) - + active=fields.Boolean(default=True) + state=fields.Selection( + [ + ('new','New'),('offer_received','Offer Received'),('offer_accepted','Offer Accepted'),('sold','Sold'),('canceled','Canceled') + ], + default='new', + string='Status', + copy=False, + required=True + ) diff --git a/estate/views/estate_menus.xml b/estate/views/estate_menus.xml new file mode 100644 index 00000000000..59f03384878 --- /dev/null +++ b/estate/views/estate_menus.xml @@ -0,0 +1,7 @@ + + + + + + + From 058979badaf772ea406b4dfc8371880af98c8096 Mon Sep 17 00:00:00 2001 From: sadeo-odoo Date: Wed, 20 May 2026 18:40:04 +0530 Subject: [PATCH 09/10] [ADD] estate: create custom list and form views - Added custom list view for estate.property - Added structured form view with grouped fields - Improved UI layout for property records - Organized fields using sheet, group and notebook tags - Updated estate_property_views.xml for better usability --- estate/views/estate_property_views.xml | 94 +++++++++++++++++++++++++- 1 file changed, 91 insertions(+), 3 deletions(-) diff --git a/estate/views/estate_property_views.xml b/estate/views/estate_property_views.xml index 09424ecba91..a6ecec4688e 100644 --- a/estate/views/estate_property_views.xml +++ b/estate/views/estate_property_views.xml @@ -1,7 +1,95 @@ - + Estate Properties estate.property list,form - - + + + + + Estate.properties.list + estate.property + + + + + + + + + + + + + + + + + estate.property.form + estate.property + + +
+ + + +
+

+ +

+

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ + +
+ + + \ No newline at end of file From 3d8835cb5be354c5ab30b3e184e460fd32537e16 Mon Sep 17 00:00:00 2001 From: sadeo-odoo Date: Thu, 21 May 2026 18:32:54 +0530 Subject: [PATCH 10/10] [ADD] estate: implement custom search view and filters - Added custom search view for estate.property - Added searchable fields for property records - Implemented Available properties filter using domain - Added Group By option for postcode - Improved property filtering and search experience --- estate/views/estate_property_views.xml | 34 ++++++++++++++++++++++++-- 1 file changed, 32 insertions(+), 2 deletions(-) diff --git a/estate/views/estate_property_views.xml b/estate/views/estate_property_views.xml index a6ecec4688e..69980e2549a 100644 --- a/estate/views/estate_property_views.xml +++ b/estate/views/estate_property_views.xml @@ -91,5 +91,35 @@ - - \ No newline at end of file + + + estate.property.form + estate.property + + + + + + + + + + + + + + + + + + + + +