fixed issue #1409, py2 vs py3

This commit is contained in:
mdipierro
2016-07-29 08:50:28 -05:00
parent a6b96ba85b
commit 6be3977fa7
+16 -6
View File
@@ -54,17 +54,27 @@ REGEX_ALIAS_MATCH = re.compile('^(.*) AS (.*)$')
def add_class(a, b):
return a + ' ' + b if a else b
def count_expected_args(f):
if hasattr(f,'func_code'):
# python 2
n = f.func_code.co_argcount - len(f.func_defaults or [])
if getattr(f, 'im_self', None):
n -= 1
elif hasattr(f, '__code__'):
# python 3
n = f.__code__.co_argcount - len(f.__defaults__ or [])
if getattr(f, '__self__', None):
n -= 1
else:
# doh!
n = 1
return n
def represent(field, value, record):
f = field.represent
if not callable(f):
return str(value)
if hasattr(f,'func_code'):
n = f.__code__.co_argcount - len(f.__defaults__ or [])
if getattr(f, 'im_self', None):
n -= 1
else:
n = 1
n = count_expected_args(f)
if n == 1:
return f(value)
elif n == 2: