diff --git a/.gitignore b/.gitignore index b6e47617de1..9fe17bcebb3 100644 --- a/.gitignore +++ b/.gitignore @@ -126,4 +126,4 @@ venv.bak/ dmypy.json # Pyre type checker -.pyre/ +.pyre/ \ No newline at end of file diff --git a/estate/__init__.py b/estate/__init__.py new file mode 100644 index 00000000000..0650744f6bc --- /dev/null +++ b/estate/__init__.py @@ -0,0 +1 @@ +from . import models diff --git a/estate/__manifest__.py b/estate/__manifest__.py new file mode 100644 index 00000000000..f234e221e49 --- /dev/null +++ b/estate/__manifest__.py @@ -0,0 +1,11 @@ +{ # pyright: ignore[reportUnusedExpression] + "name": "estate", + "depends": ["base_setup"], + "author": "Havit", + "license": "LGPL-3", + "data": [ + "security/ir.model.access.csv", + "views/estate_views.xml", + "views/estate_menus.xml", + ], +} diff --git a/estate/models/__init__.py b/estate/models/__init__.py new file mode 100644 index 00000000000..e4f59229d23 --- /dev/null +++ b/estate/models/__init__.py @@ -0,0 +1 @@ +from . import estate diff --git a/estate/models/estate.py b/estate/models/estate.py new file mode 100644 index 00000000000..250435dc3ec --- /dev/null +++ b/estate/models/estate.py @@ -0,0 +1,44 @@ +from dateutil.relativedelta import relativedelta +from odoo import fields, models + + +class Estate(models.Model): + _name = "estate" + _description = "Real Estate Module" + + # fields + name = fields.Char(required=True) + description = fields.Text() + postcode = fields.Char() + date_availability = fields.Date( + default=lambda self: fields.Date.today() + relativedelta(months=3) + ) + expected_price = fields.Float() + selling_price = fields.Float(readonly=True, copy=False) + bedrooms = fields.Integer(default=2) + 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"), + ] + ) + state = fields.Selection( + selection=[ + ("new", "New"), + ("offer_received", "Offer Received"), + ("offer_accepted", "Offer Accepted"), + ("sold", "Sold"), + ("cancelled", "Cancelled"), + ], + required=True, + copy=False, + default="new", + ) + active = fields.Boolean(default=True) diff --git a/estate/odools.toml b/estate/odools.toml new file mode 100644 index 00000000000..109333b8646 --- /dev/null +++ b/estate/odools.toml @@ -0,0 +1,9 @@ +[[config]] +name = "default" +odoo_path = "/home/odoo/odoo19/community" +addons_paths = [ + "/home/odoo/odoo19/community/addons", + "/home/odoo/odoo19/enterprise", + "/home/odoo/odoo19/tutorials" +] +python_path = "python3" diff --git a/estate/pyrightconfig.json b/estate/pyrightconfig.json new file mode 100644 index 00000000000..4cc4e0980d9 --- /dev/null +++ b/estate/pyrightconfig.json @@ -0,0 +1,7 @@ +{ + "extraPaths": ["../../community"], + "typeCheckingMode": "basic", + "reportPrivateLocalImportUsage": "none", + "reportUnannotatedClassAttribute": "none", + "reportArgumentType": "none", +} diff --git a/estate/security/ir.model.access.csv b/estate/security/ir.model.access.csv new file mode 100644 index 00000000000..b3d4b09271f --- /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,access_estate,model_estate,base.group_user,1,1,1,1 \ No newline at end of file diff --git a/estate/views/estate_menus.xml b/estate/views/estate_menus.xml new file mode 100644 index 00000000000..1231c054746 --- /dev/null +++ b/estate/views/estate_menus.xml @@ -0,0 +1,7 @@ + + + + + + + diff --git a/estate/views/estate_views.xml b/estate/views/estate_views.xml new file mode 100644 index 00000000000..e662889cce2 --- /dev/null +++ b/estate/views/estate_views.xml @@ -0,0 +1,88 @@ + + + Estate + estate + list,form + + + + Estate List + estate + + + + + + + + + + + + + + + + Estate Form + estate + +
+ +

+ +

+ + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ + + Estate Search + estate + + + + + + + + + + + + + + +