From f1f5f92d899ae37d71234bf8a8a3ad52e20a253f Mon Sep 17 00:00:00 2001 From: Oscar Vilaplana Date: Sun, 19 May 2013 14:55:46 +0200 Subject: [PATCH] Added tests, cleaned up imports --- rest_framework/tests/fields.py | 20 +++++++++++--------- rest_framework/tests/views.py | 3 +++ rest_framework/views.py | 14 +++++--------- 3 files changed, 19 insertions(+), 18 deletions(-) diff --git a/rest_framework/tests/fields.py b/rest_framework/tests/fields.py index 7a5ed7181..6bc37db28 100644 --- a/rest_framework/tests/fields.py +++ b/rest_framework/tests/fields.py @@ -2,21 +2,23 @@ General serializer field tests. """ from __future__ import unicode_literals -from django.utils.datastructures import SortedDict -import datetime -from rest_framework.fields import (humanize_field, humanize_field_type, - humanize_form_fields) -from django import forms + +from collections import namedtuple 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.core import validators +from django.utils.datastructures import SortedDict + from rest_framework import serializers +from rest_framework.fields import (humanize_field, humanize_field_type, humanize_form_fields, + Field) from rest_framework.serializers import Serializer from rest_framework.tests.models import RESTFrameworkModel -from rest_framework.fields import Field -from collections import namedtuple -from uuid import uuid4 class TimestampedModel(models.Model): diff --git a/rest_framework/tests/views.py b/rest_framework/tests/views.py index 994cf6dc3..b70ef4ae2 100644 --- a/rest_framework/tests/views.py +++ b/rest_framework/tests/views.py @@ -6,6 +6,8 @@ from rest_framework.decorators import api_view from rest_framework.response import Response from rest_framework.settings import api_settings from rest_framework.views import APIView +from rest_framework import exceptions +from rest_framework import serializers import copy factory = RequestFactory() @@ -98,3 +100,4 @@ class FunctionBasedViewIntegrationTests(TestCase): } self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) self.assertEqual(sanitise_json_error(response.data), expected) + diff --git a/rest_framework/views.py b/rest_framework/views.py index c9d55c18e..1af4c0baa 100644 --- a/rest_framework/views.py +++ b/rest_framework/views.py @@ -2,13 +2,16 @@ Provides an APIView class that is the base of all views in REST framework. """ from __future__ import unicode_literals + from django.core.exceptions import PermissionDenied from django.http import Http404, HttpResponse from django.views.decorators.csrf import csrf_exempt + from rest_framework import status, exceptions from rest_framework.compat import View -from rest_framework.response import Response +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 from rest_framework.utils.formatting import get_view_name, get_view_description @@ -69,7 +72,6 @@ class APIView(View): Helper for generating the fields metadata for allowed and permitted methods. ''' actions = {} - for method in self.allowed_methods: # skip HEAD and OPTIONS if method in ('HEAD', 'OPTIONS'): @@ -84,17 +86,11 @@ class APIView(View): actions[method] = {} continue - # TODO: find right placement - APIView does not have get_serializer if not hasattr(self, 'get_serializer'): continue serializer = self.get_serializer() if serializer is not None: - field_name_types = {} - for name, field in serializer.fields.iteritems(): - from rest_framework.fields import humanize_field - field_name_types[name] = humanize_field(field) - - actions[method] = field_name_types + actions[method] = humanize_form_fields(serializer) except exceptions.PermissionDenied: # don't add this method pass