Update Folder creation and Tag creation API calls to return the id of the created instances.

This commit is contained in:
Roberto Rosario
2016-03-14 04:48:22 -04:00
parent 35cc0ea1d6
commit 858648782b
5 changed files with 30 additions and 13 deletions

View File

@@ -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):

View File

@@ -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)

View File

@@ -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):
"""

View File

@@ -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.')

View File

@@ -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)