Merge lp:~openerp-dev/openobject-client-web/listview_invisible into lp:openobject-client-web/trunk

Proposed by Sananaz (Open ERP)
Status: Merged
Merged at revision: 4107
Proposed branch: lp:~openerp-dev/openobject-client-web/listview_invisible
Merge into: lp:openobject-client-web/trunk
Diff against target: 243 lines (+51/-28)
8 files modified
addons/openerp/static/javascript/form_state.js (+21/-14)
addons/openerp/widgets/form/_form.py (+7/-3)
addons/openerp/widgets/form/templates/hidden.mako (+1/-1)
addons/openerp/widgets/listgrid.py (+13/-5)
addons/openerp/widgets/templates/listgrid/boolean.mako (+1/-1)
addons/openerp/widgets/templates/listgrid/button.mako (+3/-3)
addons/openerp/widgets/templates/listgrid/char.mako (+1/-1)
addons/openerp/widgets/templates/listgrid/listgrid.mako (+4/-0)
To merge this branch: bzr merge lp:~openerp-dev/openobject-client-web/listview_invisible
Reviewer Review Type Date Requested Status
OpenERP R&D Web Team Pending
Review via email: mp+43494@code.launchpad.net

Description of the change

- Support invisible for List view.
- Example: <field name="journal_id" invisible="1">
- It fixed the Bug #681688.

To post a comment you must log in.
4084. By Sananaz (Open ERP)

[FIX] Call get_sortable_text directly from the fields, need to remove conflicts from listgroup.mako.

4085. By Sananaz (Open ERP)

[FIX] Improve update_param.

4086. By Sananaz (Open ERP)

[FIX] Fixed typo 'template', update params for attrs.

4087. By Sananaz (Open ERP)

[IMP] Implement attrs for listview.

4088. By Sananaz (Open ERP)

[FIX] minor changes.

Revision history for this message
Sananaz (Open ERP) (sma-tiny) wrote :

Hello XMO,

Attrs `invisible` for listview will work now.
I request you to please check it and merge with trunk branch.

Thank you.

Revision history for this message
Xavier (Open ERP) (xmo-deactivatedaccount) wrote :

Seems to be working fine, I want to check a little something re. 628037 tomorrow morning but I should be able to merge it before morning ends (ours anyway).

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'addons/openerp/static/javascript/form_state.js'
--- addons/openerp/static/javascript/form_state.js 2010-12-13 06:36:34 +0000
+++ addons/openerp/static/javascript/form_state.js 2010-12-14 11:26:30 +0000
@@ -93,7 +93,7 @@
93}93}
9494
95function form_hookAttrChange() {95function form_hookAttrChange() {
96 var $items = jQuery('td[attrs], div.notebook-page[attrs]');96 var $items = jQuery('[attrs]');
97 var fields = {};97 var fields = {};
9898
99 $items.each(function(){99 $items.each(function(){
@@ -120,13 +120,13 @@
120 var expr_fields = {}; // check if field appears more then once in the expr120 var expr_fields = {}; // check if field appears more then once in the expr
121121
122 if (attrs[attr] == ''){122 if (attrs[attr] == ''){
123 return form_onAttrChange(container, widget, attr, attrs[attr]);123 return form_onAttrChange(container, widget, attr, attrs[attr], $this);
124 }124 }
125 125
126 forEach(attrs[attr], function(n){126 forEach(attrs[attr], function(n){
127127
128 if (typeof(n) == "number") { // {'invisible': [1]}128 if (typeof(n) == "number") { // {'invisible': [1]}
129 return form_onAttrChange(container, widget, attr, n);129 return form_onAttrChange(container, widget, attr, n, $this);
130 }130 }
131131
132 var name = prefix + n[0];132 var name = prefix + n[0];
@@ -136,7 +136,7 @@
136 expr_fields[field.id] = 1;136 expr_fields[field.id] = 1;
137 // events disconnected during hook_onStateChange,137 // events disconnected during hook_onStateChange,
138 // don't redisconnect or may break onStateChange138 // don't redisconnect or may break onStateChange
139 var $field = jQuery(field).bind('onAttrChange', partial(form_onAttrChange, container, widget, attr, attrs[attr]));139 var $field = jQuery(field).bind('onAttrChange', partial(form_onAttrChange, container, widget, attr, attrs[attr], $this));
140 $field.change(function () {140 $field.change(function () {
141 jQuery(this).trigger('onAttrChange');141 jQuery(this).trigger('onAttrChange');
142 });142 });
@@ -150,12 +150,12 @@
150 }150 }
151}151}
152152
153function form_onAttrChange(container, widgetName, attr, expr) {153function form_onAttrChange(container, widgetName, attr, expr, elem) {
154154
155 var prefix = widgetName.slice(0, widgetName.lastIndexOf('/') + 1);155 var prefix = widgetName.slice(0, widgetName.lastIndexOf('/') + 1);
156 var widget = openobject.dom.get(widgetName);156 var widget = openobject.dom.get(widgetName);
157157
158 var result = form_evalExpr(prefix, expr);158 var result = form_evalExpr(prefix, expr, elem);
159159
160 switch (attr) {160 switch (attr) {
161 case 'readonly': form_setReadonly(container, widget, result);161 case 'readonly': form_setReadonly(container, widget, result);
@@ -168,26 +168,33 @@
168 }168 }
169}169}
170170
171function form_evalExpr(prefix, expr) {171function form_evalExpr(prefix, expr, ref_elem) {
172172
173 var stack = [];173 var stack = [];
174 for (var i = 0; i < expr.length; i++) {174 for (var i = 0; i < expr.length; i++) {
175175
176 var ex = expr[i];176 var ex = expr[i];
177 var elem = openobject.dom.get(prefix + ex[0]);177 var elem = null;
178 178 if (ref_elem.parents('table.grid').length) {
179 var parent = ref_elem.parents('tr.grid-row');
180 var elem = parent.find(idSelector(prefix + ex[0]));
181 }
182 if (!elem || !elem.length) {
183 var elem = jQuery(idSelector(prefix + ex[0]));
184 }
185
179 if (ex.length==1) {186 if (ex.length==1) {
180 stack.push(ex[0]);187 stack.push(ex[0]);
181 continue;188 continue;
182 }189 }
183 190
184 if (!elem) 191 if (!elem)
185 continue;192 continue;
186 193
187 var op = ex[1];194 var op = ex[1];
188 var val = ex[2];195 var val = ex[2];
189 var elem_value = elem.value || getNodeAttribute(elem, 'value') || elem.innerHTML;196 var elem_value = elem.attr('value') || elem.text();
190 197
191 switch (op.toLowerCase()) {198 switch (op.toLowerCase()) {
192 case '=':199 case '=':
193 case '==':200 case '==':
194201
=== modified file 'addons/openerp/widgets/form/_form.py'
--- addons/openerp/widgets/form/_form.py 2010-12-14 06:01:56 +0000
+++ addons/openerp/widgets/form/_form.py 2010-12-14 11:26:30 +0000
@@ -616,15 +616,19 @@
616 self.widget = get_widget(kind)(**attrs)616 self.widget = get_widget(kind)(**attrs)
617 self.validator = self.widget.validator617 self.validator = self.widget.validator
618 self.relation = attrs.get('relation') or None618 self.relation = attrs.get('relation') or None
619 if self.readonly:619 self.editable = self.readonly
620 self.editable = self.readonly
621 if 'field_id' not in attrs:620 if 'field_id' not in attrs:
622 self.field_id = self.name621 self.field_id = self.name
623622
624 def set_value(self, value):623 def set_value(self, value):
625 self.widget.set_value(value)624 self.widget.set_value(value)
626 self.default = self.widget.default625 self.default = self.widget.default
627626
627 def get_sortable_text(self):
628 """ If returns anything other then None, the return value will be
629 used to sort the listgrid. Useful for localized data.
630 """
631 return None
628632
629class Button(TinyInputWidget):633class Button(TinyInputWidget):
630634
631635
=== modified file 'addons/openerp/widgets/form/templates/hidden.mako'
--- addons/openerp/widgets/form/templates/hidden.mako 2010-10-27 09:36:11 +0000
+++ addons/openerp/widgets/form/templates/hidden.mako 2010-12-14 11:26:30 +0000
@@ -1,2 +1,2 @@
1<input type="hidden" name="${name}" class="${css_class}" readonly="${editable}"1<input type="hidden" name="${name}" class="${css_class}" value="${value}"
2 ${py.attrs(attrs, id=field_id, kind=kind, relation=relation, value=value)}/>2 ${py.attrs(attrs, id=field_id, kind=kind, relation=relation, value=value)}/>
33
=== modified file 'addons/openerp/widgets/listgrid.py'
--- addons/openerp/widgets/listgrid.py 2010-12-09 13:54:43 +0000
+++ addons/openerp/widgets/listgrid.py 2010-12-14 11:26:30 +0000
@@ -203,7 +203,8 @@
203 self.headers, self.hiddens, self.data, self.field_total, self.buttons = self.parse(root, fields, data)203 self.headers, self.hiddens, self.data, self.field_total, self.buttons = self.parse(root, fields, data)
204204
205 for k, v in self.field_total.items():205 for k, v in self.field_total.items():
206 self.field_total[k][1] = self.do_sum(self.data, k)206 if(len([test[0] for test in self.hiddens if test[0] == k])) <= 0:
207 self.field_total[k][1] = self.do_sum(self.data, k)
207208
208 self.columns = len(self.headers)209 self.columns = len(self.headers)
209210
@@ -361,7 +362,6 @@
361362
362 if invisible:363 if invisible:
363 hiddens += [(name, fields[name])]364 hiddens += [(name, fields[name])]
364# continue
365365
366 if 'sum' in attrs:366 if 'sum' in attrs:
367 field_total[name] = [attrs['sum'], 0.0]367 field_total[name] = [attrs['sum'], 0.0]
@@ -369,7 +369,11 @@
369 for i, row in enumerate(data):369 for i, row in enumerate(data):
370370
371 row_value = values[i]371 row_value = values[i]
372 cell = CELLTYPES[kind](value=row_value.get(name, False), **fields[name])372 if invisible:
373 cell = form.Hidden(**fields[name])
374 cell.set_value(row_value.get(name, False))
375 else:
376 cell = CELLTYPES[kind](value=row_value.get(name, False), **fields[name])
373377
374 for color, expr in self.colors.items():378 for color, expr in self.colors.items():
375 try:379 try:
@@ -540,7 +544,7 @@
540 return ustr(self.value or '')544 return ustr(self.value or '')
541545
542class Boolean(Char):546class Boolean(Char):
543 templates = "/openerp/widgets/templates/listgrid/boolean.mako"547 template = "/openerp/widgets/templates/listgrid/boolean.mako"
544548
545 params = ['val', 'kind']549 params = ['val', 'kind']
546550
@@ -567,7 +571,7 @@
567571
568 self.btype = attrs.get('special', attrs.get('type', 'workflow'))572 self.btype = attrs.get('special', attrs.get('type', 'workflow'))
569 self.icon = attrs.get('icon')573 self.icon = attrs.get('icon')
570574 self.attrs = attrs.get('attrs', {})
571 if self.icon:575 if self.icon:
572 self.icon = icons.get_icon(self.icon)576 self.icon = icons.get_icon(self.icon)
573577
@@ -594,6 +598,10 @@
594598
595 return dict(id=id, visible=visible)599 return dict(id=id, visible=visible)
596600
601 def update_params(self, params):
602 super(Button, self).update_params(params)
603 params['attrs']['attrs']=self.attrs
604
597605
598CELLTYPES = {606CELLTYPES = {
599 'char':Char,607 'char':Char,
600608
=== modified file 'addons/openerp/widgets/templates/listgrid/boolean.mako'
--- addons/openerp/widgets/templates/listgrid/boolean.mako 2010-12-02 13:30:21 +0000
+++ addons/openerp/widgets/templates/listgrid/boolean.mako 2010-12-14 11:26:30 +0000
@@ -1,1 +1,1 @@
1<input type="checkbox" kind="${kind}" class="checkbox" readonly="readonly" disabled="disabled" ${py.checker(val)} value="${val}">1<input type="checkbox" name="${name}" id="${name}" kind="${kind}" class="checkbox" readonly="readonly" disabled="disabled" ${py.checker(val)} value="${val}">
22
=== modified file 'addons/openerp/widgets/templates/listgrid/button.mako'
--- addons/openerp/widgets/templates/listgrid/button.mako 2010-12-02 12:14:31 +0000
+++ addons/openerp/widgets/templates/listgrid/button.mako 2010-12-14 11:26:30 +0000
@@ -1,13 +1,13 @@
1% if visible:1% if visible:
2 % if icon:2 % if icon:
3 <img height="16" width="16" class="listImage" src="${icon}" title="${help}" context="${ctx}" ${py.attrs(attrs)}3 <img height="16" width="16" name="${name}" id="${name}" class="listImage" src="${icon}" title="${help}" context="${ctx}" ${py.attrs(attrs)}
4 onclick="new ListView('${parent_grid}').onButtonClick('${name}', '${btype}', ${id}, '${confirm}', getNodeAttribute(this, 'context'))"/>4 onclick="new ListView('${parent_grid}').onButtonClick('${name}', '${btype}', ${id}, '${confirm}', getNodeAttribute(this, 'context'))"/>
5 % else:5 % else:
6 <a class="button-b" href="javascript: void(0)" ${py.attrs(attrs, context=ctx)} title="${help}"6 <a class="button-b" name="${name}" id="${name}" href="javascript: void(0)" ${py.attrs(attrs, context=ctx)} title="${help}"
7 onclick="new ListView('${parent_grid}').onButtonClick('${name}', '${btype}', ${id}, '${confirm}', getNodeAttribute(this, 'context'))">7 onclick="new ListView('${parent_grid}').onButtonClick('${name}', '${btype}', ${id}, '${confirm}', getNodeAttribute(this, 'context'))">
8 ${string}8 ${string}
9 </a>9 </a>
10 % endif10 % endif
11% elif not icon:11% elif not icon:
12 <span>&nbsp;</span>12 <span><img style="display:none" name="${name}" id="${name}" height="16" width="16" class="listImage" src="${icon}" title="${help}" context="${ctx}" ${py.attrs(attrs)} onclick="new ListView('${parent_grid}').onButtonClick('${name}', '${btype}', ${id}, '${confirm}', getNodeAttribute(this, 'context'))"/></span>
13% endif13% endif
1414
=== modified file 'addons/openerp/widgets/templates/listgrid/char.mako'
--- addons/openerp/widgets/templates/listgrid/char.mako 2010-12-02 12:14:31 +0000
+++ addons/openerp/widgets/templates/listgrid/char.mako 2010-12-14 11:26:30 +0000
@@ -1,1 +1,1 @@
1<span>${text}</span>1<span name="${name}" id="${name}" value="${value}">${text}</span>
22
=== modified file 'addons/openerp/widgets/templates/listgrid/listgrid.mako'
--- addons/openerp/widgets/templates/listgrid/listgrid.mako 2010-12-09 12:13:54 +0000
+++ addons/openerp/widgets/templates/listgrid/listgrid.mako 2010-12-14 11:26:30 +0000
@@ -67,6 +67,10 @@
67 % endif67 % endif
68 </td>68 </td>
69 % endif69 % endif
70 % for field, field_attrs in hiddens:
71 ${data[field].display()}
72 % endfor
73
70 % if editable:74 % if editable:
71 <td class="grid-cell selector">75 <td class="grid-cell selector">
72 % if not editors:76 % if not editors: