From 7a5cd090aa91a5d1af0d54586f36e2156e1ccc60 Mon Sep 17 00:00:00 2001 From: Oscar Vilaplana Date: Sun, 19 May 2013 15:45:33 +0200 Subject: [PATCH] fixed tests, added docs, renamed helper method --- rest_framework/tests/fields.py | 22 +++++++++++++--------- rest_framework/tests/generics.py | 2 ++ rest_framework/views.py | 13 +++++++------ 3 files changed, 22 insertions(+), 15 deletions(-) diff --git a/rest_framework/tests/fields.py b/rest_framework/tests/fields.py index 13df769f8..856980926 100644 --- a/rest_framework/tests/fields.py +++ b/rest_framework/tests/fields.py @@ -15,8 +15,8 @@ from django.test import TestCase 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.fields import (humanize_field, humanize_field_type, + humanize_form_fields, Field) from rest_framework.serializers import Serializer from rest_framework.tests.models import RESTFrameworkModel @@ -882,10 +882,14 @@ class HumanizedSerializer(TestCase): def test_humanized(self): humanized = humanize_form_fields(Form()) - self.assertEqual(humanized, { - 'field1': { - u'help_text': u'', u'required': True, - u'type': u'String', u'label': 'field one'}, - 'field2': { - u'help_text': u'', u'required': True, - u'type': u'String', u'label': 'field two'}}) + expected = { + 'field1': {u'help_text': u'', + u'label': u'field one', + u'max_length': 3, + u'required': True, + u'type': u'String'}, + 'field2': {u'help_text': u'', + u'label': u'field two', + u'required': True, + u'type': u'String'}} + self.assertEqual(humanized, expected) diff --git a/rest_framework/tests/generics.py b/rest_framework/tests/generics.py index 38bf1990b..b7292c814 100644 --- a/rest_framework/tests/generics.py +++ b/rest_framework/tests/generics.py @@ -131,6 +131,7 @@ class TestRootView(TestCase): # TODO add help_text and label when they are available #'help_text': '', #'label': None, + 'max_length': 100, 'read_only': False, 'required': True, 'type': 'String', @@ -272,6 +273,7 @@ class TestInstanceView(TestCase): # available #'description': '', #'label': None, + 'max_length': 100, 'read_only': False, 'required': True, 'type': 'String', diff --git a/rest_framework/views.py b/rest_framework/views.py index 1c4854f05..5f9e1bf2c 100644 --- a/rest_framework/views.py +++ b/rest_framework/views.py @@ -61,15 +61,16 @@ class APIView(View): 'renders': [renderer.media_type for renderer in self.renderer_classes], 'parses': [parser.media_type for parser in self.parser_classes], } - action_metadata = self._generate_action_metadata(request) - if action_metadata is not None: - content['actions'] = action_metadata + content['actions'] = self.action_metadata(request) return content - def _generate_action_metadata(self, request): - """ - Helper for generating the fields metadata for allowed and permitted methods. + def action_metadata(self, request): + """Return a dictionary with the fields required fo reach allowed method. If no method is allowed, + return an empty dictionary. + + :param request: Request for which to return the metadata of the allowed methods. + :return: A dictionary of the form {method: {field: {field attribute: value}}} """ actions = {} for method in self.allowed_methods: