From 7c11d639655ca24ae19ecf528f78c922137d7350 Mon Sep 17 00:00:00 2001 From: "Gautam Kumar (gakum)" Date: Tue, 4 Aug 2026 11:02:29 +0530 Subject: [PATCH 1/6] [ADD] estate : added a new module --- estate/__init__.py | 0 estate/__manifest__.py | 5 +++++ 2 files changed, 5 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..1deef6d7f98 --- /dev/null +++ b/estate/__manifest__.py @@ -0,0 +1,5 @@ +{ + 'name': 'real state', + 'version': '1.0', + 'depends': ['base'] +} \ No newline at end of file From 7e8935af4b50a148b091bacf7265e74ce626a942 Mon Sep 17 00:00:00 2001 From: "Gautam Kumar (gakum)" Date: Tue, 4 Aug 2026 11:09:16 +0530 Subject: [PATCH 2/6] [ADD] estate : added a new line --- estate/__manifest__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/estate/__manifest__.py b/estate/__manifest__.py index 1deef6d7f98..8bcd702d885 100644 --- a/estate/__manifest__.py +++ b/estate/__manifest__.py @@ -2,4 +2,4 @@ 'name': 'real state', 'version': '1.0', 'depends': ['base'] -} \ No newline at end of file +} From b42dc06b9d9b7eb89aa7d62a36e61e57173f7a29 Mon Sep 17 00:00:00 2001 From: "Gautam Kumar (gakum)" Date: Tue, 4 Aug 2026 17:24:29 +0530 Subject: [PATCH 3/6] [ADD] estate: added security feature --- estate/__init__.py | 1 + estate/__manifest__.py | 8 +++++++- estate/models/__init__.py | 1 + estate/models/estate_property.py | 26 ++++++++++++++++++++++++++ estate/security/ir.model.access.csv | 2 ++ 5 files changed, 37 insertions(+), 1 deletion(-) create mode 100644 estate/models/__init__.py create mode 100644 estate/models/estate_property.py create mode 100644 estate/security/ir.model.access.csv 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 8bcd702d885..24a347478a7 100644 --- a/estate/__manifest__.py +++ b/estate/__manifest__.py @@ -1,5 +1,11 @@ { 'name': 'real state', 'version': '1.0', - 'depends': ['base'] + 'depends': ['base'], + 'data': [ + 'security/ir.model.access.csv', + ], + 'application': True, + 'author': 'Gautam', + '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..74b9160fde9 --- /dev/null +++ b/estate/models/estate_property.py @@ -0,0 +1,26 @@ +from odoo import fields, models + + +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([ + ('north', 'North'), + ('south', 'South'), + ('east', 'East'), + ('west', 'West'), + + ]) 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 2ad2438432a53fbc8f512e0dd654b8166151d1bc Mon Sep 17 00:00:00 2001 From: "Gautam Kumar (gakum)" Date: Thu, 6 Aug 2026 17:46:56 +0530 Subject: [PATCH 4/6] [ADD] estate: added views --- estate/__manifest__.py | 3 +++ estate/models/estate_property.py | 8 +++++--- estate/views/estate_menu.xml | 15 +++++++++++++++ estate/views/estate_property_views.xml | 24 ++++++++++++++++++++++++ 4 files changed, 47 insertions(+), 3 deletions(-) create mode 100644 estate/views/estate_menu.xml create mode 100644 estate/views/estate_property_views.xml diff --git a/estate/__manifest__.py b/estate/__manifest__.py index 24a347478a7..29946a8a997 100644 --- a/estate/__manifest__.py +++ b/estate/__manifest__.py @@ -4,8 +4,11 @@ 'depends': ['base'], 'data': [ 'security/ir.model.access.csv', + 'views/estate_property_views.xml', + 'views/estate_menu.xml' ], 'application': True, + 'installable': True, 'author': 'Gautam', 'license': 'LGPL-3', } diff --git a/estate/models/estate_property.py b/estate/models/estate_property.py index 74b9160fde9..17261c2236c 100644 --- a/estate/models/estate_property.py +++ b/estate/models/estate_property.py @@ -8,10 +8,10 @@ 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() - 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() @@ -24,3 +24,5 @@ class EstateProperty(models.Model): ('west', 'West'), ]) + active = fields.Boolean("Active", default=True) + state = fields.Selection([('New', 'New'), ('Offer Recieved', 'Offer Recieved'), ('Offer Accepted', 'Offer Accepted'), ('Sold', 'Sold'), ('Cancelled', 'Cancelled')], default='New') diff --git a/estate/views/estate_menu.xml b/estate/views/estate_menu.xml new file mode 100644 index 00000000000..95206c83c17 --- /dev/null +++ b/estate/views/estate_menu.xml @@ -0,0 +1,15 @@ + + + + + estate property view tree + estate.property + + + + + + + + + \ 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..23630726c80 --- /dev/null +++ b/estate/views/estate_property_views.xml @@ -0,0 +1,24 @@ + + + + + + + Properties + estate.property + list,form + + + + + + + + + + From e8bf72fce543ae67eb59993f43c8521b80d0d9ab Mon Sep 17 00:00:00 2001 From: "Gautam Kumar (gakum)" Date: Fri, 21 Aug 2026 11:20:22 +0530 Subject: [PATCH 5/6] [ADD] estate:Added estate_property_type model --- estate/__manifest__.py | 1 + estate/models/estate_property_type.py | 8 ++ estate/security/ir.model.access.csv | 2 +- estate/views/estate_menu.xml | 38 ++++++--- estate/views/estate_property_views.xml | 104 +++++++++++++++++++++---- 5 files changed, 125 insertions(+), 28 deletions(-) create mode 100644 estate/models/estate_property_type.py diff --git a/estate/__manifest__.py b/estate/__manifest__.py index 29946a8a997..8655dd9800f 100644 --- a/estate/__manifest__.py +++ b/estate/__manifest__.py @@ -1,5 +1,6 @@ { 'name': 'real state', + 'description':'This is my first module estate', 'version': '1.0', 'depends': ['base'], 'data': [ diff --git a/estate/models/estate_property_type.py b/estate/models/estate_property_type.py new file mode 100644 index 00000000000..34a6111683f --- /dev/null +++ b/estate/models/estate_property_type.py @@ -0,0 +1,8 @@ +from odoo import fields, models + + +class EstatePropertyType(models.Model): + _name = "estate.property.type" + _description = "Property Type" + + name = fields.Char(string="Type", required=True) \ No newline at end of file diff --git a/estate/security/ir.model.access.csv b/estate/security/ir.model.access.csv index 0e11f47e58d..3a6d543b9ed 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,0,1,0 \ No newline at end of file diff --git a/estate/views/estate_menu.xml b/estate/views/estate_menu.xml index 95206c83c17..1c1327ee8ed 100644 --- a/estate/views/estate_menu.xml +++ b/estate/views/estate_menu.xml @@ -1,15 +1,29 @@ - - - estate property view tree - estate.property - - - - - - - + + + + + Properties + estate.property + list,form - \ No newline at end of file + + + + + + + + + + + diff --git a/estate/views/estate_property_views.xml b/estate/views/estate_property_views.xml index 23630726c80..0ff29dae94c 100644 --- a/estate/views/estate_property_views.xml +++ b/estate/views/estate_property_views.xml @@ -1,24 +1,98 @@ + + + estate property view list + estate.property + + + + + + + + + + + + + + + + + + + + + estate.property.form.view + estate.property + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - Properties - estate.property - list,form + +
+
- + + estate.property.search.view + estate.property + + + + + + + - - + + - - + + + + + + + Properties + estate.property + list,form + + {'search_default_State_filter_new': 1} + + +
+ From 8835b36e7798728af08258cb56d6ce095ed90ed7 Mon Sep 17 00:00:00 2001 From: "Gautam Kumar (gakum)" Date: Wed, 9 Sep 2026 12:54:41 +0530 Subject: [PATCH 6/6] [ADD] estate:Added estate property type xml view --- estate/__manifest__.py | 30 +++-- estate/demo/demo_estate_property.xml | 145 +++++++++++++++++++++ estate/models/__init__.py | 1 + estate/models/estate_property.py | 35 +++-- estate/models/estate_property_type.py | 2 +- estate/security/ir.model.access.csv | 3 +- estate/views/estate_menu.xml | 35 ++--- estate/views/estate_property_type_view.xml | 38 ++++++ estate/views/estate_property_views.xml | 125 +++++++++--------- 9 files changed, 303 insertions(+), 111 deletions(-) create mode 100644 estate/demo/demo_estate_property.xml create mode 100644 estate/views/estate_property_type_view.xml diff --git a/estate/__manifest__.py b/estate/__manifest__.py index 8655dd9800f..ad4437dfa3e 100644 --- a/estate/__manifest__.py +++ b/estate/__manifest__.py @@ -1,15 +1,21 @@ + { - 'name': 'real state', - 'description':'This is my first module estate', - 'version': '1.0', - 'depends': ['base'], - 'data': [ - 'security/ir.model.access.csv', - 'views/estate_property_views.xml', - 'views/estate_menu.xml' + "name": "real state", + "description": "This is my first module estate", + "version": "1.0", + "depends": ["base"], + "data": [ + "security/ir.model.access.csv", + "views/estate_property_views.xml", + "views/estate_property_type_view.xml", + "views/estate_menu.xml", ], - 'application': True, - 'installable': True, - 'author': 'Gautam', - 'license': 'LGPL-3', + "demo": [ + "demo/demo_estate_property.xml", + ], + "application": True, + "installable": True, + "author": "Gautam", + "license": "LGPL-3", + "auto_install": True, } diff --git a/estate/demo/demo_estate_property.xml b/estate/demo/demo_estate_property.xml new file mode 100644 index 00000000000..3a51d55f9ed --- /dev/null +++ b/estate/demo/demo_estate_property.xml @@ -0,0 +1,145 @@ + + + + + estate1 + this is estate property description + 382007 + + 400 + 800 + 3 + 2 + 2 + True + True + 200 + + True + New + + + + + + estate2 + this is estate 2 property description + 382007 + + 4000 + 8000 + 3 + 2 + 2 + True + True + 200 + + True + Sold + + + + + estate2 + this is estate 2 property description + 382007 + + 4000 + 8000 + 3 + 2 + 2 + True + True + 200 + + True + New + + + + + estate2 + this is estate 2 property description + 382007 + + 4000 + 8000 + 3 + 2 + 2 + True + True + 200 + + True + Sold + + + + estate2 + this is estate 2 property description + 382007 + + 4000 + 8000 + 3 + 2 + 2 + True + True + 200 + + True + New + + + + estate2 + this is estate 2 property description + 382007 + + 4000 + 8000 + 3 + 2 + 2 + True + True + 200 + + True + New + + + + + estate2 + this is estate 2 property description + 382007 + + 4000 + 8000 + 3 + 2 + 2 + True + True + 200 + + True + Sold + + + + + + \ No newline at end of file diff --git a/estate/models/__init__.py b/estate/models/__init__.py index 5e1963c9d2f..40092a2d810 100644 --- a/estate/models/__init__.py +++ b/estate/models/__init__.py @@ -1 +1,2 @@ from . import estate_property +from . import estate_property_type diff --git a/estate/models/estate_property.py b/estate/models/estate_property.py index 17261c2236c..ee8e7badc28 100644 --- a/estate/models/estate_property.py +++ b/estate/models/estate_property.py @@ -1,14 +1,21 @@ from odoo import fields, models +import traceback +from datetime import date +from dateutil.relativedelta import relativedelta class EstateProperty(models.Model): + traceback.print_stack() _name = "estate.property" _description = "Real Estate Property" + def check_availability(self): + return (date.today() + relativedelta(months=3)) + name = fields.Char(required=True) description = fields.Text() postcode = fields.Char() - date_availability = fields.Date(copy=False) + date_availability = fields.Date(copy=False, default=check_availability) expected_price = fields.Float(required=True) selling_price = fields.Float(readonly=True, copy=False) bedrooms = fields.Integer(default=2) @@ -17,12 +24,22 @@ class EstateProperty(models.Model): garage = fields.Boolean() garden = fields.Boolean() garden_area = fields.Integer() - garden_orientation = fields.Selection([ - ('north', 'North'), - ('south', 'South'), - ('east', 'East'), - ('west', 'West'), - - ]) + garden_orientation = fields.Selection( + [ + ("north", "North"), + ("south", "South"), + ("east", "East"), + ("west", "West"), + ] + ) active = fields.Boolean("Active", default=True) - state = fields.Selection([('New', 'New'), ('Offer Recieved', 'Offer Recieved'), ('Offer Accepted', 'Offer Accepted'), ('Sold', 'Sold'), ('Cancelled', 'Cancelled')], default='New') + state = fields.Selection( + [ + ("New", "New"), + ("Offer Received", "Offer Received"), + ("Offer Accepted", "Offer Accepted"), + ("Sold", "Sold"), + ("Cancelled", "Cancelled"), + ], + default="New", + ) diff --git a/estate/models/estate_property_type.py b/estate/models/estate_property_type.py index 34a6111683f..d0f5e640a15 100644 --- a/estate/models/estate_property_type.py +++ b/estate/models/estate_property_type.py @@ -5,4 +5,4 @@ class EstatePropertyType(models.Model): _name = "estate.property.type" _description = "Property Type" - name = fields.Char(string="Type", required=True) \ No newline at end of file + name = fields.Char(string="Type", required=True) diff --git a/estate/security/ir.model.access.csv b/estate/security/ir.model.access.csv index 3a6d543b9ed..a7bf1014aa2 100644 --- a/estate/security/ir.model.access.csv +++ b/estate/security/ir.model.access.csv @@ -1,2 +1,3 @@ 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,0,1,0 \ No newline at end of file +access_estate_property,access_estate_property,model_estate_property,base.group_user,1,1,1,1 +acess_estate_property_type,aceess_estate_property_type,model_estate_property_type,base.group_user,1,1,1,1 \ No newline at end of file diff --git a/estate/views/estate_menu.xml b/estate/views/estate_menu.xml index 1c1327ee8ed..f8ca8721a5a 100644 --- a/estate/views/estate_menu.xml +++ b/estate/views/estate_menu.xml @@ -1,29 +1,18 @@ - + + + - - - Properties - estate.property - list,form - + + - + - - - - - - - diff --git a/estate/views/estate_property_type_view.xml b/estate/views/estate_property_type_view.xml new file mode 100644 index 00000000000..f5905ac2d58 --- /dev/null +++ b/estate/views/estate_property_type_view.xml @@ -0,0 +1,38 @@ + + + + Estate Property Type + estate.property.type + list,form + + + + Estate Property Form View + estate.property.type + +
+ + +
+
+ + + Estate Property List View + estate.property.type + + + + + + + + + Estate Property Type Search View + estate.property.type + + + + + + +
\ No newline at end of file diff --git a/estate/views/estate_property_views.xml b/estate/views/estate_property_views.xml index 0ff29dae94c..2a270370b8f 100644 --- a/estate/views/estate_property_views.xml +++ b/estate/views/estate_property_views.xml @@ -1,98 +1,93 @@ - - - estate property view list + + Estate Property + estate.property + list,form + + + + Estate property list estate.property - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + - + - - estate.property.form.view + + + Estate property from view estate.property
+
+

+ +

+
- - - - - - - - - + + + + + + + - - - - - - - - - - + + + + + + + + -
- estate.property.search.view + search.view estate.property - - - - - - - - - - - + + + + + + + + - - - Properties - estate.property - list,form - - {'search_default_State_filter_new': 1} - - +
-