Commit 8e14228a authored by Kazuhiko Shiozaki's avatar Kazuhiko Shiozaki

Alarm: support SQL Methods in _activeSense().

parent f296d380
...@@ -164,18 +164,22 @@ class Alarm(XMLObject, PeriodicityMixin): ...@@ -164,18 +164,22 @@ class Alarm(XMLObject, PeriodicityMixin):
activate_kw['tag'] = '%s_%x' % (self.getRelativeUrl(), getrandbits(32)) activate_kw['tag'] = '%s_%x' % (self.getRelativeUrl(), getrandbits(32))
tag = activate_kw['tag'] tag = activate_kw['tag']
method = getattr(self, method_id) method = getattr(self, method_id)
func_code = getattr(method, '__code__', None) if method.meta_type in ('Z SQL Method', 'ERP5 SQL Method'):
if func_code is None: # BBB Zope2 name_list = [e['name'] for e in method.argument_list()]
func_code = method.func_code has_kw = False
try: else:
has_kw = func_code.co_flags & CO_VARKEYWORDS func_code = getattr(method, '__code__', None)
except AttributeError: if func_code is None: # BBB Zope2
# XXX guess presence of *args and **kw func_code = method.func_code
name_list = func_code.co_varnames[func_code.co_argcount:] try:
has_args = bool(name_list and name_list[0] == 'args') has_kw = func_code.co_flags & CO_VARKEYWORDS
has_kw = bool(len(name_list) > has_args and except AttributeError:
name_list[has_args] == 'kw') # XXX guess presence of *args and **kw
name_list = func_code.co_varnames[:func_code.co_argcount] name_list = func_code.co_varnames[func_code.co_argcount:]
has_args = bool(name_list and name_list[0] == 'args')
has_kw = bool(len(name_list) > has_args and
name_list[has_args] == 'kw')
name_list = func_code.co_varnames[:func_code.co_argcount]
if 'params' in name_list or has_kw: if 'params' in name_list or has_kw:
# New New API # New New API
getattr(self.activate(**activate_kw), method_id)(fixit=fixit, tag=tag, params=params) getattr(self.activate(**activate_kw), method_id)(fixit=fixit, tag=tag, params=params)
......
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