From 064c8b618629fc63f84235145abbbd1c6679665f Mon Sep 17 00:00:00 2001 From: Piyush11204 Date: Thu, 2 Jul 2026 16:40:58 +0530 Subject: [PATCH 01/11] [ADD] estate: add real estate module --- estate/__init__.py | 0 estate/__manifest__.py | 14 ++++++++++++++ 2 files changed, 14 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..f1e0e3932e0 --- /dev/null +++ b/estate/__manifest__.py @@ -0,0 +1,14 @@ +{ + "name": "Real Estate", + "version": "1.0", + "summary": "Real Estate Management", + "description": """ + Real Estate Tutorial Module + """, + "author": "Piyush", + "category": "Tutorials", + "depends": ["base"], + "data": [], + "application": True, + "installable": True, +} \ No newline at end of file From ce23a4d2888bf24e7a79cf6441057d0abb97a3b5 Mon Sep 17 00:00:00 2001 From: Piyush11204 Date: Thu, 2 Jul 2026 18:43:33 +0530 Subject: [PATCH 02/11] [ADD] estate: add property model --- estate/models/__init__.py | 0 estate/models/estate_property.py | 10 ++++++++++ 2 files changed, 10 insertions(+) create mode 100644 estate/models/__init__.py create mode 100644 estate/models/estate_property.py diff --git a/estate/models/__init__.py b/estate/models/__init__.py new file mode 100644 index 00000000000..e69de29bb2d diff --git a/estate/models/estate_property.py b/estate/models/estate_property.py new file mode 100644 index 00000000000..88f2df97caa --- /dev/null +++ b/estate/models/estate_property.py @@ -0,0 +1,10 @@ +from odoo import fields,models + + +class EstateProperty(models.Model): + _name = "estate.property" + _description = "Real Estate Property" + + name = fields.Char() + expected_price = fields.Float() + bedrooms = fields.Integer() \ No newline at end of file From 19e03bdbab79230c28f0e183de775518a2d739b5 Mon Sep 17 00:00:00 2001 From: Piyush11204 Date: Fri, 3 Jul 2026 11:20:59 +0530 Subject: [PATCH 03/11] [LINT] estate: fix coding style issues --- estate/__init__.py | 1 + estate/__manifest__.py | 3 ++- estate/models/__init__.py | 1 + estate/models/estate_property.py | 32 +++++++++++++++++++++++++++----- 4 files changed, 31 insertions(+), 6 deletions(-) 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/__manifest__.py b/estate/__manifest__.py index f1e0e3932e0..d3eebb7b27b 100644 --- a/estate/__manifest__.py +++ b/estate/__manifest__.py @@ -8,7 +8,8 @@ "author": "Piyush", "category": "Tutorials", "depends": ["base"], + "license": "LGPL-3", "data": [], "application": True, "installable": True, -} \ No newline at end of file +} diff --git a/estate/models/__init__.py b/estate/models/__init__.py index e69de29bb2d..5e1963c9d2f 100644 --- a/estate/models/__init__.py +++ 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 index 88f2df97caa..bf182c4231d 100644 --- a/estate/models/estate_property.py +++ b/estate/models/estate_property.py @@ -1,10 +1,32 @@ -from odoo import fields,models +from odoo import fields, models class EstateProperty(models.Model): _name = "estate.property" _description = "Real Estate Property" - - name = fields.Char() - expected_price = fields.Float() - bedrooms = fields.Integer() \ No newline at end of file + + 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 60e1b806d2343074f480cdac63d29a36b48df540 Mon Sep 17 00:00:00 2001 From: Piyush11204 Date: Fri, 3 Jul 2026 14:06:33 +0530 Subject: [PATCH 04/11] [LINT] estate: fix the lint error --- 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 bf182c4231d..1ee01deefc3 100644 --- a/estate/models/estate_property.py +++ b/estate/models/estate_property.py @@ -28,5 +28,5 @@ class EstateProperty(models.Model): ("east", "East"), ("west", "West"), ], - string="Garden Orientation", + string="Garden Orientation", ) From 3356b1afb4d734cc843470527323b42842fa75ac Mon Sep 17 00:00:00 2001 From: Piyush11204 Date: Fri, 3 Jul 2026 15:18:43 +0530 Subject: [PATCH 05/11] [ADD] estate: add access control for estate property model --- estate/__manifest__.py | 4 +++- estate/security/ir.model.access.csv | 2 ++ 2 files changed, 5 insertions(+), 1 deletion(-) create mode 100644 estate/security/ir.model.access.csv diff --git a/estate/__manifest__.py b/estate/__manifest__.py index d3eebb7b27b..ffff1be3ad5 100644 --- a/estate/__manifest__.py +++ b/estate/__manifest__.py @@ -9,7 +9,9 @@ "category": "Tutorials", "depends": ["base"], "license": "LGPL-3", - "data": [], + "data": [ + "security/ir.model.access.csv", + ], "application": True, "installable": True, } 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 34a9ee245781d627b8b028de5938203ec73f94e5 Mon Sep 17 00:00:00 2001 From: Piyush11204 Date: Fri, 3 Jul 2026 17:03:38 +0530 Subject: [PATCH 06/11] [LINT] estate: Fix the issues --- estate/models/estate_property.py | 2 +- estate/security/ir.model.access.csv | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/estate/models/estate_property.py b/estate/models/estate_property.py index 1ee01deefc3..26ada06338b 100644 --- a/estate/models/estate_property.py +++ b/estate/models/estate_property.py @@ -4,7 +4,7 @@ class EstateProperty(models.Model): _name = "estate.property" _description = "Real Estate Property" - + name = fields.Char(required=True) description = fields.Text() postcode = fields.Char() 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 From f8a252cbb01287d0e188e71f2f29bd0eaf45d536 Mon Sep 17 00:00:00 2001 From: Piyush11204 Date: Fri, 3 Jul 2026 17:12:17 +0530 Subject: [PATCH 07/11] [LINT] estate: Fix spacing issue --- 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 26ada06338b..1ee01deefc3 100644 --- a/estate/models/estate_property.py +++ b/estate/models/estate_property.py @@ -4,7 +4,7 @@ class EstateProperty(models.Model): _name = "estate.property" _description = "Real Estate Property" - + name = fields.Char(required=True) description = fields.Text() postcode = fields.Char() From cdbaa7f9e22719254c960aaf37e48edfd1724d4f Mon Sep 17 00:00:00 2001 From: Piyush11204 Date: Mon, 6 Jul 2026 16:32:39 +0530 Subject: [PATCH 08/11] [ADD] estate: add views and menus for estate property management --- estate/__manifest__.py | 4 +++- estate/models/estate_property.py | 23 ++++++++++++++++++++--- estate/views/estate_menus.xml | 11 +++++++++++ estate/views/estate_property_views.xml | 10 ++++++++++ 4 files changed, 44 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 ffff1be3ad5..5168c1131ef 100644 --- a/estate/__manifest__.py +++ b/estate/__manifest__.py @@ -11,7 +11,9 @@ "license": "LGPL-3", "data": [ "security/ir.model.access.csv", - ], + "views/estate_property_views.xml", + "views/estate_menus.xml" + ], "application": True, "installable": True, } diff --git a/estate/models/estate_property.py b/estate/models/estate_property.py index 1ee01deefc3..a78e05df8e7 100644 --- a/estate/models/estate_property.py +++ b/estate/models/estate_property.py @@ -8,10 +8,12 @@ class EstateProperty(models.Model): name = fields.Char(required=True) description = fields.Text() postcode = fields.Char() - date_availability = fields.Date() + date_availability = fields.Date( + copy=False, + ) expected_price = fields.Float(required=True) - selling_price = fields.Float() + selling_price = fields.Float(readonly=True, copy=False) bedrooms = fields.Integer() living_area = fields.Integer() @@ -29,4 +31,19 @@ class EstateProperty(models.Model): ("west", "West"), ], string="Garden Orientation", -) + ) + + active = fields.Boolean(default=True) + + state = fields.Selection( + selection=[ + ("new", "New"), + ("offer_received", "Offer Received"), + ("offer_accepted", "Offer Accepted"), + ("sold", "Sold"), + ("canceled", "Canceled"), + ], + copy=False, + default="new", + required=True, + ) diff --git a/estate/views/estate_menus.xml b/estate/views/estate_menus.xml new file mode 100644 index 00000000000..43fd2117852 --- /dev/null +++ b/estate/views/estate_menus.xml @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/estate/views/estate_property_views.xml b/estate/views/estate_property_views.xml new file mode 100644 index 00000000000..3c257dc4165 --- /dev/null +++ b/estate/views/estate_property_views.xml @@ -0,0 +1,10 @@ + + + + + Properties + estate.property + list,form + + + From 3cd746f4d45c17beddba53fe4a984bb51e9bfbfe Mon Sep 17 00:00:00 2001 From: Piyush11204 Date: Mon, 6 Jul 2026 17:38:42 +0530 Subject: [PATCH 09/11] [FIX] estate: set default value for bedrooms and fix date_availability default --- estate/models/estate_property.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/estate/models/estate_property.py b/estate/models/estate_property.py index a78e05df8e7..6e920a46a0a 100644 --- a/estate/models/estate_property.py +++ b/estate/models/estate_property.py @@ -9,13 +9,13 @@ class EstateProperty(models.Model): description = fields.Text() postcode = fields.Char() date_availability = fields.Date( - copy=False, + copy=False, default=lambda self: fields.Date.add(fields.Date.today(), months=3) ) expected_price = fields.Float(required=True) selling_price = fields.Float(readonly=True, copy=False) - bedrooms = fields.Integer() + bedrooms = fields.Integer(default=2) living_area = fields.Integer() facades = fields.Integer() From 11817355f1691d20ec86a82bb55962be9c73656b Mon Sep 17 00:00:00 2001 From: Piyush11204 Date: Tue, 7 Jul 2026 14:08:08 +0530 Subject: [PATCH 10/11] [ADD] estate: enhance property views with detailed form and search options --- estate/views/estate_property_views.xml | 81 ++++++++++++++++++++++++++ 1 file changed, 81 insertions(+) diff --git a/estate/views/estate_property_views.xml b/estate/views/estate_property_views.xml index 3c257dc4165..3e96eff808e 100644 --- a/estate/views/estate_property_views.xml +++ b/estate/views/estate_property_views.xml @@ -7,4 +7,85 @@ list,form + + estate.property.list + estate.property + + + + + + + + + + + + + + + estate.property.view.form + estate.property + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ + + estate.property.view.search + estate.property + + + + + + + + + + + + + + + + + + + + + + + + From a7322764f614400cd8837c9a58e5d0b3e7a8d7de Mon Sep 17 00:00:00 2001 From: Piyush11204 Date: Tue, 7 Jul 2026 17:35:43 +0530 Subject: [PATCH 11/11] [ADD] estate: add filter for expensive properties and done with chapter 6 --- estate/views/estate_property_views.xml | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/estate/views/estate_property_views.xml b/estate/views/estate_property_views.xml index 3e96eff808e..04b1878a085 100644 --- a/estate/views/estate_property_views.xml +++ b/estate/views/estate_property_views.xml @@ -75,8 +75,9 @@ - - + + + @@ -87,5 +88,7 @@ + +