Reviewers: ,


Please review this at http://codereview.tryton.org/757002/

Affected files:
  M trytond/ir/ui/menu.py
  M trytond/modules/product/category.py
  M trytond/modules/timesheet/work.py


Index: trytond/ir/ui/menu.py
===================================================================

--- a/trytond/ir/ui/menu.py
+++ b/trytond/ir/ui/menu.py
@@ -140,17 +140,17 @@
     @classmethod
     def search_rec_name(cls, name, clause):
         if isinstance(clause[2], basestring):
-            values = clause[2].split(SEPARATOR)
+            values = clause[2].split(SEPARATOR.strip())
             values.reverse()
             domain = []
             field = 'name'
             for name in values:
-                domain.append((field, clause[1], name))
+                domain.append((field, clause[1], name.strip()))
                 field = 'parent.' + field
-            ids = [m.id for m in cls.search(domain, order=[])]
-            return [('id', 'in', ids)]
-        #TODO Handle list
-        return [('name',) + tuple(clause[1:])]
+        else:
+            domain = [('name',) + tuple(clause[1:])]
+        ids = [m.id for m in cls.search(domain, order=[])]
+        return [('parent', 'child_of', ids)]
 
     @classmethod
     def search_global(cls, text):

Index: trytond/modules/product/category.py
===================================================================

--- a/trytond/modules/product/category.py
+++ b/trytond/modules/product/category.py
@@ -28,3 +28,18 @@
             return self.parent.get_rec_name(name) + ' / ' + self.name
         else:
             return self.name
+
+    @classmethod
+    def search_rec_name(cls, name, clause):
+        if isinstance(clause[2], basestring):
+            values = clause[2].split('/')
+            values.reverse()
+            domain = []
+            field = 'name'
+            for name in values:
+                domain.append((field, clause[1], name.strip()))
+                field = 'parent.' + field
+        else:
+            domain = [('name',) + tuple(clause[1:])]
+        ids = [w.id for w in cls.search(domain, order=[])]
+        return [('parent', 'child_of', ids)]

Index: trytond/modules/timesheet/work.py
===================================================================

--- a/trytond/modules/timesheet/work.py
+++ b/trytond/modules/timesheet/work.py
@@ -152,6 +152,21 @@
             return self.name
 
     @classmethod
+    def search_rec_name(cls, name, clause):
+        if isinstance(clause[2], basestring):
+            values = clause[2].split('\\')
+            values.reverse()
+            domain = []
+            field = 'name'
+            for name in values:
+                domain.append((field, clause[1], name.strip()))
+                field = 'parent.' + field
+        else:
+            domain = [('name',) + tuple(clause[1:])]
+        ids = [w.id for w in cls.search(domain, order=[])]
+        return [('parent', 'child_of', ids)]
+
+    @classmethod
     def copy(cls, works, default=None):
         if default is None:
             default = {}

Reply via email to