Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
conf = {}
arguments = {}
for arg in self.mandatory_arguments:
# get the value from the passed conf, then from the instance, then
# from the default class settings.
arguments[arg] = conf.pop(arg, getattr(self, arg, None))
for arg in self.list_arguments:
# rather than overwriting, extend the defined lists if
# any. take care of re-creating the lists before appending
# items to them, to avoid modifications to the already
# existing ones
value = list(getattr(self, arg, []))
if arg in conf:
value.extend(to_list(conf.pop(arg)))
arguments[arg] = value
# Allow custom error handler
arguments['error_handler'] = conf.pop('error_handler',
getattr(self, 'error_handler',
json_error))
# exclude some validators or filters
if 'exclude' in conf:
for item in to_list(conf.pop('exclude')):
for container in arguments['validators'], arguments['filters']:
if item in container:
container.remove(item)
# also include the other key,value pair we don't know anything about
arguments.update(conf)
# any. take care of re-creating the lists before appending
# items to them, to avoid modifications to the already
# existing ones
value = list(getattr(self, arg, []))
if arg in conf:
value.extend(to_list(conf.pop(arg)))
arguments[arg] = value
# Allow custom error handler
arguments['error_handler'] = conf.pop('error_handler',
getattr(self, 'error_handler',
json_error))
# exclude some validators or filters
if 'exclude' in conf:
for item in to_list(conf.pop('exclude')):
for container in arguments['validators'], arguments['filters']:
if item in container:
container.remove(item)
# also include the other key,value pair we don't know anything about
arguments.update(conf)
# if some keys have been defined service-wide, then we need to add
# them to the returned dict.
if hasattr(self, 'arguments'):
for key, value in self.arguments.items():
if key not in arguments:
arguments[key] = value
return arguments
def filter_argumentlist(self, method, argname, filter_callables=False):
"""
Helper method to ``get_acceptable`` and ``get_contenttypes``. DRY.
"""
result = []
for meth, view, args in self.definitions:
if meth.upper() == method.upper():
result_tmp = to_list(args.get(argname))
if filter_callables:
result_tmp = [a for a in result_tmp if not callable(a)]
result.extend(result_tmp)
return result
if "json" in renderer: # allows for "json" or "simplejson"
produces = ['application/json']
elif renderer == 'xml':
produces = ['text/xml']
else:
produces = None
if produces:
op.setdefault('produces', produces)
# Get explicit accepted content-types
consumes = args.get('content_type')
if consumes is not None:
# convert to a list, if it's not yet one
consumes = to_list(consumes)
# It is possible to add callables for content_type, so we have to
# to filter those out, since we cannot evaluate those here.
consumes = [x for x in consumes if not callable(x)]
op['consumes'] = consumes
# Get parameters from view schema
is_colander = self._is_colander_schema(args)
if is_colander:
schema = self._extract_transform_colander_schema(args)
parameters = self.parameters.from_schema(schema)
else:
# Bail out for now
parameters = None
if parameters:
op['parameters'] = parameters
def _pop_predicate_definition(args, kind):
"""
Build a dictionary enriched by "kind" of predicate definition list.
This is required for evaluation in ``_mungle_view_args``.
"""
values = to_list(args.pop(kind, ()))
# In much the same way as filter(), the map() function [in Python 3] now
# returns an iterator. (In Python 2, it returned a list.)
# http://getpython3.com/diveintopython3/ \
# porting-code-to-python-3-with-2to3.html#map
values = list(map(lambda value: {'kind': kind, 'value': value}, values))
return values
if not self.path and not self.pyramid_route:
raise TypeError('You need to pass path or pyramid_route arg')
self.description = description
self.cors_expose_all_headers = True
self._cors_enabled = None
if cors_policy:
for key, value in cors_policy.items():
kw.setdefault('cors_' + key, value)
for key in self.list_arguments:
# default_{validators,filters} and {filters,validators} don't
# have to be mutables, so we need to create a new list from them
extra = to_list(kw.get(key, []))
kw[key] = []
kw[key].extend(getattr(self, 'default_%s' % key, []))
kw[key].extend(extra)
self.arguments = self.get_arguments(kw)
for key, value in self.arguments.items():
# avoid squashing Service.decorator if ``decorator``
# argument is used to specify a default pyramid view
# decorator
if key != 'decorator':
setattr(self, key, value)
if hasattr(self, 'acl'):
raise ConfigurationError("'acl' is not supported")
# instantiate some variables we use to keep track of what's defined for