My application has broken moving from 1.99.4 to 1.99.7.

I have a field of type list:string (using Sqlite). In 1.99.7, dal.py
breaks at line 1405 (marked with >>>):

            return str(obj)
        if fieldtype.startswith('list:'):
            if not obj:
                obj = []
            elif not isinstance(obj, (list, tuple)):
>>>                obj = [int(obj)]

            elif fieldtype.startswith('list:string'):
                obj = [str(item) for item in obj]
            else:
                obj = [int(item) for item in obj]

Because my field is type list:string, startswith('list:') is True and thus
the startswith('list:string') line is never reached.

This patch appears to fix the problem, although I've not tested it
thoroughly:

--- dal.py.old  2012-03-21 07:19:12.000000000 +0000
+++ dal.py      2012-03-21 07:20:38.000000000 +0000
@@ -1398,13 +1398,13 @@
             return fieldtype.encoder(obj)
         if isinstance(obj, (Expression, Field)):
             return str(obj)
-        if fieldtype.startswith('list:'):
+        if fieldtype.startswith('list:string'):
+                obj = [str(item) for item in obj]
+        elif fieldtype.startswith('list:'):
             if not obj:
                 obj = []
             elif not isinstance(obj, (list, tuple)):
                 obj = [int(obj)]
-            elif fieldtype.startswith('list:string'):
-                obj = [str(item) for item in obj]
             else:
                 obj = [int(item) for item in obj]
         if isinstance(obj, (list, tuple)):

-- 
"You can have everything in life you want if you help enough other people
get what they want" - Zig Ziglar. 

Who did you help today?

Reply via email to