From 607f91d2617c4fb2480cd5ed984067cfd4e95c18 Mon Sep 17 00:00:00 2001 From: mrgor-odoo Date: Fri, 3 Jul 2026 18:08:19 +0530 Subject: [PATCH 1/5] [ADD] estate: 'add new modules' Initialize the estate module by adding the required module configuration files. This establishes the basic structure needed for future development and allows Odoo to recognize the module. --- estate/__init__.py | 0 estate/__manifest__.py | 10 ++++++++++ 2 files changed, 10 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..de94a36bcd2 --- /dev/null +++ b/estate/__manifest__.py @@ -0,0 +1,10 @@ +{ + "name":"Real Estate", + + "author":"Mrunmayee Gore", + "description":"TRAINING MODULE ", + "category":"tutorials" + "application + + +} \ No newline at end of file From ce43cf1a94fcafabe7a9430c52cb9e5af768cb37 Mon Sep 17 00:00:00 2001 From: mrgor-odoo Date: Fri, 3 Jul 2026 18:12:15 +0530 Subject: [PATCH 2/5] [ADD] estate: 'add new modules' Initialize the estate module by adding the required module configuration files. This establishes the basic structure needed for future development and allows Odoo to recognize the module. --- estate/__manifest__.py | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/estate/__manifest__.py b/estate/__manifest__.py index de94a36bcd2..2e4bf8df67b 100644 --- a/estate/__manifest__.py +++ b/estate/__manifest__.py @@ -1,10 +1,10 @@ { - "name":"Real Estate", - - "author":"Mrunmayee Gore", - "description":"TRAINING MODULE ", - "category":"tutorials" - "application - - -} \ No newline at end of file + 'name': 'Real Estate', + 'version': '1.0', + 'author': 'Mrunmayee', + 'depends': ['base'], + 'application': True, + 'category': 'tutorials', + 'installabe': True, + 'license': 'LGPL-3', +} From 7f8c9e9e548c48c3b8d7a844dd203899c854cad2 Mon Sep 17 00:00:00 2001 From: mrgor-odoo Date: Mon, 6 Jul 2026 18:18:56 +0530 Subject: [PATCH 3/5] [ADD] estate: create property model Create the basic property model for the Real Estate module. This model allows storing essential property information and provides the base structure for adding more features. task = chapter 3 completed --- estate/__init__.py | 1 + estate/__manifest__.py | 16 ++++++++-------- estate/models/__init__.py | 1 + estate/models/estate_property.py | 27 +++++++++++++++++++++++++++ 4 files changed, 37 insertions(+), 8 deletions(-) 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/__manifest__.py b/estate/__manifest__.py index 2e4bf8df67b..5e317b0a4dc 100644 --- a/estate/__manifest__.py +++ b/estate/__manifest__.py @@ -1,10 +1,10 @@ { - 'name': 'Real Estate', - 'version': '1.0', - 'author': 'Mrunmayee', - 'depends': ['base'], - 'application': True, - 'category': 'tutorials', - 'installabe': True, - 'license': 'LGPL-3', + "name": "Real Estate", + "version": "1.0", + "author": "Mrunmayee", + "depends": ["base"], + "application": True, + "category": "tutorials", + "installabe": True, + "license": "LGPL-3", } 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..4af27ab57af --- /dev/null +++ b/estate/models/estate_property.py @@ -0,0 +1,27 @@ +from odoo import models, fields + + +class EstateProperty(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"), + ] + ) From a9cc58d95fa24de35ecb317fda7ef5a3d3311964 Mon Sep 17 00:00:00 2001 From: mrgor-odoo Date: Tue, 7 Jul 2026 17:12:09 +0530 Subject: [PATCH 4/5] [ADD] estate: add access rights for estate.property Newly created models are inaccessible by default in Odoo. Define access rights so Internal Users can interact with the estate.property model and remove the missing access rules warning. Task Completed chapter 4 --- estate/__manifest__.py | 3 +++ estate/security/ir.model.access.csv | 2 ++ 2 files changed, 5 insertions(+) create mode 100644 estate/security/ir.model.access.csv diff --git a/estate/__manifest__.py b/estate/__manifest__.py index 5e317b0a4dc..00fa2d78116 100644 --- a/estate/__manifest__.py +++ b/estate/__manifest__.py @@ -7,4 +7,7 @@ "category": "tutorials", "installabe": True, "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..32389642d4f --- /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 From 707c8621603c61d5108fcde538100de467021313 Mon Sep 17 00:00:00 2001 From: mrgor-odoo Date: Fri, 10 Jul 2026 18:53:45 +0530 Subject: [PATCH 5/5] [IMP] estate: prepare property management interface - Allow users to access and manage property records from the UI. - Improve data consistency by protecting important field values. - Prevent unwanted data from being copied to duplicate records. - Reduce manual work by providing default field values. - Prepare the property model for future business workflows by introducing state fields. Task Completed chapter 5 --- estate/__manifest__.py | 2 ++ estate/models/estate_property.py | 21 ++++++++++++++++++--- estate/views/estate_menus.xml | 6 ++++++ estate/views/estate_property_views.xml | 10 ++++++++++ 4 files changed, 36 insertions(+), 3 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 00fa2d78116..19cb2cc323b 100644 --- a/estate/__manifest__.py +++ b/estate/__manifest__.py @@ -9,5 +9,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 4af27ab57af..1db22d08955 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, default=lambda self: fields.Date.add(fields.Date.today(), months=3) + ) 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() @@ -25,3 +27,16 @@ class EstateProperty(models.Model): ("west", "West"), ] ) + 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", + ) diff --git a/estate/views/estate_menus.xml b/estate/views/estate_menus.xml new file mode 100644 index 00000000000..e87c51cf7fa --- /dev/null +++ b/estate/views/estate_menus.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/estate/views/estate_property_views.xml b/estate/views/estate_property_views.xml new file mode 100644 index 00000000000..d36caa6a08f --- /dev/null +++ b/estate/views/estate_property_views.xml @@ -0,0 +1,10 @@ + + + + Properties + estate.property + list,form + + + +