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