This commit is contained in:
Lucas Mrowskovsky Paim 2017-06-06 03:13:20 +00:00 committed by GitHub
commit 7e26ba1aa8
3 changed files with 17 additions and 4 deletions

View File

@ -767,6 +767,10 @@ class CharField(Field):
return six.text_type(value) return six.text_type(value)
class QueryParamField(CharField):
pass
class EmailField(CharField): class EmailField(CharField):
default_error_messages = { default_error_messages = {
'invalid': _('Enter a valid email address.') 'invalid': _('Enter a valid email address.')

View File

@ -564,8 +564,12 @@ class SchemaGenerator(object):
Return a list of `coreapi.Field` instances corresponding to any Return a list of `coreapi.Field` instances corresponding to any
request body input, as determined by the serializer class. request body input, as determined by the serializer class.
""" """
if method not in ('PUT', 'PATCH', 'POST'):
return [] if hasattr(view, 'action') and view.action == 'add_item':
pass
body_allowed_methods = ('PUT', 'PATCH', 'POST')
method_allow_body = method in body_allowed_methods
if not hasattr(view, 'get_serializer'): if not hasattr(view, 'get_serializer'):
return [] return []
@ -590,10 +594,15 @@ class SchemaGenerator(object):
if field.read_only or isinstance(field, serializers.HiddenField): if field.read_only or isinstance(field, serializers.HiddenField):
continue continue
location = 'query' if isinstance(field, serializers.QueryParamField) else 'form'
if not method_allow_body and location != 'query':
continue
required = field.required and method != 'PATCH' required = field.required and method != 'PATCH'
field = coreapi.Field( field = coreapi.Field(
name=field.field_name, name=field.field_name,
location='form', location=location,
required=required, required=required,
schema=field_to_schema(field) schema=field_to_schema(field)
) )

View File

@ -57,7 +57,7 @@ from rest_framework.fields import ( # NOQA # isort:skip
DictField, DurationField, EmailField, Field, FileField, FilePathField, FloatField, DictField, DurationField, EmailField, Field, FileField, FilePathField, FloatField,
HiddenField, IPAddressField, ImageField, IntegerField, JSONField, ListField, HiddenField, IPAddressField, ImageField, IntegerField, JSONField, ListField,
ModelField, MultipleChoiceField, NullBooleanField, ReadOnlyField, RegexField, ModelField, MultipleChoiceField, NullBooleanField, ReadOnlyField, RegexField,
SerializerMethodField, SlugField, TimeField, URLField, UUIDField, SerializerMethodField, SlugField, TimeField, URLField, UUIDField, QueryParamField,
) )
from rest_framework.relations import ( # NOQA # isort:skip from rest_framework.relations import ( # NOQA # isort:skip
HyperlinkedIdentityField, HyperlinkedRelatedField, ManyRelatedField, HyperlinkedIdentityField, HyperlinkedRelatedField, ManyRelatedField,