Skip to content
1 change: 1 addition & 0 deletions estate/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
from . import models
13 changes: 13 additions & 0 deletions estate/__manifest__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
{
'name': "Real Estate",
'depends': ["base"],
'application': True,
'installable': True,
'author': 'Odoo S.A.',
'license': 'LGPL-3',
'data': [
"security/ir.model.access.csv",
"views/estate_property_views.xml",
"views/estate_menus.xml"
]
}
1 change: 1 addition & 0 deletions estate/models/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
from . import estate_property
25 changes: 25 additions & 0 deletions estate/models/estate_property.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
from odoo import fields, models


class EstateProperty(models.Model):
_name = "estate.property"
_description = "This is the model for the real estate"

name = fields.Char(required=True)
Comment thread
MiguelitoM marked this conversation as resolved.
description = fields.Text()
postcode = fields.Char()
date_availability = fields.Date(copy=False, default=lambda self: fields.Datetime.add(fields.Datetime.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(string='Orientation',
selection=[('north', 'North'), ('south', 'South'), ('east', 'East'), ('west', 'West')], help="Garden Orientation (North, South, East, West)")
active = fields.Boolean(default=True)
stage = fields.Selection(string="Stage",
selection=[("new", "New"), ("offer received", "Offer Received"), ("offer accepted", "Offer Accepted"), ("sold", "Sold"), ("cancelled", "Cancelled")],
required=True, default="new", copy=False)
2 changes: 2 additions & 0 deletions estate/security/ir.model.access.csv
Original file line number Diff line number Diff line change
@@ -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,estate.model_estate_property,base.group_user,1,1,1,1
8 changes: 8 additions & 0 deletions estate/views/estate_menus.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
<?xml version="1.0"?>
<odoo>
<menuitem id="estate_menu_root" name="Real Estate">
<menuitem id="estate_first_level_menu" name="Listings">
<menuitem id="estate_model_menu_action" action="estate_property_model_action"/>
</menuitem>
</menuitem>
</odoo>
81 changes: 81 additions & 0 deletions estate/views/estate_property_views.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
<?xml version="1.0"?>
<odoo>
<record id="estate_property_model_action" model="ir.actions.act_window">
<field name="name">Estate Property</field>
<field name="res_model">estate_property</field>
<field name="view_mode">list,form</field>
</record>

<record id="estate_property_list" model="ir.ui.view">
<field name="name">estate_property.list</field>
<field name="model">estate_property</field>
<field name="arch" type="xml">
<list string="Properties">
<field string="Estate" name="name"/>
<field name="postcode"/>
<field name="bedrooms"/>
<field string="Living Area (sqm)" name="living_area"/>
<field name="expected_price"/>
<field name="selling_price"/>
<field string="Available From" name="date_availability"/>
</list>
</field>
</record>

<record id="estate_property_form" model="ir.ui.view">
<field name="name">estate_property.form</field>
<field name="model">estate_property</field>
<field name="arch" type="xml">
<form string="Test">
<sheet>
<field name="name"></field>
<group>
<group>
<field name="postcode"/>
<field string="Available" name="date_availability"/>
</group>
<group>
<field name="expected_price"/>
<field name="selling_price"/>
</group>
</group>
<notebook>
<page string="Description">
<group>
<field name="description"/>
</group>
<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>

<record id="estate_property_search" model="ir.ui.view">
<field name="name">estate_property.search</field>
<field name="model">estate_property</field>
<field name="arch" type="xml">
<search string="Search properties">
<field string="Title" name="name"/>
<field name="postcode"/>
<field name="expected_price"/>
<field name="bedrooms"/>
<field string="Living Area (sqm)" name="living_area"/>
<field name="facades"/>
<filter string="Available" name="stage" domain="['|', ('stage', '=', 'New'), ('stage', '=', 'Offer Received')]"></filter>
<group>
<filter name="postcode" context="{'group_by':'postcode'}"/>
</group>
</search>
</field>
</record>
</odoo>