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