Skip to content

Commit

Permalink
[IMP] estate : implemented relationships between models
Browse files Browse the repository at this point in the history
Day 3 :
Chapter 7 : Implemented many2one and many2many relationships
            paritally-implemented (one2many)
            added property types which can be selected from its dropdown menu
            added property tags which can be selected below name field
  • Loading branch information
nmak-odoo committed Feb 6, 2025
1 parent 876288a commit 8676a02
Show file tree
Hide file tree
Showing 14 changed files with 183 additions and 29 deletions.
3 changes: 3 additions & 0 deletions .vscode/settings.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"python.languageServer": "None"
}
2 changes: 1 addition & 1 deletion estate/__init__.py
Original file line number Diff line number Diff line change
@@ -1 +1 @@
from . import models
from . import models
6 changes: 5 additions & 1 deletion estate/__manifest__.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,18 @@
"name": "Real Estate",
"author": "nmak",
"website": "https://www.odoo.com/apps/estate",
"category": "tutorials/real-estate",
"category": "tutorials/estate",
"depends": ["base"],
"data": [
"security/ir.model.access.csv",
"views/estate_property_views.xml",
"views/estate_property_type_views.xml",
"views/estate_property_tag_views.xml",
"views/estate_property_offer_views.xml"
"views/estate_menus.xml",
],
"installable": True,
"application": True,
"auto_install": False,
"license": "LGPL-3",
}
2 changes: 1 addition & 1 deletion estate/models/__init__.py
Original file line number Diff line number Diff line change
@@ -1 +1 @@
from . import estate_property
from . import estate_property , estate_property_type , estate_property_tag , estate_property_offer
12 changes: 7 additions & 5 deletions estate/models/estate_property.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
from odoo import fields, models
from dateutil.relativedelta import relativedelta


class EstateProperty(models.Model):
Expand All @@ -10,7 +9,7 @@ class EstateProperty(models.Model):
description = fields.Text()
postcode = fields.Char()
date_availability = fields.Date(
"Availability Date",
"Availability From",
copy=False,
default=fields.Date.add(fields.Date.today(), months=3),
)
Expand All @@ -30,9 +29,7 @@ class EstateProperty(models.Model):
("west", "West"),
]
)

# reserved fields
active = fields.Boolean(default=False)
active = fields.Boolean(default=True)
state = fields.Selection(
[
("new", "New"),
Expand All @@ -46,3 +43,8 @@ class EstateProperty(models.Model):
required=True,
copy=False,
)
property_type_id = fields.Many2one("estate.property.type", string="Property Type")
tag_ids = fields.Many2many("estate.property.tag", string="Tags")
offer_ids = fields.One2many(
"estate.property.offer", "property_id", strings="Offers"
)
13 changes: 13 additions & 0 deletions estate/models/estate_property_offer.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
from odoo import fields, models


class PropertyOffer(models.Model):
_name = "estate.property.offer"
_description = "Offers in real estate"

price = fields.Float(string="Price", required=True)
status = fields.Selection(
[("accepted", "Accepted"), ("refused", "Refused")], string="Status", copy=False
)
partner_id = fields.Many2one("res.partner", string="Buyer", required=True)
property_id = fields.Many2one("estate.property", string="Property", required=True)
8 changes: 8 additions & 0 deletions estate/models/estate_property_tag.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
from odoo import models,fields

class PropertyTag(models.Model):
_name = "estate.property.tag"
_description = "tags involved in real estate"

name = fields.Char(string="Property Tag" , required=True)

8 changes: 8 additions & 0 deletions estate/models/estate_property_type.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
from odoo import models, fields

class EstatePropertyType(models.Model):
_name = "estate.property.type"
_description = "Real Estate Property Type"

name = fields.Char(string="Property Type", required=True)

5 changes: 4 additions & 1 deletion estate/security/ir.model.access.csv
Original file line number Diff line number Diff line change
@@ -1,2 +1,5 @@
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
access_estate_property,access_estate_property,model_estate_property,base.group_user,1,1,1,1
access_estate_property_type,access_estate_property_type,model_estate_property_type,base.group_user,1,1,1,1
access_estate_property_tag,access_estate_property_tag,model_estate_property_tag,base.group_user,1,1,1,1
access_estate_property_offer,access_estate_property_offer,model_estate_property_offer,base.group_user,1,1,1,1
15 changes: 9 additions & 6 deletions estate/views/estate_menus.xml
Original file line number Diff line number Diff line change
@@ -1,8 +1,11 @@
<?xml version="1.0"?>
<odoo>
<menuitem id="estate_property_root" name="Real Estate">
<menuitem id="test_first_level_menu" name="Properties">
<menuitem id="estate_property_menu_action" action="estate_property_action"/>
</menuitem>
</menuitem>
</odoo>
<menuitem id="estate_property_root" name="Real Estate" />
<menuitem id="estate_property_menu" name="Properties" parent="estate_property_root"
action="estate_property_action" />
<menuitem id="estate_settings_menu" name="Settings" parent="estate_property_root"/>
<menuitem id="estate_property_type_menu" name="Property Types" parent="estate_settings_menu"
action="estate_property_type_action" />
<menuitem id="estate_property_tag_menu" name="Property Tags" parent="estate_settings_menu"
action="estate_property_tag_action" />
</odoo>
53 changes: 53 additions & 0 deletions estate/views/estate_property_offer_views.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
<odoo>
<record id="view_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="Property">
<sheet>
<h1 class="">
<field name="name" />
</h1>
<div class="mb16">
<field name="tag_ids" widget="many2many_tags" />
</div>
<group>
<group>
<field name="postcode" />
<field name="date_availability" />
</group>
<group>
<field name="expected_price" />
<field name="selling_price" />
</group>
<group>
<field name="state" />
<field name="property_type_id" />
</group>
</group>
<notebook>
<page string="Description">
<group>
<field name="description" />
<field name="bedrooms" />
<field name="living_area" />
<field name="facades" />
<field name="garage" />
<field name="garden" />
<field name="garden_area" />
<field name="garden_orientation" />
</group>
</page>
<page string="Offers">
<group>
<field name="price" />
<field name="partner"/>
<field name="status"/>
</group>
</page>
</notebook>
</sheet>
</form>
</field>
</record>
</odoo>
8 changes: 8 additions & 0 deletions estate/views/estate_property_tag_views.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
<?xml version="1.0"?>
<odoo>
<record id="estate_property_tag_action" model="ir.actions.act_window">
<field name="name">name</field>
<field name="res_model">estate.property.tag</field>
<field name="view_mode">list,form</field>
</record>
</odoo>
32 changes: 32 additions & 0 deletions estate/views/estate_property_type_views.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
<?xml version="1.0"?>
<odoo>
<record id="view_estate_property_type_list" model="ir.ui.view">
<field name="name">estate.property.type.list</field>
<field name="model">estate.property.type</field>
<field name="arch" type="xml">
<list string="Property Types">
<field name="name"/>
</list>
</field>
</record>

<record id="view_estate_property_type_form" model="ir.ui.view">
<field name="name">estate.property.type.form</field>
<field name="model">estate.property.type</field>
<field name="arch" type="xml">
<form string="Property Type">
<sheet>
<group>
<field name="name"/>
</group>
</sheet>
</form>
</field>
</record>

<record id="estate_property_type_action" model="ir.actions.act_window">
<field name="name">Types</field>
<field name="res_model">estate.property.type</field>
<field name="view_mode">list,form</field>
</record>
</odoo>
45 changes: 31 additions & 14 deletions estate/views/estate_property_views.xml
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
<?xml version="1.0"?>
<odoo>

<!-- list view -->
<record id="view_estate_property_list" model="ir.ui.view">
<field name="name">estate.property.list</field>
<field name="model">estate.property</field>
Expand All @@ -14,25 +13,37 @@
<field name="postcode" />
<field name="date_availability" />
<field name="active" />
<field name="property_type_id" />
<field name="tag_ids" widget="many2many_tags" />
</list>
</field>
</record>

<!-- form view -->
<record id="view_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="Property">
<sheet>
<group>
<h1 class="">
<field name="name" />
<field name="expected_price" />
<field name="selling_price" />
<field name="state" />
<field name="postcode" />
<field name="date_availability" />
<field name="active" />
</h1>
<div class="mb16">
<field name="tag_ids" widget="many2many_tags" />
</div>
<group>
<group>
<field name="postcode" />
<field name="date_availability" />
</group>
<group>
<field name="expected_price" />
<field name="selling_price" />
</group>
<group>
<field name="state" />
<field name="property_type_id" />
</group>
</group>
<notebook>
<page string="Description">
Expand All @@ -47,27 +58,33 @@
<field name="garden_orientation" />
</group>
</page>
<page string="Offers">
<group>
<field name="price" />
<field name="partner"/>
<field name="status"/>
</group>
</page>
</notebook>
</sheet>
</form>
</field>
</record>

<!-- search view -->

<record id="view_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 name="name" />
<filter string="Archived" name="inactive"
<field name="property_type_id" />
<filter string="Archived" name="inactive"
domain="[('active', '=', False)]" />
<filter string="Available" name="aadfae"
domain="[('state', 'in', ['New', 'Offer Received'])]" />
<filter name="fadsfef"
string="Postcode"
context="{'group_by': 'postcode'}" />
context="{'group_by': 'postcode'}" />
</search>
</field>
</record>
Expand All @@ -77,4 +94,4 @@
<field name="res_model">estate.property</field>
<field name="view_mode">list,form</field>
</record>
</odoo>
</odoo>

0 comments on commit 8676a02

Please sign in to comment.