Merge lp:~openerp-dev/openobject-client-web/6.0-opw-572735-xal into lp:openobject-client-web

Proposed by Xavier ALT
Status: Merged
Merged at revision: 4815
Proposed branch: lp:~openerp-dev/openobject-client-web/6.0-opw-572735-xal
Merge into: lp:openobject-client-web
Diff against target: 157 lines (+52/-11)
4 files modified
addons/openerp/controllers/listgrid.py (+8/-4)
addons/openerp/static/javascript/listgrid.js (+10/-1)
addons/openerp/widgets/templates/listgrid/listgroup.mako (+19/-5)
addons/openerp/widgets/templates/listgrid/multiple_group.mako (+15/-1)
To merge this branch: bzr merge lp:~openerp-dev/openobject-client-web/6.0-opw-572735-xal
Reviewer Review Type Date Requested Status
Xavier (Open ERP) Pending
Review via email: mp+107982@code.launchpad.net

Description of the change

Hi,

This fix the group_by feature within many2one "search popup", making "expand" column and "radio button" visible.

Steps:
- Create a new Sale Order
- In the "Customer" field, click on the "looking glass"
- Within the popup, expand "Group By" and click on "Salesman"

Current: Only group line are shown
Expected: Expand column and selection radio button should been shown.

Cheers,
Xavier

To post a comment you must log in.
4812. By Xavier ALT

[FIX] web: list view: fix multiple issues when grouping by multiple criteria

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'addons/openerp/controllers/listgrid.py'
2--- addons/openerp/controllers/listgrid.py 2012-03-06 05:24:05 +0000
3+++ addons/openerp/controllers/listgrid.py 2012-06-01 10:41:19 +0000
4@@ -183,12 +183,16 @@
5 domain = grp_domain
6 group_level = ast.literal_eval(group_level)
7 groups = ast.literal_eval(groups)
8-
9- context = {'group_by_no_leaf': int(no_leaf), 'group_by': group_by, '__domain': domain}
10- args = {'editable': True,
11+ # build a new TinyDict to correctly handle _terp_* params
12+ params = TinyDict(**kw)
13+ editable = params.editable
14+ selectable = params.selectable or 2
15+ context = params.context or {}
16+ context.update({'group_by_no_leaf': int(no_leaf), 'group_by': group_by, '__domain': domain})
17+ args = {'editable': editable,
18 'view_mode': ['tree', 'form', 'calendar', 'graph'],
19 'nolinks': 1, 'group_by_ctx': group_by,
20- 'selectable': 2,
21+ 'selectable': selectable,
22 'multiple_group_by': True,
23 'sort_key': kw.get('sort_key'),
24 'sort_order': kw.get('sort_order')}
25
26=== modified file 'addons/openerp/static/javascript/listgrid.js'
27--- addons/openerp/static/javascript/listgrid.js 2012-01-20 10:03:09 +0000
28+++ addons/openerp/static/javascript/listgrid.js 2012-06-01 10:41:19 +0000
29@@ -248,6 +248,12 @@
30 jQuery('#' + record + '[parent_grp_id="' + id + '"]').toggle();
31 } else {
32 if (jQuery(group).hasClass('group-expand')) {
33+ // get listview selectable value, so we know if we are in
34+ // simple or multiple selection mode
35+ var selectable = openobject.dom.get('_terp_selectable');
36+ if (selectable) {
37+ selectable = selectable.value
38+ }
39 jQuery.ajax({
40 url: '/openerp/listgrid/multiple_groupby',
41 type: 'POST',
42@@ -260,7 +266,10 @@
43 'groups': total_groups,
44 'no_leaf': no_leaf,
45 'sort_order': sort_order,
46- 'sort_key': sort_key},
47+ 'sort_key': sort_key,
48+ '_terp_editable': openobject.dom.get('_terp_editable').value,
49+ '_terp_selectable': selectable,
50+ '_terp_context': openobject.dom.get('_terp_context').value},
51 dataType: 'html',
52 success: function(xmlHttp) {
53 $group_record.after(xmlHttp);
54
55=== modified file 'addons/openerp/widgets/templates/listgrid/listgroup.mako'
56--- addons/openerp/widgets/templates/listgrid/listgroup.mako 2011-08-30 11:41:21 +0000
57+++ addons/openerp/widgets/templates/listgrid/listgroup.mako 2012-06-01 10:41:19 +0000
58@@ -34,7 +34,7 @@
59 <table id="${name}_grid" class="grid" width="100%" cellspacing="0" cellpadding="0">
60 <thead>
61 <tr class="grid-header">
62- % if editable:
63+ % if editable or selectable:
64 <th class="grid-cell selector"><div style="width: 0;"></div></th>
65 % endif
66 % for (field, field_attrs) in headers:
67@@ -53,7 +53,7 @@
68 <tbody>
69 % for j, grp_row in enumerate(grp_records):
70 <tr class="grid-row-group" grp_by_id="${grp_row.get('group_by_id')}" records="${grp_row.get('groups_id')}" style="cursor: pointer; " ch_records="${map(lambda x: x['id'], grp_row['child_rec'])}" grp_domain="${grp_row['__domain']}" grp_context="${grp_row['__context']['group_by']}">
71- % if editable:
72+ % if editable or selectable:
73
74 % if len(group_by_ctx) == 1 and group_by_no_leaf:
75 <td class="grid-cell"></td>
76@@ -111,6 +111,20 @@
77 <img src="/openerp/static/images/iconset-b-edit.gif" class="listImage" border="0"
78 title="${_('Edit')}" onclick="editRecord(${ch.get('id')}, '${source}')"/>
79 </td>
80+ % elif selector:
81+ <td class="grid-cell selector">
82+ % if not m2m:
83+ <%
84+ selector_click = "new ListView('%s').onBooleanClicked(!this.checked, '%s');" % (name, ch.get('id'))
85+ if selector == "radio":
86+ selector_click += " do_select();"
87+ %>
88+ <input type="${selector}" class="${selector} grid-record-selector"
89+ id="${name}/${ch.get('id')}" name="${(checkbox_name or None) and name}"
90+ value="${ch.get('id')}"
91+ onclick="${selector_click}"/>
92+ % endif
93+ </td>
94 % endif
95 % for i, (field, field_attrs) in enumerate(headers):
96 % if field != 'button':
97@@ -138,7 +152,7 @@
98
99 % for i in range(0, min_rows - len(grp_records)):
100 <tr class="grid-row-group">
101- % if editable:
102+ % if editable or selectable:
103 <td style="text-align: center" class="grid-cell selector">&nbsp;</td>
104 % endif
105 % for i, (field, field_attrs) in enumerate(headers):
106@@ -155,7 +169,7 @@
107 % if field_total:
108 <tfoot>
109 <tr class="field_sum">
110- % if editable:
111+ % if editable or selectable:
112 <td width="1%" class="grid-cell">&nbsp;</td>
113 % endif
114 % for i, (field, field_attrs) in enumerate(headers):
115@@ -209,7 +223,7 @@
116 });
117 </script>
118 % endif
119- % if editable:
120+ % if editable or selectable:
121 <script type="text/javascript">
122 jQuery('table[id=${name}_grid] tr.grid-row').click(function(event) {
123 var $this = jQuery(this);
124
125=== modified file 'addons/openerp/widgets/templates/listgrid/multiple_group.mako'
126--- addons/openerp/widgets/templates/listgrid/multiple_group.mako 2011-12-09 06:23:46 +0000
127+++ addons/openerp/widgets/templates/listgrid/multiple_group.mako 2012-06-01 10:41:19 +0000
128@@ -7,7 +7,7 @@
129 records="${grp_row['groups_id']}" style="cursor: pointer; background-color: ${background};"
130 ch_records="${map(lambda x: x['id'],grp_row['child_rec'])}" grp_domain="${grp_row['__domain']}"
131 grp_context="${grp_row['__context']['group_by']}">
132- % if editable:
133+ % if editable or selectable:
134 <td class="grid-cell" ></td>
135 % endif
136 % for i, (field, field_attrs) in enumerate(headers):
137@@ -68,6 +68,20 @@
138 <img src="/openerp/static/images/listgrid/edit_inline.gif" class="listImage" border="0"
139 title="${_('Edit')}" onclick="editRecord(${ch.get('id')}, '${source}')"/>
140 </td>
141+ % elif selectable:
142+ <td class="grid-cell selector">
143+ % if not m2m:
144+ <%
145+ selector_click = "new ListView('%s').onBooleanClicked(!this.checked, '%s');" % (name, ch.get('id'))
146+ if selector == "radio":
147+ selector_click += " do_select();"
148+ %>
149+ <input type="${selector}" class="${selector} grid-record-selector"
150+ id="${name}/${ch.get('id')}" name="${(checkbox_name or None) and name}"
151+ value="${ch.get('id')}"
152+ onclick="${selector_click}"/>
153+ % endif
154+ </td>
155 % endif
156 % for i, (field, field_attrs) in enumerate(headers):
157 % if field != 'button':