Skip to content

Commit

Permalink
[IMP] estate: add property type ,tags and offers
Browse files Browse the repository at this point in the history
- Added estate_property_tag, estate_property_type, estate_property_offer models.
- Added  Many2one, Many2many, One2many relations between different models in the
estate app.
  • Loading branch information
pvag-odoo committed Feb 9, 2025
1 parent 5517937 commit fc451af
Show file tree
Hide file tree
Showing 12 changed files with 151 additions and 35 deletions.
7 changes: 5 additions & 2 deletions estate/__manifest__.py
Original file line number Diff line number Diff line change
@@ -1,10 +1,13 @@
{
"name": "estate",
'depends':['base'],
'depends': ['base'],
"data": [
"security/ir.model.access.csv",
"views/estate_menus.xml",
"views/estate_property_views.xml",
"views/estate_menus.xml"
"views/estate_property_type_views.xml",
"views/estate_property_tag_views.xml",
"views/estate_property_offer_views.xml",
],
'installable': True,
"application": True,
Expand Down
3 changes: 3 additions & 0 deletions estate/models/__init__.py
Original file line number Diff line number Diff line change
@@ -1 +1,4 @@
from . import estate_property
from . import estate_property_type
from . import estate_property_tag
from . import estate_property_offer
6 changes: 6 additions & 0 deletions estate/models/estate_property.py
Original file line number Diff line number Diff line change
Expand Up @@ -38,3 +38,9 @@ class EstateProperty(models.Model):
("cancelled", "Cancelled"),
])
active = fields.Boolean(default = True)
property_type_id = fields.Many2one("estate.property.type",string="Property Type")
user_id = fields.Many2one('res.users', string='Salesperson', index=True, default=lambda self: self.env.user)
buyer_id = fields.Many2one('res.partner', string='Buyer', index=True, default=lambda self:self.env.user, copy=False)
offer_ids = fields.One2many("estate.property.offer", "property_id")
tags_ids = fields.Many2many("estate.property.tag", string="Tags")

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

class EstatePropertyOffer(models.Model):
_name = "estate.property.offer"
_description = "Estate Property Offer"

price = fields.Float()
status = fields.Selection(
string="Status",
copy = False,
selection=[
("offer_accepted", "Accepted"),
("refused","Refused")
])
partner_id = fields.Many2one('res.partner', string='Partner', index=True, required = True)
property_id = fields.Many2one("estate.property", required = True)

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

class EstatePropertyTag(models.Model):
_name = "estate.property.tag"
_description = "Estate Property Type"

name = fields.Char(required = True)
7 changes: 7 additions & 0 deletions estate/models/estate_property_type.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
from odoo import fields, models

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

name = fields.Char(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,estate.property,model_estate_property,base.group_user,1,1,1,1
access_estate_property,estate.property,model_estate_property,base.group_user,1,1,1,1
access_estate_property_type,access.estate.property.type,model_estate_property_type,,1,1,1,1
access_estate_property_tag,access.estate.property.tag,model_estate_property_tag,,1,1,1,1
access_estate_property_offer,access.estate.property.offer,model_estate_property_offer,,1,1,1,1
15 changes: 10 additions & 5 deletions estate/views/estate_menus.xml
Original file line number Diff line number Diff line change
@@ -1,8 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?>
<?xml version="1.0" encoding="utf-8"?>

<odoo>
<menuitem id="test_menu_root" name="Estate">
<menuitem id="test_first_level_menu" name="Advertisement">
<menuitem id="test_model_menu_action" action="estate_property_actions"/>
<menuitem id="estate_menu_root" name="Real Estate">
<menuitem id="estate_property_advertisement" name="Advertisements">
<menuitem id="estate_property_menu_action" action="estate_property_actions"/>
</menuitem>
<menuitem id="estate_property_settings" name="Settings">
<menuitem id="estate_property_type_menu_action" action="estate_property_type_actions"/>
<menuitem id="estate_property_tag_menu_action" action="estate_property_tag_actions"/>
</menuitem>
</menuitem>
</menuitem>
</odoo>
28 changes: 28 additions & 0 deletions estate/views/estate_property_offer_views.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
<?xml version="1.0" encoding="UTF-8"?>
<odoo>
<record id="estate_property_offer_listview" model="ir.ui.view">
<field name="name">esate.property.listview</field>
<field name="model">estate.property.offer</field>
<field name="arch" type="xml">
<list string="List">
<field name="price" />
<field name="partner_id" />
<field name="status" />
</list>
</field>
</record>

<record id="estate_property_offer_formview" model="ir.ui.view">
<field name="name">estate.property.fromview</field>
<field name="model">estate.property.offer</field>
<field name="arch" type="xml">
<form string="Form">
<group>
<field name="price" />
<field name="partner_id" />
<field name="status" />
</group>
</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" encoding="UTF-8"?>
<odoo>
<record id="estate_property_tag_actions" model="ir.actions.act_window">
<field name="name">Property Tags</field>
<field name="res_model">estate.property.tag</field>
<field name="view_mode">list,form</field>
</record>
</odoo>
8 changes: 8 additions & 0 deletions estate/views/estate_property_type_views.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<odoo>
<record id="estate_property_type_actions" model="ir.actions.act_window">
<field name="name">Property Type</field>
<field name="res_model">estate.property.type</field>
<field name="view_mode">list,form</field>
</record>
</odoo>
75 changes: 48 additions & 27 deletions estate/views/estate_property_views.xml
Original file line number Diff line number Diff line change
Expand Up @@ -5,70 +5,91 @@
<field name="res_model">estate.property</field>
<field name="view_mode">list,form</field>
</record>

<record id="list_view" model="ir.ui.view">
<field name="name">ListView</field>
<field name="model">estate.property</field>
<field name="arch" type="xml">
<list string="List">
<field name="name" string="Title"/>
<field name="postcode"/>
<field name="bedrooms"/>
<field name="name" string="Title" />
<field name="tags_ids" widget="many2many_tags" />
<field name="property_type_id" />
<field name="postcode" />
<field name="bedrooms" />
<field name="living_area" />
<field name="expected_price"/>
<field name="selling_price"/>
<field name="date_availability"/>
<field name="expected_price" />
<field name="selling_price" />
<field name="date_availability" />
</list>
</field>
</record>

<record id="form_view" model="ir.ui.view">
<field name="name">FormView</field>
<field name="model">estate.property</field>
<field name="arch" type="xml">
<form string="Form">
<sheet>
<h1><field name="name"/></h1>
<h1>
<field name="name" />
</h1>
<group>
<group>
<field name="postcode"/>
<field name="date_availability"/>
<field name="property_type_id" />
<field name="tags_ids" widget="many2many_tags" />
<field name="postcode" />
<field name="date_availability" />
</group>
<group>
<field name="expected_price"/>
<field name="selling_price"/>
<field name="expected_price" />
<field name="selling_price" />
</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"/>
<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">
<field name="offer_ids"
readonly="status in ('offer_accepted','cancelled','sold')" />
</page>
<page string="Other Info">
<group>
<field name="user_id" />
<field name="buyer_id" />
</group>
</page>
</notebook>
</sheet>
</form>
</field>
</record>

<record id="search_view" model="ir.ui.view">
<field name="name">SearchView</field>
<field name="model">estate.property</field>
<field name="arch" type="xml">
<search string="Search">
<field name="name"/>
<field name="expected_price"/>
<field name="bedrooms"/>
<field name="postcode"/>
<field name="living_area"/>
<field name="facades"/>
<filter name='available_property' string='Available' domain="['|',('status','=','new'),('status','=','offer_received')]"/>
<field name="property_type_id" />
<field name="name" />
<field name="expected_price" />
<field name="bedrooms" />
<field name="postcode" />
<field name="living_area" />
<field name="facades" />
<filter name='available_property' string='Available'
domain="['|',('status','=','new'),('status','=','offer_received')]" />
<group string='Group By'>
<filter name='postcode' context="{'group_by':'postcode'}"/>
<filter name='postcode' context="{'group_by':'postcode'}" />
</group>
</search>
</field>
Expand Down

0 comments on commit fc451af

Please sign in to comment.