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/64496

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/64496
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-06-08 08:46:44 +0000
+++ bin/widget/model/field.py	2011-06-14 05:56:01 +0000
@@ -363,6 +363,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:
@@ -428,6 +432,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-04-13 05:28:58 +0000
+++ bin/widget/model/group.py	2011-06-14 05:56:01 +0000
@@ -23,6 +23,7 @@
 import rpc
 from record import ModelRecord
 import field
+from copy import copy
 
 import signal_event
 
@@ -414,6 +415,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 copy(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-05-10 11:13:09 +0000
+++ bin/widget/screen/screen.py	2011-06-14 05:56:01 +0000
@@ -269,7 +269,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-05-27 11:23:55 +0000
+++ bin/widget/view/list.py	2011-06-14 05:56:01 +0000
@@ -186,6 +186,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