From a73f6db9260fe75ea90608a668e48d068e55dcbb Mon Sep 17 00:00:00 2001
From: Matt Marcha <matt@marcha.pro>
Date: Mon, 15 Jul 2024 16:35:50 -1000
Subject: [PATCH] add tutorials/estate module

---
 estate/__init__.py                     |  3 ++
 estate/__manifest__.py                 | 15 ++++++
 estate/models/__init__.py              |  3 ++
 estate/models/estate_property.py       | 23 +++++++++
 estate/security/ir.model.access.csv    |  2 +
 estate/views/estate_menus_view.xml     |  8 ++++
 estate/views/estate_property_views.xml | 64 ++++++++++++++++++++++++++
 7 files changed, 118 insertions(+)
 create mode 100644 estate/__init__.py
 create mode 100644 estate/__manifest__.py
 create mode 100644 estate/models/__init__.py
 create mode 100644 estate/models/estate_property.py
 create mode 100644 estate/security/ir.model.access.csv
 create mode 100644 estate/views/estate_menus_view.xml
 create mode 100644 estate/views/estate_property_views.xml

diff --git a/estate/__init__.py b/estate/__init__.py
new file mode 100644
index 0000000..5305644
--- /dev/null
+++ b/estate/__init__.py
@@ -0,0 +1,3 @@
+# -*- coding: utf-8 -*-
+
+from . import models
\ No newline at end of file
diff --git a/estate/__manifest__.py b/estate/__manifest__.py
new file mode 100644
index 0000000..9c62e1c
--- /dev/null
+++ b/estate/__manifest__.py
@@ -0,0 +1,15 @@
+# -*- coding: utf-8 -*-
+{
+    'name': 'Real Estate',
+    'category': 'Tutorials/Estate',
+    'application': True,
+    'installable': True,
+    'depends': [
+        'base',
+    ],
+    'data': [
+        'views/estate_property_views.xml',
+        'views/estate_menus_view.xml',
+        'security/ir.model.access.csv'
+    ],
+}
\ No newline at end of file
diff --git a/estate/models/__init__.py b/estate/models/__init__.py
new file mode 100644
index 0000000..f2db223
--- /dev/null
+++ b/estate/models/__init__.py
@@ -0,0 +1,3 @@
+# -*- coding: utf-8 -*-
+
+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 0000000..d21fb4e
--- /dev/null
+++ b/estate/models/estate_property.py
@@ -0,0 +1,23 @@
+# -*- coding: utf-8 -*-
+
+from odoo import fields, models
+
+class EstateProperty(models.Model):
+    _name = "estate.property"
+    _description = "Properties for the Estate module"
+
+    name = fields.Char(required=True)
+    description = fields.Text()
+    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')
+    postcode = fields.Char()
+    date_availability = fields.Date(copy=False, default=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(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')])
\ No newline at end of file
diff --git a/estate/security/ir.model.access.csv b/estate/security/ir.model.access.csv
new file mode 100644
index 0000000..976b61e
--- /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
diff --git a/estate/views/estate_menus_view.xml b/estate/views/estate_menus_view.xml
new file mode 100644
index 0000000..a92e610
--- /dev/null
+++ b/estate/views/estate_menus_view.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0"?>
+<odoo>
+	<menuitem id="estate_menu_root" name="Real Estate">
+		<menuitem id="estate_first_level_menu" name="Advertiments">
+			<menuitem id="estate_property_menu_action" action="estate_property_action" />
+		</menuitem>
+	</menuitem>
+</odoo>
\ 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 0000000..249e223
--- /dev/null
+++ b/estate/views/estate_property_views.xml
@@ -0,0 +1,64 @@
+<?xml version="1.0"?>
+<odoo>
+    <record id="estate_property_action" model="ir.actions.act_window">
+        <field name="name">Properties</field>
+        <field name="res_model">estate.property</field>
+        <field name="view_mode">tree,form</field>
+    </record>
+
+    <record id="estate_property_tree_view" model="ir.ui.view">
+        <field name="name">estate.property.tree</field>
+        <field name="model">estate.property</field>
+        <field name="arch" type="xml">
+            <tree string="Properties">
+                <field name="name" />
+                <field name="postcode" />
+                <field name="bedrooms" />
+                <field name="living_area" />
+                <field name="expected_price" />
+                <field name="selling_price" />
+                <field name="date_availability" />
+            </tree>
+        </field>
+    </record>
+
+    <record id="estate_property_view_form" model="ir.ui.view">
+        <field name="name">estate.property.form</field>
+        <field name="model">estate.property</field>
+        <field name="arch" type="xml">
+            <form>
+                <sheet>
+                    <div class="oe_title">
+                        <h1>
+                            <field name="name" />
+                        </h1>
+                    </div>
+                    <group>
+                        <group>
+                            <field name="postcode" />
+                            <field name="date_availability" />
+                        </group>
+                        <group>
+                            <field name="expected_price" />
+                            <field name="selling_price" />
+                        </group>
+                    </group>
+
+                    <notebook>
+                        <page string="Details">
+                            <group>
+                                <field name="bedrooms" />
+                                <field name="living_area" string="Living area (sqm)" />
+                                <field name="facades" />
+                                <field name="garage" />
+                                <field name="garden" />
+                                <field name="garden_area" string="Garden area (sqm)" />
+                                <field name="garden_orientation" />
+                            </group>
+                        </page>
+                    </notebook>
+                </sheet>
+            </form>
+        </field>
+    </record>
+</odoo>
\ No newline at end of file