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)
class QueryParamField(CharField):
pass
class EmailField(CharField):
default_error_messages = {
'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
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'):
return []
@ -590,10 +594,15 @@ class SchemaGenerator(object):
if field.read_only or isinstance(field, serializers.HiddenField):
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'
field = coreapi.Field(
name=field.field_name,
location='form',
location=location,
required=required,
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,
HiddenField, IPAddressField, ImageField, IntegerField, JSONField, ListField,
ModelField, MultipleChoiceField, NullBooleanField, ReadOnlyField, RegexField,
SerializerMethodField, SlugField, TimeField, URLField, UUIDField,
SerializerMethodField, SlugField, TimeField, URLField, UUIDField, QueryParamField,
)
from rest_framework.relations import ( # NOQA # isort:skip
HyperlinkedIdentityField, HyperlinkedRelatedField, ManyRelatedField,