Commit 19840451 authored by Romain Courteaud's avatar Romain Courteaud

fixup: add compatibility with missing __code__ attribute

In order to apply nexedi/erp5@4115e465
it is needed to upgrade an existing side which only contains func_code
parent 75e452f5
......@@ -164,7 +164,13 @@ class Alarm(XMLObject, PeriodicityMixin):
activate_kw['tag'] = '%s_%x' % (self.getRelativeUrl(), getrandbits(32))
tag = activate_kw['tag']
method = getattr(self, method_id)
func_code = method.__code__
try:
func_code = method.__code__
except AttributeError:
# Compatibility with not migrated python script
# See https://lab.nexedi.com/nexedi/erp5/commit/4115e4658f50a48d3cd4b10e0ae033a3aaa3e273
func_code = method.func_code
try:
has_kw = func_code.co_flags & CO_VARKEYWORDS
except AttributeError:
......
......@@ -1452,7 +1452,11 @@ class Catalog(Folder,
if meta_type in self.HAS_ARGUMENT_SRC_METATYPE_SET:
return method.arguments_src.split()
elif meta_type in self.HAS_FUNC_CODE_METATYPE_SET:
return method.__code__.co_varnames[:method.__code__.co_argcount]
try:
func_code = method.__code__
except AttributeError:
func_code = method.func_code
return func_code.co_varnames[:func_code.co_argcount]
# Note: Raising here would completely prevent indexation from working.
# Instead, let the method actually fail when called, so _catalogObjectList
# can log the error and carry on.
......@@ -1838,7 +1842,10 @@ class Catalog(Folder,
else:
search_key = self.getSearchKey(key, 'RelatedKey')
else:
func_code = script.__code__
try:
func_code = script.__code__
except AttributeError:
func_code = script.func_code
search_key = (
AdvancedSearchKeyWrapperForScriptableKey if (
# 5: search_value (under any name), "search_key", "group",
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment