hooks: use safer way to validate kwargs. If rcextensions are disable we shouldn't

do any actions.
This commit is contained in:
Marcin Kuzminski 2018-11-12 12:10:07 +01:00
parent 1afcbb6b9d
commit 8d18223bec

View file

@ -339,7 +339,12 @@ class ExtensionCallback(object):
self._kwargs_keys = set(kwargs_keys) self._kwargs_keys = set(kwargs_keys)
def __call__(self, *args, **kwargs): def __call__(self, *args, **kwargs):
log.debug('Calling extension callback for %s', self._hook_name) log.debug('Calling extension callback for `%s`', self._hook_name)
callback = self._get_callback()
if not callback:
log.debug('extension callback `%s` not found, skipping...', self._hook_name)
return
kwargs_to_pass = {} kwargs_to_pass = {}
for key in self._kwargs_keys: for key in self._kwargs_keys:
try: try:
@ -349,16 +354,11 @@ class ExtensionCallback(object):
key, self._kwargs_keys) key, self._kwargs_keys)
raise raise
# backward compat for removed api_key for old hooks. THis was it works # backward compat for removed api_key for old hooks. This was it works
# with older rcextensions that require api_key present # with older rcextensions that require api_key present
if self._hook_name in ['CREATE_USER_HOOK', 'DELETE_USER_HOOK']: if self._hook_name in ['CREATE_USER_HOOK', 'DELETE_USER_HOOK']:
kwargs_to_pass['api_key'] = '_DEPRECATED_' kwargs_to_pass['api_key'] = '_DEPRECATED_'
return callback(**kwargs_to_pass)
callback = self._get_callback()
if callback:
return callback(**kwargs_to_pass)
else:
log.debug('extensions callback not found skipping...')
def is_active(self): def is_active(self):
return hasattr(rhodecode.EXTENSIONS, self._hook_name) return hasattr(rhodecode.EXTENSIONS, self._hook_name)