Skip to content

Commit dae9bd4

Browse files
committed
[IMP] estate: Sprinkles (cont)
- Color picker - Editable list view - Decorators - Fix no create/edit - Add offer link - Add domain
1 parent 979ac8f commit dae9bd4

File tree

7 files changed

+92
-17
lines changed

7 files changed

+92
-17
lines changed

estate/__manifest__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,9 @@
1212
'data': [
1313
'security/ir.model.access.csv',
1414
'views/estate_property_views.xml',
15+
'views/estate_property_offer_views.xml',
1516
'views/estate_property_type_views.xml',
1617
'views/estate_property_tag_views.xml',
17-
'views/estate_property_offer_list_views.xml',
1818
'views/estate_menus.xml',
1919
],
2020
}

estate/models/estate_property_offer.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ class EstatePropertyOffer(models.Model):
1919
property_id = fields.Many2one('estate.property', string='Property')
2020
validity = fields.Integer(default=7)
2121
date_deadline = fields.Date(compute='_compute_deadline', inverse="_inverse_deadline")
22+
property_type_id = fields.Many2one(related="property_id.property_type_id", store=True)
2223

2324
_check_price = models.Constraint(
2425
'CHECK(price > 0)',

estate/models/estate_property_type.py

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
from odoo import fields, models
1+
from odoo import api, fields, models
22

33

44
class EstatePropertyType(models.Model):
@@ -11,3 +11,12 @@ class EstatePropertyType(models.Model):
1111
'estate.property', 'property_type_id', string="Properties",
1212
)
1313
sequence = fields.Integer('Sequence', default=1, help="Used to order property types.")
14+
offer_ids = fields.One2many(
15+
'estate.property.offer', 'property_type_id', string="Offers",
16+
)
17+
offer_count = fields.Integer(compute="_compute_offer_count")
18+
19+
@api.depends('offer_ids')
20+
def _compute_offer_count(self):
21+
for record in self:
22+
record.offer_count = len(record.offer_ids)

estate/views/estate_property_offer_list_views.xml renamed to estate/views/estate_property_offer_views.xml

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,21 @@
11
<odoo>
2+
<record id="estate_property_offer_action" model="ir.actions.act_window">
3+
<field name="name">Property Offers</field>
4+
<field name="res_model">estate.property.offer</field>
5+
<field name="view_mode">list,form</field>
6+
<field name="domain">[('property_type_id', '=', active_id)]</field>
7+
</record>
8+
29
<record id="estate_property_offer_view_tree" model="ir.ui.view">
310
<field name="name">estate.property.offer.list</field>
411
<field name="model">estate.property.offer</field>
512
<field name="arch" type="xml">
6-
<list string="Properties">
13+
<list
14+
string="Offers"
15+
editable="bottom"
16+
decoration-success="status == 'accepted'"
17+
decoration-danger="status == 'refused'"
18+
>
719
<field name="price"/>
820
<field name="partner_id"/>
921
<field name="validity" string="Validity (days)"/>
@@ -22,7 +34,6 @@
2234
title="refuse"
2335
invisible="status"
2436
/>
25-
<field name="status"/>
2637
</list>
2738
</field>
2839
</record>

estate/views/estate_property_tag_views.xml

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,4 +4,32 @@
44
<field name="res_model">estate.property.tag</field>
55
<field name="view_mode">list,form</field>
66
</record>
7+
8+
<record id="estate_property_tag_view_tree" model="ir.ui.view">
9+
<field name="name">estate.property.tag.list</field>
10+
<field name="model">estate.property.tag</field>
11+
<field name="arch" type="xml">
12+
<list string="Property Types" editable="bottom">
13+
<field name="name"/>
14+
<field name="color" widget="color_picker"/>
15+
</list>
16+
</field>
17+
</record>
18+
19+
<record id="estate_property_tag_view_form" model="ir.ui.view">
20+
<field name="name">estate.property.tag.form</field>
21+
<field name="model">estate.property.tag</field>
22+
<field name="arch" type="xml">
23+
<form string="Property Tag">
24+
<sheet>
25+
<group>
26+
<field name="name"/>
27+
</group>
28+
<group>
29+
<field name="color" widget="color_picker"/>
30+
</group>
31+
</sheet>
32+
</form>
33+
</field>
34+
</record>
735
</odoo>

estate/views/estate_property_type_views.xml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,13 @@
2121
<field name="model">estate.property.type</field>
2222
<field name="arch" type="xml">
2323
<form string="Property Type">
24+
<header>
25+
<button
26+
string="Stat"
27+
type="action"
28+
name="%(estate.estate_property_offer_action)d"
29+
/>
30+
</header>
2431
<sheet>
2532
<h1 class="mb32">
2633
<field name="name" class="mb16"/>

estate/views/estate_property_views.xml

Lines changed: 32 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,21 @@
11
<odoo>
2-
<record id="estate_property_action" model="ir.actions.act_window">
3-
<field name="name">Properties</field>
4-
<field name="res_model">estate.property</field>
5-
<field name="view_mode">list,form</field>
6-
</record>
7-
82
<record id="estate_property_view_tree" model="ir.ui.view">
93
<field name="name">estate.property.list</field>
104
<field name="model">estate.property</field>
115
<field name="arch" type="xml">
12-
<list string="Properties">
6+
<list
7+
string="Properties"
8+
decoration-success="state in ['offer_received', 'offer_accepted']"
9+
decoration-bf="state == 'offer_accepted'"
10+
decoration-muted="state == 'cancelled'"
11+
>
1312
<field name="name" string="Title" width="120px"/>
1413
<field name="postcode" width="40px"/>
1514
<field name="bedrooms" width="70px"/>
1615
<field name="living_area" string="Living Area (sqm)"/>
1716
<field name="expected_price"/>
1817
<field name="selling_price"/>
19-
<field name="date_availability" string="Available from"/>
18+
<field name="date_availability" string="Available from" optional="True"/>
2019
<field name="property_type_id" width="120px"/>
2120
<field name="tag_ids" widget="many2many_tags" width="120px" options="{'color_field': 'color'}"/>
2221
</list>
@@ -42,18 +41,29 @@
4241
type="object"
4342
invisible="state in ['sold', 'cancelled']"
4443
/>
45-
<field name="state" widget="statusbar" statusbar_visible="new,offer_received,offer_accepted,sold"/>
44+
<field
45+
name="state"
46+
widget="statusbar"
47+
statusbar_visible="new,offer_received,offer_accepted,sold"
48+
/>
4649
</header>
4750
<sheet>
4851
<h1 class="mb32">
4952
<field name="name" class="mb16"/>
5053
</h1>
5154
<group>
52-
<field name="tag_ids" widget="many2many_tags" options="{'color_field': 'color', 'edit_tags': true}"/>
55+
<field
56+
name="tag_ids"
57+
widget="many2many_tags"
58+
options="{'color_field': 'color', 'edit_tags': true}"
59+
/>
5360
</group>
5461
<group>
5562
<group>
56-
<field name="property_type_id" options="{'no_create_edit': true}" />
63+
<field
64+
name="property_type_id"
65+
options="{'no_create_edit': true, 'no_create': true}"
66+
/>
5767
</group>
5868
<group> /
5969
<field name="postcode"/>
@@ -116,16 +126,25 @@
116126
<field name="postcode"/>
117127
<field name="expected_price"/>
118128
<field name="bedrooms"/>
119-
<field name="living_area"/>
129+
<field
130+
name="living_area"
131+
filter_domain="[('living_area', '>=', self)]"
132+
/>
120133
<field name="facades"/>
121134
<field name="property_type_id"/>
122135

123136
<separator/>
124137

125138
<filter string="Available" name="available" domain="['|', ('state', '=', 'new'), ('state', '=', 'offer_received')]"/>
126-
127139
<filter string="Postcode" name="postcode" context="{'group_by':'postcode'}"/>
128140
</search>
129141
</field>
130142
</record>
143+
144+
<record id="estate_property_action" model="ir.actions.act_window">
145+
<field name="name">Properties</field>
146+
<field name="res_model">estate.property</field>
147+
<field name="view_mode">list,form</field>
148+
<field name="context">{'search_default_available': True}</field>
149+
</record>
131150
</odoo>

0 commit comments

Comments
 (0)