← Back to team overview

openerp-dev-web team mailing list archive

[Merge] lp:~openerp-dev/openobject-client/trunk-bug-735936-nch into lp:openobject-client

 

Naresh(OpenERP) has proposed merging lp:~openerp-dev/openobject-client/trunk-bug-735936-nch into lp:openobject-client.

Requested reviews:
  OpenERP sa GTK client R&D (openerp-dev-gtk)
Related bugs:
  Bug #735936 in OpenERP GTK Client: "default not working together with group by in context"
  https://bugs.launchpad.net/openobject-client/+bug/735936

For more details, see:
https://code.launchpad.net/~openerp-dev/openobject-client/trunk-bug-735936-nch/+merge/57309
-- 
https://code.launchpad.net/~openerp-dev/openobject-client/trunk-bug-735936-nch/+merge/57309
Your team OpenERP R&D Team is subscribed to branch lp:~openerp-dev/openobject-client/trunk-bug-735936-nch.
=== modified file 'bin/widget/screen/screen.py'
--- bin/widget/screen/screen.py	2011-02-11 06:59:40 +0000
+++ bin/widget/screen/screen.py	2011-04-12 12:03:52 +0000
@@ -259,6 +259,7 @@
                self.context.get('group_by_no_leaf')) \
                and not self.current_view.view_type == 'graph':
             self.current_view.reload = True
+            self.search_count = rpc.session.rpc_exec_auth_try('/object', 'execute', self.name, 'search_count', v, self.context)
             self.display()
             return True
         ids = rpc.session.rpc_exec_auth('/object', 'execute', self.name, 'search', v, offset, limit, self.sort, self.context)

=== modified file 'bin/widget/view/form_gtk/one2many_list.py'
--- bin/widget/view/form_gtk/one2many_list.py	2011-03-28 09:11:21 +0000
+++ bin/widget/view/form_gtk/one2many_list.py	2011-04-12 12:03:52 +0000
@@ -149,14 +149,6 @@
     def __init__(self, window, parent, model, attrs={}):
         interface.widget_interface.__init__(self, window, parent, model, attrs)
         self.context = {}
-        #TODO:
-            # group by context are evaled here as we need the context in screen
-            # while displaying.
-            # We need a better way to eval context that has group_by'
-            # We needed to do this as normal context also get evaled here
-            # and results in a traceback which should not be evaled here.
-        if str(attrs.get('context',"{}")).find('group_by') != -1:
-            self.context = tools.expr_eval(attrs.get('context',"{}"))
         self._readonly = self.default_readonly
         self.widget = gtk.VBox(homogeneous=False, spacing=5)
         hb = gtk.HBox(homogeneous=False, spacing=5)
@@ -179,10 +171,6 @@
 
         menubar.add(menuitem_title)
         hb.pack_start(menubar, expand=True, fill=True)
-        group_by = self.context.get('group_by')
-        if group_by:
-            if not isinstance(group_by, list):
-                self.context['group_by'] = [group_by]
 
         # the context to pass to default_get can be optionally specified in
         # the context of the one2many field. We also support a legacy
@@ -194,7 +182,6 @@
                             parent=self.parent, views_preload=attrs.get('views', {}),
                             tree_saves=attrs.get('saves', False),
                             create_new=True,
-                            context=self.context,
                             row_activate=self._on_activate,
                             default_get=default_get_ctx,
                             window=self._window, readonly=self._readonly, limit=pager.DEFAULT_LIMIT)
@@ -400,6 +387,9 @@
         pass
 
     def display(self, model, model_field):
+        if model:
+            self.context.update(model.expr_eval(self.attrs.get('context',"{}")))
+            self.screen.context.update(self.context)
         self.model = model
         self.model_field = model_field
         if not model_field:

=== modified file 'bin/widget/view/form_gtk/pager.py'
--- bin/widget/view/form_gtk/pager.py	2010-12-13 12:54:46 +0000
+++ bin/widget/view/form_gtk/pager.py	2011-04-12 12:03:52 +0000
@@ -120,7 +120,6 @@
             ids = self.object.model.pager_cache[self.object.name][offset:offset + limit]
 
         self.object.model_field.limit = limit or len(ids)
-
         if self.type == 'one2many':
             self.object.model_field.set(self.object.model, ids)
             self.object.display(self.object.model, self.object.model_field)
@@ -128,8 +127,8 @@
             self.screen.models.clear()
             self.screen.load(ids)
             self.screen.display()
+            self.set_sensitivity()
         self.screen.current_view.set_cursor()
-        self.set_sensitivity()
 
     def next_record(self):
         self.screen.display_next()
@@ -155,6 +154,6 @@
         self.screen.offset = 0
         self.screen.limit = self.get_active_text()
         self.set_sensitivity()
-        
-
-        
+
+
+

=== modified file 'bin/widget/view/list.py'
--- bin/widget/view/list.py	2011-03-28 11:33:11 +0000
+++ bin/widget/view/list.py	2011-04-12 12:03:52 +0000
@@ -734,7 +734,10 @@
 
     def display(self):
         if self.reload or (not self.widget_tree.get_model()) or self.screen.models<>self.widget_tree.get_model().model_group:
-            if self.screen.context.get('group_by'):
+            group_by = self.screen.context.get('group_by')
+            if group_by:
+                if not isinstance(group_by, list):
+                    self.screen.context['group_by'] = [group_by]
                 if self.screen.type == 'one2many':
                     self.screen.domain = [('id','in',self.screen.ids_get())]
                 self.screen.models.models.clear()


Follow ups