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