← Back to team overview

openerp-dev-web team mailing list archive

[Merge] lp:~openerp-dev/openobject-client-web/trunk-bug-727046-vda into lp:openobject-client-web

 

vda(Open ERP) has proposed merging lp:~openerp-dev/openobject-client-web/trunk-bug-727046-vda into lp:openobject-client-web.

Requested reviews:
  OpenERP SA's Web Client R&D (openerp-dev-web)
Related bugs:
  Bug #727046 in OpenERP Web Client: "[6.0] web client does not respect "Auto Search" settings of "Windows Action""
  https://bugs.launchpad.net/openobject-client-web/+bug/727046

For more details, see:
https://code.launchpad.net/~openerp-dev/openobject-client-web/trunk-bug-727046-vda/+merge/53574

Added "Auto Search" settings of "Windows Action"
-- 
https://code.launchpad.net/~openerp-dev/openobject-client-web/trunk-bug-727046-vda/+merge/53574
Your team OpenERP R&D Team is subscribed to branch lp:~openerp-dev/openobject-client-web/trunk-bug-727046-vda.
=== modified file 'addons/openerp/controllers/actions.py'
--- addons/openerp/controllers/actions.py	2011-02-21 16:47:25 +0000
+++ addons/openerp/controllers/actions.py	2011-03-16 07:41:19 +0000
@@ -37,7 +37,7 @@
 
 def execute_window(view_ids, model, res_id=False, domain=None, view_type='form', context=None,
                    mode='form,tree', name=None, target=None, limit=None, search_view=None,
-                   context_menu=False, display_menu_tip=False, action_id=None):
+                   context_menu=False, display_menu_tip=False, action_id=None,auto_search=None):
     """Performs `actions.act_window` action.
 
     @param view_ids: view ids
@@ -63,6 +63,8 @@
     params['context_menu'] = context_menu
     params['display_menu_tip'] = display_menu_tip
     params['target'] = target or None
+    params.auto_search = auto_search
+    
     cherrypy.request._terp_view_name = name or None
     cherrypy.request._terp_view_target = target or None
 
@@ -257,7 +259,12 @@
         display_menu_tip = action.get('help')
     else:
         display_menu_tip = None
-
+    
+    if action.get('limit'):
+        limit = action['limit']
+    else:
+        limit = data.get('limit')
+    
     return execute_window(view_ids,
                           data['res_model'],
                           data['res_id'],
@@ -266,11 +273,12 @@
                           ctx, data['view_mode'],
                           name=action.get('name'),
                           target=action.get('target'),
-                          limit=data.get('limit'),
+                          limit=limit,
                           search_view=data['search_view'],
                           context_menu=data.get('context_menu'),
                           display_menu_tip=display_menu_tip,
-                          action_id=action.get('id'))
+                          action_id=action.get('id'),
+                          auto_search=action.get('auto_search'))
 
 def server(action, data):
     context = dict(data.get('context', {}),

=== modified file 'addons/openerp/static/javascript/listgrid.js'
--- addons/openerp/static/javascript/listgrid.js	2011-02-17 17:46:51 +0000
+++ addons/openerp/static/javascript/listgrid.js	2011-03-16 07:41:19 +0000
@@ -693,7 +693,6 @@
         }
 
         var prefix = this.name == '_terp_list' ? '' : this.name + '/';
-
         var o = openobject.dom.get(prefix + '_terp_offset');
         var l = openobject.dom.get(prefix + '_terp_limit');
         var c = openobject.dom.get(prefix + '_terp_count');
@@ -728,21 +727,24 @@
         var self = this;
 
         var current_id = edit_inline ? (parseInt(edit_inline) || 0) : edit_inline;
-
+		var _terp_auto_limit = jQuery(idSelector(this.name)).data() ? jQuery(idSelector(this.name)).data('auto_limit') : 'False';
+		
         var args = jQuery.extend(this.makeArgs(), {
             _terp_source: this.name,
             _terp_edit_inline: edit_inline,
             _terp_source_default_get: default_get_ctx,
             _terp_concurrency_info: concurrency_info,
             _terp_editable: openobject.dom.get('_terp_editable').value,
-            _terp_group_by_ctx: openobject.dom.get('_terp_group_by_ctx').value
+            _terp_group_by_ctx: openobject.dom.get('_terp_group_by_ctx').value,
+			_terp_auto_limit: _terp_auto_limit
         });
-
+		
         if (this.name == '_terp_list') {
             jQuery.extend(args, {
                 _terp_search_domain: openobject.dom.get('_terp_search_domain').value,
                 _terp_search_data: openobject.dom.get('_terp_search_data').value,
-                _terp_filter_domain: openobject.dom.get('_terp_filter_domain').value
+                _terp_filter_domain: openobject.dom.get('_terp_filter_domain').value,
+				_terp_auto_search: 'True'
             });
         }
 

=== modified file 'addons/openerp/widgets/_views.py'
--- addons/openerp/widgets/_views.py	2011-02-10 16:09:23 +0000
+++ addons/openerp/widgets/_views.py	2011-03-16 07:41:19 +0000
@@ -109,7 +109,8 @@
                                     offset=screen.offset, limit=screen.limit,
                                     count=screen.count, nolinks=screen.link,
                                     m2m=screen.m2m, o2m=screen.o2m,
-                                    default_data=screen.default_value)
+                                    default_data=screen.default_value,
+                                    auto_search=screen.auto_search)
 
         screen.ids = widget.ids
         screen.limit = widget.limit

=== modified file 'addons/openerp/widgets/listgrid.py'
--- addons/openerp/widgets/listgrid.py	2011-03-02 15:23:31 +0000
+++ addons/openerp/widgets/listgrid.py	2011-03-16 07:41:19 +0000
@@ -97,6 +97,10 @@
         self.o2m = kw.get('o2m', 0)
         self.concurrency_info = None
         self.selector = None
+        
+        self.auto_search = kw.get('auto_search')
+        if self.auto_search is None:
+            self.auto_search = True
 
         terp_params = getattr(cherrypy.request, 'terp_params', {})
         if terp_params:
@@ -148,7 +152,7 @@
         search_text = terp_params.get('_terp_search_text', False)
         if not self.source:
             self.source = terp_params.get('_terp_source', None)
-        if not default_data and not self.o2m and not self.m2m:
+        if not default_data and not self.o2m and not self.m2m and self.auto_search:
             if self.limit > 0:
                 if self.sort_key:
                     ids = proxy.search(search_param, self.offset, self.limit, self.sort_key + ' ' +self.sort_order, context)
@@ -174,7 +178,7 @@
         if ids and not isinstance(ids, list):
             ids = [ids]
 
-        if ids and len(ids) > 0:
+        if ids and len(ids) > 0 and self.auto_search:
 
             ctx = rpc.get_session().context.copy()
             ctx.update(context)

=== modified file 'addons/openerp/widgets/pager.py'
--- addons/openerp/widgets/pager.py	2011-01-17 11:57:11 +0000
+++ addons/openerp/widgets/pager.py	2011-03-16 07:41:19 +0000
@@ -20,6 +20,7 @@
 ###############################################################################
 
 from openerp.widgets import TinyWidget
+import cherrypy
 
 
 class Pager(TinyWidget):
@@ -42,7 +43,10 @@
         self.limit = limit or 50
         self.count = count or 0
         self.pager_options = [20, 50, 100, 500]
-
+        if getattr(cherrypy.request,'terp_params',{}):
+            if cherrypy.request.terp_params.auto_limit:
+                self.pager_options[0] = cherrypy.request.terp_params.auto_limit
+                
         if self.limit != Pager.UNLIMITED and len(self.ids) > self.limit:
             # if self.ids isn't clamped, it is entirely un-paginated.
             self.ids = self.ids[self.offset:self.offset + self.limit]

=== modified file 'addons/openerp/widgets/screen.py'
--- addons/openerp/widgets/screen.py	2011-02-10 16:09:23 +0000
+++ addons/openerp/widgets/screen.py	2011-03-16 07:41:19 +0000
@@ -58,6 +58,7 @@
         
         self.m2m = kw.get('_m2m', 0)
         self.o2m = kw.get('_o2m', 0)
+        self.auto_search = params.auto_search
         self.is_dashboard = False
         if self.model == 'board.board' and self.view_type == 'form':
             self.is_dashboard = True

=== modified file 'addons/openerp/widgets/templates/pager.mako'
--- addons/openerp/widgets/templates/pager.mako	2010-12-06 14:15:41 +0000
+++ addons/openerp/widgets/templates/pager.mako	2011-03-16 07:41:19 +0000
@@ -38,14 +38,20 @@
         <select id='_${name+str(pager_id)}_limit'
                 action="filter"
                 relation="${name}"
-                onchange="jQuery('[id=${name_base}_terp_limit]').val(jQuery(this).val());
-                          jQuery('[id=${name_base}_terp_offset]').val(0);
-                      pager_action(this)" style="min-width: 25px;">
+                style="min-width: 25px;">
             <option value=""></option>
             % for k in pager_options:
                 <option value="${k}" ${py.selector(limit=='${k]}')}>${k}</option>
             % endfor
             <option value="-1" ${py.selector(limit==-1)}>unlimited</option>
         </select>
+		<script type="text/javascript">
+			jQuery(idSelector('_${name+str(pager_id)}_limit')).change(function(){
+				jQuery(idSelector('${name}')).data('auto_limit', jQuery(idSelector('${name_base}_terp_limit')).val());
+				jQuery(idSelector('${name_base}_terp_limit')).val(jQuery(this).val());
+				jQuery(idSelector('${name_base}_terp_offset')).val(0);
+				pager_action(this);
+			});
+		</script>
     </div>
 </div>


Follow ups