From 782b64aa84c4df72ab1c9c5c86e6b5cac6f072b2 Mon Sep 17 00:00:00 2001 From: Kaushal Radadiya Date: Thu, 2 Jul 2026 18:04:29 +0530 Subject: [PATCH 01/17] [ADD] estate: initialize module structure - Create initial module directory with __manifest__.py and __init__.py files for the Odoo training tutorial. --- estate/__init__.py | 0 estate/__manifest__.py | 8 ++++++++ 2 files changed, 8 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..66a59d367d1 --- /dev/null +++ b/estate/__manifest__.py @@ -0,0 +1,8 @@ +{ + 'name': 'Estate', + 'category': 'Sales/CRM', + 'summary': 'Track leads and close opportunities', + 'website': 'https://www.odoo.com/app/crm', + 'application': True, + 'depends': ['base',] +} From 7749bf8ec128ec28ab209a3021a930de9f8bf6f3 Mon Sep 17 00:00:00 2001 From: Kaushal Radadiya Date: Fri, 3 Jul 2026 11:33:21 +0530 Subject: [PATCH 02/17] [CLN] estate: add missing manifest attributes and fix formatting - Add author and license attributes to __manifest__.py. - Fix code formatting issues across the module. --- estate/__manifest__.py | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/estate/__manifest__.py b/estate/__manifest__.py index 66a59d367d1..92c2b420feb 100644 --- a/estate/__manifest__.py +++ b/estate/__manifest__.py @@ -1,8 +1,10 @@ { - 'name': 'Estate', - 'category': 'Sales/CRM', - 'summary': 'Track leads and close opportunities', - 'website': 'https://www.odoo.com/app/crm', - 'application': True, - 'depends': ['base',] + "name": "Estate", + "category": "Sales/CRM", + "summary": "Track leads and close opportunities", + "website": "https://www.odoo.com/app/crm", + "application": True, + "depends": ["base"], + "author": "Kaushal Radadiya", + "license": "LGPL-3", } From 227c9b1c120882138695a3ca4ca0a97bf3f95fa0 Mon Sep 17 00:00:00 2001 From: Kaushal Radadiya Date: Fri, 3 Jul 2026 11:45:15 +0530 Subject: [PATCH 03/17] [CLN] estate: reset empty manifest attributes - Remove empty or unused default fields from __manifest__.py. --- estate/__manifest__.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/estate/__manifest__.py b/estate/__manifest__.py index 92c2b420feb..2e102534446 100644 --- a/estate/__manifest__.py +++ b/estate/__manifest__.py @@ -1,8 +1,8 @@ { "name": "Estate", - "category": "Sales/CRM", - "summary": "Track leads and close opportunities", - "website": "https://www.odoo.com/app/crm", + "category": "", + "summary": "", + "website": "", "application": True, "depends": ["base"], "author": "Kaushal Radadiya", From d348a7545db0f677d1af8e844fe62159697be7c2 Mon Sep 17 00:00:00 2001 From: Kaushal Radadiya Date: Fri, 3 Jul 2026 14:40:45 +0530 Subject: [PATCH 04/17] [ADD] estate: define property model and basic fields - Create 'estate.property' model definition inside models/estate_property.py. - Define core scalar fields for real estate advertisements. --- estate/__init__.py | 1 + estate/__manifest__.py | 2 +- estate/models/__init__.py | 1 + estate/models/estate_property.py | 28 ++++++++++++++++++++++++++++ 4 files changed, 31 insertions(+), 1 deletion(-) 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..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 2e102534446..56c67176804 100644 --- a/estate/__manifest__.py +++ b/estate/__manifest__.py @@ -7,4 +7,4 @@ "depends": ["base"], "author": "Kaushal Radadiya", "license": "LGPL-3", -} +} \ No newline at end of file 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/estate/models/estate_property.py b/estate/models/estate_property.py new file mode 100644 index 00000000000..cb378d77f54 --- /dev/null +++ b/estate/models/estate_property.py @@ -0,0 +1,28 @@ +from odoo import fields, models + +class TestModel(models.Model): + _name = "estate.property" + _description = "Real Estate Property" + + 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( + selection=[ + ("north", "North"), + ("south", "South"), + ("east", "East"), + ("west", "West"), + ], + string="Garden Orientation", + ) From ccf4c490159e38a014618c40b8d4ff44ac5dda81 Mon Sep 17 00:00:00 2001 From: Kaushal Radadiya Date: Fri, 3 Jul 2026 15:10:34 +0530 Subject: [PATCH 05/17] [CLN] estate: fix code formatting and linting style - Clean up Python and XML files to adhere to Odoo PEP8 and XML linting standards. --- estate/__init__.py | 2 +- estate/__manifest__.py | 2 +- estate/models/__init__.py | 2 +- estate/models/estate_property.py | 1 + 4 files changed, 4 insertions(+), 3 deletions(-) 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 56c67176804..2e102534446 100644 --- a/estate/__manifest__.py +++ b/estate/__manifest__.py @@ -7,4 +7,4 @@ "depends": ["base"], "author": "Kaushal Radadiya", "license": "LGPL-3", -} \ No newline at end of file +} 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 cb378d77f54..e87e2ded035 100644 --- a/estate/models/estate_property.py +++ b/estate/models/estate_property.py @@ -1,5 +1,6 @@ from odoo import fields, models + class TestModel(models.Model): _name = "estate.property" _description = "Real Estate Property" From 26db8cd24064633a4f61ac99e42c49718d2f51a1 Mon Sep 17 00:00:00 2001 From: Kaushal Radadiya Date: Fri, 3 Jul 2026 16:04:43 +0530 Subject: [PATCH 06/17] [ADD] estate: configure access rights for property model - Add ir.model.access.csv under security directory. - Register security file in __manifest__.py data list. - Grant CRUD permissions on 'estate.property' to base.group_user. --- estate/__manifest__.py | 4 ++++ estate/security/ir.model.access.csv | 2 ++ 2 files changed, 6 insertions(+) create mode 100644 estate/security/ir.model.access.csv diff --git a/estate/__manifest__.py b/estate/__manifest__.py index 2e102534446..7fb5945598c 100644 --- a/estate/__manifest__.py +++ b/estate/__manifest__.py @@ -4,6 +4,10 @@ "summary": "", "website": "", "application": True, + "installable": True, + "data": [ + "security/ir.model.access.csv", + ], "depends": ["base"], "author": "Kaushal Radadiya", "license": "LGPL-3", 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 c9da40143c9bbeb46fc287a2825ed84f6d9d6211 Mon Sep 17 00:00:00 2001 From: Kaushal Radadiya Date: Mon, 6 Jul 2026 17:38:57 +0530 Subject: [PATCH 07/17] [ADD] estate: add property window action and menu hierarchy - Define window action and 3-tier menu structure for estate module. - Set 'selling_price' field as read-only and disable copy attribute on price fields. - Set default business values for bedrooms and default availability lag. - Add 'active' and 'state' tracking fields to estate.property. --- estate/__manifest__.py | 1 + estate/views/estate_property_views.xml | 12 ++++++++++++ 2 files changed, 13 insertions(+) create mode 100644 estate/views/estate_property_views.xml diff --git a/estate/__manifest__.py b/estate/__manifest__.py index 7fb5945598c..899175202af 100644 --- a/estate/__manifest__.py +++ b/estate/__manifest__.py @@ -7,6 +7,7 @@ "installable": True, "data": [ "security/ir.model.access.csv", + "views/estate_property_views.xml", ], "depends": ["base"], "author": "Kaushal Radadiya", diff --git a/estate/views/estate_property_views.xml b/estate/views/estate_property_views.xml new file mode 100644 index 00000000000..8737483cbf9 --- /dev/null +++ b/estate/views/estate_property_views.xml @@ -0,0 +1,12 @@ + + + + Properties + estate.property + list,form + + + + + \ No newline at end of file From 0679061bf9940697e855c357172b939d8d5caca8 Mon Sep 17 00:00:00 2001 From: Kaushal Radadiya Date: Mon, 6 Jul 2026 18:36:21 +0530 Subject: [PATCH 08/17] [CLN] tutorials: ignore and untrack IDE configuration files - Add .idea/ folder to .gitignore. - Remove cached PyCharm environment files from git tracking. --- .gitignore | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index b6e47617de1..1b9e130f9ff 100644 --- a/.gitignore +++ b/.gitignore @@ -26,7 +26,7 @@ share/python-wheels/ .installed.cfg *.egg MANIFEST - +.idea # PyInstaller # Usually these files are written by a python script from a template # before PyInstaller builds the exe, so as to inject date/other infos into it. From 8ea0503a2053456aa62de4a011e8007c39d8fb6a Mon Sep 17 00:00:00 2001 From: Kaushal Radadiya Date: Tue, 7 Jul 2026 18:59:27 +0530 Subject: [PATCH 09/17] [ADD] estate: define basic list view for property model - Add list view for 'estate.property' containing key fields including title, postcode, living area, and pricing attributes. --- estate/views/estate_property_views.xml | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/estate/views/estate_property_views.xml b/estate/views/estate_property_views.xml index 8737483cbf9..3916bd74f02 100644 --- a/estate/views/estate_property_views.xml +++ b/estate/views/estate_property_views.xml @@ -9,4 +9,23 @@ + + + + estate.property.list + estate.property + + + + + + + + + + + + + + \ No newline at end of file From d71b0a316f4a70be85923e944481d6bfe16e1cca Mon Sep 17 00:00:00 2001 From: Kaushal Radadiya Date: Wed, 8 Jul 2026 12:18:07 +0530 Subject: [PATCH 10/17] [FIX] estate: resolve field name mismatches in property list view - Rename list view fields 'title' to 'name' and 'available_from' to 'date_availability' to match Python model field definitions. - Fix ParseErrors encountered during module loading. --- estate/views/estate_property_views.xml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/estate/views/estate_property_views.xml b/estate/views/estate_property_views.xml index 3916bd74f02..34f62568710 100644 --- a/estate/views/estate_property_views.xml +++ b/estate/views/estate_property_views.xml @@ -10,19 +10,19 @@ - + estate.property.list estate.property - + - + From f71cc19c04e5089e6c31b4b61b76f26f48a3d123 Mon Sep 17 00:00:00 2001 From: Kaushal Radadiya Date: Wed, 8 Jul 2026 18:50:34 +0530 Subject: [PATCH 11/17] [ADD] estate: define custom form view for property model - Add basic form view architecture for 'estate.property'. - Organize view structure with title, property parameters group, and a description notebook. --- estate/views/estate_property_views.xml | 47 ++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) diff --git a/estate/views/estate_property_views.xml b/estate/views/estate_property_views.xml index 34f62568710..15ac4b17883 100644 --- a/estate/views/estate_property_views.xml +++ b/estate/views/estate_property_views.xml @@ -15,6 +15,7 @@ estate.property.list estate.property + @@ -24,6 +25,52 @@ + + + + + + estate.property.list + estate.property + + +
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
From a1b64f14712c6a7ac74e1f2248b0a88e3f12ccba Mon Sep 17 00:00:00 2001 From: Kaushal Radadiya Date: Thu, 9 Jul 2026 17:53:13 +0530 Subject: [PATCH 12/17] [ADD] estate: define search view for property model - Add initial search view definition for 'estate.property'. - Include searchable fields: title, postcode, expected_price, bedrooms, living_area, and facades. --- estate/views/estate_property_views.xml | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/estate/views/estate_property_views.xml b/estate/views/estate_property_views.xml index 15ac4b17883..c11a3803210 100644 --- a/estate/views/estate_property_views.xml +++ b/estate/views/estate_property_views.xml @@ -10,7 +10,7 @@ - + estate.property.list estate.property @@ -29,6 +29,7 @@ + estate.property.list estate.property @@ -74,5 +75,22 @@ + + + estate.property.list + estate.property + + + + + + + + + + + + + \ No newline at end of file From 3362e17578f99a455dc02688c7b30c101608007d Mon Sep 17 00:00:00 2001 From: Kaushal Radadiya Date: Mon, 13 Jul 2026 18:36:08 +0530 Subject: [PATCH 13/17] [ADD] estate: add filters and grouping to property search view - Add predefined filter for available properties (state 'new' or 'offer_received'). - Add 'Postcode' group-by rule to the search view layout. --- estate/views/estate_property_views.xml | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/estate/views/estate_property_views.xml b/estate/views/estate_property_views.xml index c11a3803210..bf6df5ac8fa 100644 --- a/estate/views/estate_property_views.xml +++ b/estate/views/estate_property_views.xml @@ -10,7 +10,7 @@ - + estate.property.list estate.property @@ -29,7 +29,7 @@ - + estate.property.list estate.property @@ -75,19 +75,27 @@ - + estate.property.list estate.property + + + + + + + + From 39fb51a9a7c9a6242e40769d1c7238bd022a2acb Mon Sep 17 00:00:00 2001 From: Kaushal Radadiya Date: Mon, 13 Jul 2026 18:53:35 +0530 Subject: [PATCH 14/17] [IMP] estate: add field attributes, defaults, and state tracking - Configure 'selling_price' field as read-only. - Prevent field duplication on copy for prices and availability dates. - Add default values for bedrooms and date_availability. - Add 'state' selection field and 'active' boolean for record lifecycle tracking. --- estate/models/estate_property.py | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/estate/models/estate_property.py b/estate/models/estate_property.py index e87e2ded035..b66ab6c128f 100644 --- a/estate/models/estate_property.py +++ b/estate/models/estate_property.py @@ -27,3 +27,20 @@ class TestModel(models.Model): ], string="Garden Orientation", ) + + +active = fields.Boolean(default=True) + +state = fields.Selection( + selection=[ + ("new", "New"), + ("offer_received", "Offer Received"), + ("offer_accepted", "Offer Accepted"), + ("sold", "Sold"), + ("cancelled", "Cancelled"), + ], + required=True, + copy=False, + default="new", + string="Status", +) From 5eaa961438a7055b150ec71c61057e205bf3c749 Mon Sep 17 00:00:00 2001 From: Kaushal Radadiya Date: Mon, 13 Jul 2026 19:03:07 +0530 Subject: [PATCH 15/17] [IMP] estate: bump version to trigger database schema sync - Increase module version in __manifest__.py to force Odoo database registry update. --- estate/__manifest__.py | 1 + estate/views/estate_property_views.xml | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/estate/__manifest__.py b/estate/__manifest__.py index 899175202af..344dab26f9e 100644 --- a/estate/__manifest__.py +++ b/estate/__manifest__.py @@ -1,5 +1,6 @@ { "name": "Estate", + "version": "1.1", "category": "", "summary": "", "website": "", diff --git a/estate/views/estate_property_views.xml b/estate/views/estate_property_views.xml index bf6df5ac8fa..38ede48f6d5 100644 --- a/estate/views/estate_property_views.xml +++ b/estate/views/estate_property_views.xml @@ -77,7 +77,7 @@ - estate.property.list + estate.property.search estate.property From f137c59e99198bdbafdf4deb669e5fa926c19891 Mon Sep 17 00:00:00 2001 From: Kaushal Radadiya Date: Tue, 14 Jul 2026 17:44:58 +0530 Subject: [PATCH 16/17] [FIX] estate: improve property model fields and search view layout - Reorder model fields to position 'state' before 'active' attribute. - Fix form view name definition from 'estate.property.list' to 'estate.property.form'. - Add missing 'state' field to both list and form views. - Remove redundant string attributes on search fields to inherit model labels. - Clean up syntax formatting, filter spacing, and group-by layout in search view.. --- estate/models/estate_property.py | 29 ++++++++++++------------ estate/views/estate_property_views.xml | 31 +++++++++++++------------- 2 files changed, 29 insertions(+), 31 deletions(-) diff --git a/estate/models/estate_property.py b/estate/models/estate_property.py index b66ab6c128f..78aedfaa9b1 100644 --- a/estate/models/estate_property.py +++ b/estate/models/estate_property.py @@ -28,19 +28,18 @@ class TestModel(models.Model): string="Garden Orientation", ) + state = fields.Selection( + selection=[ + ("new", "New"), + ("offer_received", "Offer Received"), + ("offer_accepted", "Offer Accepted"), + ("sold", "Sold"), + ("cancelled", "Cancelled"), + ], + required=True, + copy=False, + default="new", + string="Status", + ) -active = fields.Boolean(default=True) - -state = fields.Selection( - selection=[ - ("new", "New"), - ("offer_received", "Offer Received"), - ("offer_accepted", "Offer Accepted"), - ("sold", "Sold"), - ("cancelled", "Cancelled"), - ], - required=True, - copy=False, - default="new", - string="Status", -) + active = fields.Boolean(default=True) diff --git a/estate/views/estate_property_views.xml b/estate/views/estate_property_views.xml index 38ede48f6d5..0bfb080d5c3 100644 --- a/estate/views/estate_property_views.xml +++ b/estate/views/estate_property_views.xml @@ -17,13 +17,14 @@ - + + @@ -31,7 +32,7 @@ - estate.property.list + estate.property.form estate.property @@ -65,6 +66,7 @@ + @@ -75,29 +77,26 @@ + estate.property.search estate.property + - + + + + + + - - - - - - - - - - - - + + - From f2a88fcc1d33d5cb29e074a1a2e7766e3c2d3c12 Mon Sep 17 00:00:00 2001 From: Kaushal Radadiya Date: Tue, 21 Jul 2026 14:18:34 +0530 Subject: [PATCH 17/17] [REF] estate: move menus to separate file and fix code style - Move menu items from estate_property_views.xml to views/estate_menus.xml to maintain view separation standards. - Update __manifest__.py data order to load menus after views. - Clean up whitespace and ensure files end with a trailing newline. --- .gitignore | 1 - estate/__manifest__.py | 1 + estate/security/ir.model.access.csv | 2 +- estate/views/estate_menus.xml | 18 ++++++++++++++++++ estate/views/estate_property_views.xml | 16 +--------------- 5 files changed, 21 insertions(+), 17 deletions(-) create mode 100644 estate/views/estate_menus.xml diff --git a/.gitignore b/.gitignore index 1b9e130f9ff..736fa2fc3ce 100644 --- a/.gitignore +++ b/.gitignore @@ -26,7 +26,6 @@ share/python-wheels/ .installed.cfg *.egg MANIFEST -.idea # PyInstaller # Usually these files are written by a python script from a template # before PyInstaller builds the exe, so as to inject date/other infos into it. diff --git a/estate/__manifest__.py b/estate/__manifest__.py index 344dab26f9e..54e9aefb7b4 100644 --- a/estate/__manifest__.py +++ b/estate/__manifest__.py @@ -9,6 +9,7 @@ "data": [ "security/ir.model.access.csv", "views/estate_property_views.xml", + "views/estate_menus.xml", ], "depends": ["base"], "author": "Kaushal Radadiya", 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_menus.xml b/estate/views/estate_menus.xml new file mode 100644 index 00000000000..2cf39704816 --- /dev/null +++ b/estate/views/estate_menus.xml @@ -0,0 +1,18 @@ + + + + + + + + + + + + diff --git a/estate/views/estate_property_views.xml b/estate/views/estate_property_views.xml index 0bfb080d5c3..2de6058495a 100644 --- a/estate/views/estate_property_views.xml +++ b/estate/views/estate_property_views.xml @@ -5,17 +5,12 @@ estate.property list,form - - - estate.property.list estate.property - @@ -26,7 +21,6 @@ - @@ -35,7 +29,6 @@ estate.property.form estate.property -
@@ -43,7 +36,6 @@
- @@ -54,7 +46,6 @@ - @@ -70,21 +61,17 @@ -
-
- estate.property.search estate.property - @@ -99,5 +86,4 @@ - - \ No newline at end of file +