Ravi Gadhia (OpenERP) has proposed merging 
lp:~openerp-dev/openobject-client/trunk-bug-728275-rga into 
lp:openobject-client.

Requested reviews:
  Naresh(OpenERP) (nch-openerp)
Related bugs:
  Bug #728275 in OpenERP GTK Client: "view/list: Fix handling of duplicate IDs 
from search()"
  https://bugs.launchpad.net/openobject-client/+bug/728275

For more details, see:
https://code.launchpad.net/~openerp-dev/openobject-client/trunk-bug-728275-rga/+merge/76194

Hello sir,
      I made common function in ModelRecordGroup for remove duplicate ids
-- 
https://code.launchpad.net/~openerp-dev/openobject-client/trunk-bug-728275-rga/+merge/76194
Your team OpenERP R&D Team is subscribed to branch 
lp:~openerp-dev/openobject-client/trunk-bug-728275-rga.
=== modified file 'bin/widget/model/field.py'
--- bin/widget/model/field.py	2011-09-19 22:46:15 +0000
+++ bin/widget/model/field.py	2011-09-20 11:25:24 +0000
@@ -341,6 +341,10 @@
             for val in value:
                     result += rpc2.name_search(val, [], '=', rpc.session.context)
             value = map(lambda x:x[0], result)
+        
+        if value:   
+            value = model.mgroup.remove_duplicate(value)
+
         model.value[self.name] = value and value[:self.limit] or []
         model.pager_cache[self.name] = value or []
         if modified:
@@ -406,6 +410,10 @@
         if value and not isinstance(value[0], int):
             model = self.set_default(model, value)
             return
+        
+        if value:    
+            value = model.mgroup.remove_duplicate(value)
+            
         from widget.model.group import ModelRecordGroup
         mod =  ModelRecordGroup(resource=self.attrs['relation'], fields={}, parent=model)
         mod.signal_connect(mod, 'model-changed', self._model_changed)

=== modified file 'bin/widget/model/group.py'
--- bin/widget/model/group.py	2011-09-16 08:48:53 +0000
+++ bin/widget/model/group.py	2011-09-20 11:25:24 +0000
@@ -416,6 +416,13 @@
 
     def __iter__(self):
         return iter(self.models)
+    
+    def remove_duplicate(self, ids):
+        uids = []
+        #remove duplicate id
+        map(lambda x: x not in uids and uids.append(x), ids)
+        return uids
+    
 
     def get_by_id(self, id):
         for model in self.models:

=== modified file 'bin/widget/screen/screen.py'
--- bin/widget/screen/screen.py	2011-09-19 22:46:15 +0000
+++ bin/widget/screen/screen.py	2011-09-20 11:25:24 +0000
@@ -275,7 +275,8 @@
             self.display()
             return True
         ids = rpc.session.rpc_exec_auth('/object', 'execute', self.name, 'search', v, offset, limit, self.sort, self.context)
-        self.win_search_ids = ids
+        ids = self.win_search_ids = self.models.remove_duplicate(ids)
+        
         if self.win_search and self.win_search_domain:
             for dom in self.win_search_domain:
                 if dom in v:

=== modified file 'bin/widget/view/list.py'
--- bin/widget/view/list.py	2011-07-27 12:55:13 +0000
+++ bin/widget/view/list.py	2011-09-20 11:25:24 +0000
@@ -187,6 +187,7 @@
             if self.context.get('__domain') and not no_leaf:
                 limit = self.screen.screen_container.get_limit()
                 ids = rpc.session.rpc_exec_auth('/object', 'execute', self.mgroup.resource, 'search', self.context.get('__domain'), 0, limit, self.sort_order, self.context)
+                ids = self.mgroup.remove_duplicate(ids)
                 if not ids:
                      self.add_dummny_record(self.context['__field'])
                 else:

_______________________________________________
Mailing list: https://launchpad.net/~openerp-dev-gtk
Post to     : [email protected]
Unsubscribe : https://launchpad.net/~openerp-dev-gtk
More help   : https://help.launchpad.net/ListHelp

Reply via email to