Skip to content

Commit dacf930

Browse files
committed
[IMP] estate: Enhanced Data Models and Functionalities
-Introduced Property Type and Property Tag models. -Added Buyer and Salesperson fields. -Implemented the Property Offer model.
1 parent 8b90fa3 commit dacf930

12 files changed

+224
-108
lines changed

estate/__manifest__.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,9 @@
99
'data': [
1010
'security/ir.model.access.csv',
1111
'views/estate_property_views.xml',
12-
'views/estate_menus.xml',
12+
'views/estate_property_type_views.xml',
13+
'views/estate_property_tag_views.xml',
14+
'views/estate_property_offer_views.xml',
15+
'views/estate_menus.xml'
1316
],
1417
}
15-

estate/models/__init__.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,4 @@
11
from . import estate_property
2+
from . import estate_property_type
3+
from . import estate_property_tag
4+
from . import estate_property_offer

estate/models/estate_property.py

Lines changed: 32 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -7,34 +7,43 @@ class EstateProperty(models.Model):
77
_description = "Real Estate Property"
88

99
name = fields.Char(required=True)
10-
description = fields.Text("Description")
11-
postcode = fields.Char("Postcode", required=True)
12-
date_availability = fields.Date("Availability Date", default=fields.Date.today()+relativedelta(months=3))
13-
expected_price = fields.Float(required=True)
10+
description = fields.Text()
11+
postcode = fields.Char()
12+
date_availability = fields.Date("Availability Date", default=fields.Date.today() + relativedelta(months=3))
13+
expected_price = fields.Float("Expected Price", required=True)
1414
selling_price = fields.Float("Selling Price", readonly=True)
15-
bedrooms = fields.Integer("Bedrooms", default=2)
16-
living_area = fields.Integer("living_area(sqm)")
17-
facades = fields.Integer("Facades")
18-
garage = fields.Boolean("Garage")
19-
garden = fields.Boolean("Garden")
20-
garden_area = fields.Integer("Garden Area sqm")
21-
garden_orientation = fields.Selection([
22-
('north', 'North'),
23-
('south', 'South'),
24-
('east', 'East'),
25-
('west', 'West'),
26-
])
15+
bedrooms = fields.Integer(default=2)
16+
living_area = fields.Integer("Living Area(sqm)")
17+
facades = fields.Integer()
18+
garage = fields.Boolean()
19+
garden = fields.Boolean()
20+
garden_area = fields.Integer("Garden Area(sqm)")
21+
garden_orientation = fields.Selection(
22+
selection=[
23+
("north", "North"),
24+
("south", "South"),
25+
("east", "East"),
26+
("west", "West"),
27+
],
28+
string="Garden Orientation",
29+
)
2730
state = fields.Selection(
2831
[
29-
('new', 'New'),
30-
('offer_received', 'Offer Received'),
31-
('offer_accepted', 'Offer Accepted'),
32-
('sold', 'Sold'),
33-
('canceled', 'Canceled'),
32+
("new", "New"),
33+
("offer_received", "Offer Received"),
34+
("offer_accepted", "Offer Accepted"),
35+
("sold", "Sold"),
36+
("cancelled", "Cancelled"),
3437
],
3538
string="Status",
3639
required=True,
3740
copy=False,
38-
default='new'
41+
default="new",
3942
)
40-
43+
active = fields.Boolean(default=True)
44+
property_type_id = fields.Many2one("estate.property.type", string="Property Type")
45+
buyer_id = fields.Many2one("res.partner", string="Buyer", copy=False)
46+
salesperson_id = fields.Many2one(
47+
"res.users", string="Salesperson")
48+
tag_ids = fields.Many2many("estate.property.tag", string="Tags")
49+
offer_ids = fields.One2many("estate.property.offer", "property_id", string="Offers")
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
from odoo import fields, models
2+
3+
4+
class EstatePropertyOffer(models.Model):
5+
_name = "estate.property.offer"
6+
_description = "Real Estate Property Offer"
7+
8+
price = fields.Float()
9+
status = fields.Selection(
10+
[("accepted", "Accepted"), ("refused", "Refused")],
11+
copy=False,
12+
)
13+
partner_id = fields.Many2one("res.partner", string="Partner", required=True)
14+
property_id = fields.Many2one("estate.property", string="Property", required=True)
15+
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
from odoo import fields, models
2+
3+
4+
class EstatePropertyTag(models.Model):
5+
_name = "estate.property.tag"
6+
_description = "Real Estate Property Tag"
7+
8+
name = fields.Char(required=True)
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
from odoo import fields, models
2+
3+
4+
class EstatePropertyType(models.Model):
5+
_name = "estate.property.type"
6+
_description = "Real Estate Property Type"
7+
8+
name = fields.Char(required=True)
Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,5 @@
1-
id,name,model_id/id,group_id/id,perm_read,perm_write,perm_create,perm_unlink
2-
estate.access_estate_property,access_estate_property,model_estate_property,base.group_user,1,1,1,1
1+
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
2+
estate.access_estate_property,access_estate_property,estate.model_estate_property,base.group_user,1,1,1,1
3+
estate.access_estate_property_type,access_estate_property_type,estate.model_estate_property_type,base.group_user,1,1,1,1
4+
access_estate_property_tag,estate.property.tag.access,model_estate_property_tag,base.group_user,1,1,1,1
5+
access_estate_property_offer,estate.property.offer.access,model_estate_property_offer,base.group_user,1,1,1,1

estate/views/estate_menus.xml

Lines changed: 21 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,26 @@
11
<odoo>
2+
<menuitem id="estate_menu_root" name="Real Estate" />
23

3-
<menuitem id="estate_root_menu" name="Estate"/>
4+
<menuitem id="menu_estate_advertisements"
5+
name="Advertisements"
6+
parent="estate_menu_root" />
47

5-
<menuitem id="estate_advertisement_menu"
6-
name="Advertisements"
7-
parent="estate_root_menu"/>
8-
<menuitem id="estate_property_menu"
9-
name="Properties"
10-
parent="estate_advertisement_menu"
11-
action="action_estate_property"/>
12-
<menuitem id="estate_property_list_menu"
13-
name="List"
14-
parent="estate_property_menu"
15-
action="action_estate_property_list_only"/>
8+
<menuitem id="menu_estate_property_action"
9+
name="Properties"
10+
parent="menu_estate_advertisements"
11+
action="action_estate_property" />
1612

17-
<menuitem id="estate_property_form_menu"
18-
name="Form"
19-
parent="estate_property_menu"
20-
action="estate_property_form_action"/>
13+
<menuitem id="menu_estate_settings"
14+
name="Settings"
15+
parent="estate_menu_root" />
16+
17+
<menuitem id="menu_estate_property_type_action_settings"
18+
name="Property Types"
19+
parent="menu_estate_settings"
20+
action="estate_property_type_action" />
21+
22+
<menuitem id="menu_estate_property_tag_action_settings"
23+
name="Property Tags"
24+
parent="menu_estate_settings"
25+
action="action_estate_property_tag" />
2126
</odoo>
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
<odoo>
2+
<record id="estate_property_offer_tree_view" model="ir.ui.view">
3+
<field name="name">estate.property.offer.list</field>
4+
<field name="model">estate.property.offer</field>
5+
<field name="arch" type="xml">
6+
<list>
7+
<field name="price" />
8+
<field name="partner_id" />
9+
<field name="status" />
10+
</list>
11+
</field>
12+
</record>
13+
14+
<record id="estate_property_offer_form_view" model="ir.ui.view">
15+
<field name="name">estate.property.offer.form</field>
16+
<field name="model">estate.property.offer</field>
17+
<field name="arch" type="xml">
18+
<form>
19+
<sheet>
20+
<group>
21+
<field name="price"/>
22+
<field name="partner_id"/>
23+
<field name="status"/>
24+
</group>
25+
</sheet>
26+
</form>
27+
</field>
28+
</record>
29+
</odoo>
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
<odoo>
2+
<record id="action_estate_property_tag" model="ir.actions.act_window">
3+
<field name="name">Property Tags</field>
4+
<field name="res_model">estate.property.tag</field>
5+
<field name="view_mode">list,form</field>
6+
</record>
7+
</odoo>
8+

0 commit comments

Comments
 (0)