From 858648782bf671d6d8f2061af9108480717a9f4e Mon Sep 17 00:00:00 2001 From: Roberto Rosario Date: Mon, 14 Mar 2016 04:48:22 -0400 Subject: [PATCH] Update Folder creation and Tag creation API calls to return the id of the created instances. --- mayan/apps/folders/serializers.py | 13 ++++--------- mayan/apps/folders/tests/test_api.py | 5 ++++- mayan/apps/tags/api_views.py | 10 ++++++++-- mayan/apps/tags/serializers.py | 9 +++++++++ mayan/apps/tags/tests/test_api.py | 6 +++++- 5 files changed, 30 insertions(+), 13 deletions(-) diff --git a/mayan/apps/folders/serializers.py b/mayan/apps/folders/serializers.py index 554cc10c09..c1ca9876ff 100644 --- a/mayan/apps/folders/serializers.py +++ b/mayan/apps/folders/serializers.py @@ -32,15 +32,10 @@ class FolderSerializer(serializers.HyperlinkedModelSerializer): return obj.documents.count() -class NewFolderSerializer(serializers.Serializer): - label = serializers.CharField() - - def create(self, validated_data): - try: - data = validated_data.copy() - return Folder.objects.create(**data) - except Exception as exception: - raise ValidationError(exception) +class NewFolderSerializer(serializers.ModelSerializer): + class Meta: + fields = ('label', 'id') + model = Folder class FolderDocumentSerializer(DocumentSerializer): diff --git a/mayan/apps/folders/tests/test_api.py b/mayan/apps/folders/tests/test_api.py index 9f1cf2389c..039e41e619 100644 --- a/mayan/apps/folders/tests/test_api.py +++ b/mayan/apps/folders/tests/test_api.py @@ -34,10 +34,13 @@ class FolderAPITestCase(APITestCase): ) def test_folder_create(self): - self.client.post( + response = self.client.post( reverse('rest_api:folder-list'), {'label': TEST_FOLDER_LABEL} ) + self.assertEqual(response.data['id'], 1) + self.assertEqual(response.data['label'], TEST_FOLDER_LABEL) + folder = Folder.objects.first() self.assertEqual(Folder.objects.count(), 1) diff --git a/mayan/apps/tags/api_views.py b/mayan/apps/tags/api_views.py index a4d2de5cb1..f24e267ef3 100644 --- a/mayan/apps/tags/api_views.py +++ b/mayan/apps/tags/api_views.py @@ -21,7 +21,8 @@ from .permissions import ( permission_tag_remove, permission_tag_view ) from .serializers import ( - DocumentTagSerializer, NewDocumentTagSerializer, TagSerializer + DocumentTagSerializer, NewDocumentTagSerializer, NewTagSerializer, + TagSerializer ) @@ -71,7 +72,12 @@ class APITagListView(generics.ListCreateAPIView): mayan_view_permissions = {'POST': (permission_tag_create,)} permission_classes = (MayanPermission,) queryset = Tag.objects.all() - serializer_class = TagSerializer + + def get_serializer_class(self): + if self.request.method == 'GET': + return TagSerializer + elif self.request.method == 'POST': + return NewTagSerializer def get(self, *args, **kwargs): """ diff --git a/mayan/apps/tags/serializers.py b/mayan/apps/tags/serializers.py index 674c97a383..633169c685 100644 --- a/mayan/apps/tags/serializers.py +++ b/mayan/apps/tags/serializers.py @@ -33,6 +33,15 @@ class TagSerializer(serializers.HyperlinkedModelSerializer): return instance.documents.count() + +class NewTagSerializer(serializers.ModelSerializer): + class Meta: + fields = ( + 'color', 'label', 'id' + ) + model = Tag + + class NewDocumentTagSerializer(serializers.Serializer): tag = serializers.IntegerField( help_text=_('Primary key of the tag to be added.') diff --git a/mayan/apps/tags/tests/test_api.py b/mayan/apps/tags/tests/test_api.py index 679d5560cb..aafa4e65f4 100644 --- a/mayan/apps/tags/tests/test_api.py +++ b/mayan/apps/tags/tests/test_api.py @@ -40,12 +40,16 @@ class TagAPITestCase(APITestCase): self.admin_user.delete() def test_tag_create(self): - self.client.post( + response = self.client.post( reverse('rest_api:tag-list'), { 'label': TEST_TAG_LABEL, 'color': TEST_TAG_COLOR } ) + self.assertEqual(response.data['id'], 1) + self.assertEqual(response.data['label'], TEST_TAG_LABEL) + self.assertEqual(response.data['color'], TEST_TAG_COLOR) + tag = Tag.objects.first() self.assertEqual(Tag.objects.count(), 1)