diff --git a/rest_framework/fields.py b/rest_framework/fields.py index d5a1394dc..9dca7e4f3 100644 --- a/rest_framework/fields.py +++ b/rest_framework/fields.py @@ -72,18 +72,6 @@ def readable_date_formats(formats): return humanize_strptime(format) -def humanize_form_fields(form): - """Return a humanized description of all the fields in a form. - - :param form: A Django form. - :return: A dictionary of {field_label: humanized description} - - """ - fields = SortedDict([(name, humanize_field(field)) - for name, field in form.fields.iteritems()]) - return fields - - def readable_time_formats(formats): format = ', '.join(formats).replace(ISO_8601, 'hh:mm[:ss[.uuuuuu]]') return humanize_strptime(format) @@ -204,9 +192,10 @@ class Field(object): @property def humanized(self): humanized = { - 'type': self.type_name, 'required': getattr(self, 'required', False), } + if self.type_name is not None: + humanized['type'] = self.type_name.replace('Field', '') optional_attrs = ['read_only', 'help_text', 'label', 'min_length', 'max_length'] for attr in optional_attrs: diff --git a/rest_framework/tests/fields.py b/rest_framework/tests/fields.py index fd1fe9615..de31b4287 100644 --- a/rest_framework/tests/fields.py +++ b/rest_framework/tests/fields.py @@ -8,14 +8,13 @@ from decimal import Decimal from uuid import uuid4 import datetime -from django import forms from django.core import validators from django.db import models from django.test import TestCase from django.utils.datastructures import SortedDict from rest_framework import serializers -from rest_framework.fields import Field, CharField +from rest_framework.fields import Field, CharField, IntegerField from rest_framework.serializers import Serializer from rest_framework.tests.models import RESTFrameworkModel @@ -827,16 +826,21 @@ class URLFieldTests(TestCase): class HumanizedField(TestCase): def setUp(self): self.required_field = Field() + self.required_field.type_name = 'IntegerField' self.required_field.label = uuid4().hex self.required_field.required = True self.optional_field = Field() + self.optional_field.type_name = 'CharField' self.optional_field.label = uuid4().hex self.optional_field.required = False + self.integer_field = IntegerField() + self.char_field = CharField() + def test_type(self): - for field in (self.required_field, self.optional_field): - self.assertEqual(field.humanized['type'], field.type_name) + self.assertEqual(self.char_field.humanized['type'], 'Char') + self.assertEqual(self.integer_field.humanized['type'], 'Integer') def test_required(self): self.assertEqual(self.required_field.humanized['required'], True) @@ -863,11 +867,11 @@ class HumanizedSerializer(TestCase): expected = { 'field1': {u'required': True, u'max_length': 3, - u'type': u'CharField', + u'type': u'Char', u'read_only': False}, 'field2': {u'required': False, u'max_length': 10, - u'type': u'CharField', + u'type': u'Char', u'read_only': False}} self.assertEqual(set(expected.keys()), set(humanized.keys())) for k, v in humanized.iteritems(): diff --git a/rest_framework/tests/generics.py b/rest_framework/tests/generics.py index f60a4c97f..eff4fea89 100644 --- a/rest_framework/tests/generics.py +++ b/rest_framework/tests/generics.py @@ -130,12 +130,12 @@ class TestRootView(TestCase): 'max_length': 100, 'read_only': False, 'required': True, - 'type': 'CharField', + 'type': 'Char', }, 'id': { 'read_only': True, 'required': False, - 'type': 'IntegerField', + 'type': 'Integer', }, } self.assertEqual(response.status_code, status.HTTP_200_OK) @@ -264,12 +264,12 @@ class TestInstanceView(TestCase): 'max_length': 100, 'read_only': False, 'required': True, - 'type': 'CharField', + 'type': 'Char', }, 'id': { 'read_only': True, 'required': False, - 'type': 'IntegerField', + 'type': 'Integer', }, } self.assertEqual(response.status_code, status.HTTP_200_OK) diff --git a/rest_framework/views.py b/rest_framework/views.py index d1afbe894..ba2708bec 100644 --- a/rest_framework/views.py +++ b/rest_framework/views.py @@ -9,7 +9,6 @@ from django.views.decorators.csrf import csrf_exempt from rest_framework import status, exceptions from rest_framework.compat import View -from rest_framework.fields import humanize_form_fields from rest_framework.request import clone_request, Request from rest_framework.response import Response from rest_framework.settings import api_settings @@ -62,7 +61,6 @@ class APIView(View): 'parses': [parser.media_type for parser in self.parser_classes], } content['actions'] = self.action_metadata(request) - return content def action_metadata(self, request):