def get_parameters(self, rule, view, docs, parent=None): annotation = resolve_annotations(view, 'args', parent) args = merge_recursive(annotation.options) schema = args.get('args', {}) if is_instance_or_subclass(schema, Schema): converter = swagger.schema2parameters elif callable(schema): schema = schema(request=None) if is_instance_or_subclass(schema, Schema): converter = swagger.schema2parameters else: converter = swagger.fields2parameters else: converter = swagger.fields2parameters options = copy.copy(args.get('kwargs', {})) locations = options.pop('locations', None) if locations: options['default_in'] = locations[0] if parse_version(apispec.__version__) < parse_version('0.20.0'): options['dump'] = False options['spec'] = self.app.config.get('APISPEC_SPEC', None) rule_params = rule_to_params(rule, docs.get('params')) or [] extra_params = converter(schema, **options) if args else [] return extra_params + rule_params
def get_parameters(self, rule, view, docs, parent=None): if APISPEC_VERSION_INFO[0] < 3: openapi = self.marshmallow_plugin.openapi else: openapi = self.marshmallow_plugin.converter annotation = resolve_annotations(view, 'args', parent) extra_params = [] for args in annotation.options: schema = args.get('args', {}) if is_instance_or_subclass(schema, Schema): converter = openapi.schema2parameters elif callable(schema): schema = schema(request=None) if is_instance_or_subclass(schema, Schema): converter = openapi.schema2parameters else: converter = openapi.fields2parameters else: converter = openapi.fields2parameters options = copy.copy(args.get('kwargs', {})) locations = options.pop('locations', None) if locations: options['default_in'] = locations[0] elif 'default_in' not in options: options['default_in'] = 'body' extra_params += converter(schema, **options) if args else [] rule_params = rule_to_params(rule, docs.get('params')) or [] return extra_params + rule_params
def get_parameters(self, rule, view, docs, parent=None): annotation = resolve_annotations(view, 'args', parent) args = merge_recursive(annotation.options) converter = (swagger.schema2parameters if is_instance_or_subclass( args.get('args', {}), Schema) else swagger.fields2parameters) options = copy.copy(args.get('kwargs', {})) locations = options.pop('locations', None) if locations: options['default_in'] = locations[0] return converter(args.get('args', {}), dump=False, ** options) + rule_to_params(rule, docs.get('params'))
def _get_fields(attrs, ordered=False): """Get fields from a class. If ordered=True, fields will sorted by creation index. :param attrs: Mapping of class attributes :param bool ordered: Sort fields by creation index """ fields = [(field_name, field_value) for field_name, field_value in attrs.items() if is_instance_or_subclass(field_value, base.FieldABC)] if ordered: fields.sort(key=lambda pair: pair[1]._creation_index) return fields
def get_parameters(self, rule, view, docs, parent=None): openapi = self.marshmallow_plugin.openapi annotation = resolve_annotations(view, 'args', parent) args = merge_recursive(annotation.options) schema = args.get('args', {}) if is_instance_or_subclass(schema, Schema): converter = openapi.schema2parameters elif callable(schema): schema = schema(request=None) if is_instance_or_subclass(schema, Schema): converter = openapi.schema2parameters else: converter = openapi.fields2parameters else: converter = openapi.fields2parameters options = copy.copy(args.get('kwargs', {})) locations = options.pop('locations', None) if locations: options['default_in'] = locations[0] rule_params = rule_to_params(rule, docs.get('params')) or [] extra_params = converter(schema, **options) if args else [] return extra_params + rule_params
def _get_fields(attrs, field_class, pop=False, ordered=False): """Get fields from a class. If ordered=True, fields will sorted by creation index. :param attrs: Mapping of class attributes :param type field_class: Base field class :param bool pop: Remove matching fields """ getter = getattr(attrs, "pop" if pop else "get") fields = [(field_name, getter(field_name)) for field_name, field_value in list(iteritems(attrs)) if utils.is_instance_or_subclass(field_value, field_class)] if ordered: return sorted(fields, key=lambda pair: pair[1]._creation_index) else: return fields
def _get_fields(attrs, field_class, pop=False, ordered=False): """Get fields from a class. If ordered=True, fields will sorted by creation index. :param attrs: Mapping of class attributes :param type field_class: Base field class :param bool pop: Remove matching fields """ fields = [(field_name, field_value) for field_name, field_value in iteritems(attrs) if utils.is_instance_or_subclass(field_value, field_class)] if pop: for field_name, _ in fields: del attrs[field_name] if ordered: fields.sort(key=lambda pair: pair[1]._creation_index) return fields
def get_parameters(self, rule, view, docs, parent=None): annotation = resolve_annotations(view, 'args', parent) args = merge_recursive(annotation.options) converter = (swagger.schema2parameters if is_instance_or_subclass( args.get('args', {}), Schema) else swagger.fields2parameters) options = copy.copy(args.get('kwargs', {})) locations = options.pop('locations', None) if locations: options['default_in'] = locations[0] if parse_version(apispec.__version__) < parse_version('0.20.0'): options['dump'] = False rule_params = rule_to_params(rule, docs.get('params')) or [] extra_params = converter(args.get('args', {}), ** options) if args else [] return rule_params + extra_params
def _get_fields(attrs, field_class, pop=False): """Get fields from a class, sorted by creation index. :param attrs: Mapping of class attributes :param type field_class: Base field class :param bool pop: Remove matching fields """ getter = getattr(attrs, 'pop' if pop else 'get') return sorted( [ (field_name, getter(field_name)) for field_name, field_value in list(iteritems(attrs)) if utils.is_instance_or_subclass(field_value, field_class) ], key=lambda pair: pair[1]._creation_index, )
def get_parameters(self, rule, view, docs, parent=None): annotation = resolve_annotations(view, 'args', parent) args = merge_recursive(annotation.options) converter = ( swagger.schema2parameters if is_instance_or_subclass(args.get('args', {}), Schema) else swagger.fields2parameters ) options = copy.copy(args.get('kwargs', {})) locations = options.pop('locations', None) if locations: options['default_in'] = locations[0] return converter( args.get('args', {}), dump=False, **options ) + rule_to_params(rule, docs.get('params'))
def get_declared_fields(mcs, bases, attrs, field_class): """Return the declared fields of a class as an OrderedDict. :param tuple bases: Tuple of classes the class is subclassing. :param dict attrs: Dictionary of class attributes. :param type field_class: The base field class. Any class attribute that is of this type will be be returned """ declared = [(field_name, attrs.pop(field_name)) for field_name, val in list(iteritems(attrs)) if utils.is_instance_or_subclass(val, field_class)] # If subclassing another Serializer, inherit its fields # Loop in reverse to maintain the correct field order for base_class in bases[::-1]: if hasattr(base_class, '_declared_fields'): declared = list(base_class._declared_fields.items()) + declared return OrderedDict(declared)
def get_declared_fields(mcs, bases, attrs, field_class): '''Return the declared fields of a class as an OrderedDict. :param tuple bases: Tuple of classes the class is subclassing. :param dict attrs: Dictionary of class attributes. :param type field_class: The base field class. Any class attribute that is of this type will be be returned ''' declared = [(field_name, attrs.pop(field_name)) for field_name, val in list(iteritems(attrs)) if utils.is_instance_or_subclass(val, field_class)] # If subclassing another Serializer, inherit its fields # Loop in reverse to maintain the correct field order for base_class in bases[::-1]: if hasattr(base_class, '_declared_fields'): declared = list(base_class._declared_fields.items()) + declared return OrderedDict(declared)
def get_parameters(self, rule, view, docs, parent=None): openapi = self.marshmallow_plugin.converter annotation = resolve_annotations(view, 'args', parent) extra_params = [] for args in annotation.options: schema = args.get('args', {}) openapi_converter = openapi.schema2parameters if not is_instance_or_subclass(schema, Schema): if callable(schema): schema = schema(request=None) else: schema = Schema.from_dict(schema) openapi_converter = functools.partial( self._convert_dict_schema, openapi_converter) options = copy.copy(args.get('kwargs', {})) if not options.get('location'): options['location'] = 'body' extra_params += openapi_converter(schema, ** options) if args else [] rule_params = rule_to_params(rule, docs.get('params')) or [] return extra_params + rule_params