Merge lp:~openerp-commiter/openobject-client/6.0-opw-344217-nch into lp:openobject-client/6.0

Proposed by Naresh(OpenERP)
Status: Merged
Merged at revision: 1933
Proposed branch: lp:~openerp-commiter/openobject-client/6.0-opw-344217-nch
Merge into: lp:openobject-client/6.0
Diff against target: 83 lines (+9/-9)
1 file modified
bin/widget_search/form.py (+9/-9)
To merge this branch: bzr merge lp:~openerp-commiter/openobject-client/6.0-opw-344217-nch
Reviewer Review Type Date Requested Status
Olivier Laurent (Open ERP) Pending
Review via email: mp+89229@code.launchpad.net

Description of the change

Hello,

case 344217:

[FIX]:group_by from context was not rendering correctly i.e it changes order of display and also clicking clear should remove the group by from context if any provided on action.

How to reproduce:
Go to Accounting/Reporting/Statistic Reports/Entries Analysis on this action add this context:
{'group_by':['journal_id', 'account_id','user_type'], 'search_default_usertype':1, 'search_default_group_journal':1, 'search_default_group_account':1, 'search_default_thisyear':1, 'group_by_no_leaf':1}

you see each time the group by order is different.

Regards,

To post a comment you must log in.

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'bin/widget_search/form.py'
2--- bin/widget_search/form.py 2011-02-01 09:45:54 +0000
3+++ bin/widget_search/form.py 2012-01-19 12:10:31 +0000
4@@ -132,6 +132,7 @@
5 self.col = col
6 self.focusable = None
7 self.add_widget_end = []
8+ self.filter_order = 0
9
10 def destroy(self):
11 self.container.destroy()
12@@ -183,6 +184,7 @@
13 self.container = container
14
15 for node in root_node:
16+ self.filter_order += 1
17 attrs = tools.node_attributes(node)
18 if attrs.get('invisible', False):
19 visval = eval(attrs['invisible'], {'context':call[0].context})
20@@ -217,7 +219,7 @@
21 if node_child.tag == 'filter':
22 widget_child = widgets_type['filter'][0]('', self.parent, attrs_child, call)
23 mywidget.pack_start(widget_child.widget)
24- dict_widget[str(attrs['name']) + str(uuid.uuid1())] = (widget_child, mywidget, 1)
25+ dict_widget[str(attrs['name']) + str(uuid.uuid1())] = (widget_child, mywidget, 1, self.filter_order)
26 elif node_child.tag == 'separator':
27 if attrs_child.get('orientation','vertical') == 'horizontal':
28 sep = gtk.HSeparator()
29@@ -230,14 +232,14 @@
30 # mywidget.pack_start(widget_act.widget,expand=False,fill=False)
31 xoptions = gtk.SHRINK
32 wid = container.wid_add(mywidget, 1,label, int(self.fields[str(attrs['name'])].get('expand',0)),xoptions=xoptions)
33- dict_widget[str(attrs['name'])] = (widget_act, wid, 1)
34+ dict_widget[str(attrs['name'])] = (widget_act, wid, 1, self.filter_order)
35
36 elif node.tag == 'filter':
37 name = str(attrs.get('string','filter'))
38 widget_act = filter.filter(name, self.parent, attrs, call)
39 help = attrs.get('help', False) or name
40 wid = container.wid_add(widget_act.butt, xoptions=gtk.SHRINK, help=help)
41- dict_widget[name + str(uuid.uuid1())] = (widget_act, widget_act, 1)
42+ dict_widget[name + str(uuid.uuid1())] = (widget_act, widget_act, 1, self.filter_order)
43
44 elif node.tag == 'separator':
45 if attrs.get('orientation','vertical') == 'horizontal':
46@@ -348,7 +350,7 @@
47 x[0].clear()
48
49 def show(self):
50- for w, widget, value in self.widgets.values():
51+ for w, widget, value, order in self.widgets.values():
52 if w.attrs.get('default_focus'):
53 w.grab_focus()
54 if value >= 2:
55@@ -356,7 +358,7 @@
56 self._hide=False
57
58 def hide(self):
59- for w, widget, value in self.widgets.values():
60+ for w, widget, value, order in self.widgets.values():
61 if value >= 2:
62 widget.hide()
63 self._hide=True
64@@ -394,8 +396,7 @@
65 def _value_get(self):
66 domain = []
67 context = {}
68-
69- for x in self.widgets.values() + self.custom_widgets.values():
70+ for x in sorted([value for value in self.widgets.values()], key=lambda value:value[3]) + self.custom_widgets.values():
71 filters = x[0].value
72 domain += filters.get('domain',[])
73 ctx = filters.get('context',{})
74@@ -410,8 +411,7 @@
75 ctx_remove_group = [ctx_remove_group]
76 [self.groupby.remove(x) for x in ctx_remove_group if x in self.groupby]
77 context.update(ctx)
78- if self.groupby:
79- context.update({'group_by':self.groupby})
80+ context.update({'group_by':self.groupby})
81 if domain:
82 if len(domain)>1 and domain[-2] in ['&','|']:
83 if len(domain) == 2: