Files
mayan-edms/mayan/apps/folders/serializers.py
Roberto Rosario 1c65b389ee Remove concept of ownership from folders by removing the user field.
"Ownership" now is now determined by ACL of a folder, like the rest of the objects in the system.
2016-03-08 01:20:10 -04:00

75 lines
2.2 KiB
Python

from __future__ import unicode_literals
from rest_framework import serializers
from rest_framework.exceptions import ValidationError
from rest_framework.reverse import reverse
from django.utils.translation import ugettext_lazy as _
from documents.models import Document
from documents.serializers import DocumentSerializer
from user_management.serializers import UserSerializer
from .models import Folder
class FolderSerializer(serializers.HyperlinkedModelSerializer):
documents = serializers.HyperlinkedIdentityField(
view_name='rest_api:folder-document-list'
)
documents_count = serializers.SerializerMethodField()
class Meta:
extra_kwargs = {
'url': {'view_name': 'rest_api:folder-detail'},
}
fields = (
'datetime_created', 'documents', 'documents_count', 'id', 'label',
'url'
)
model = Folder
def get_documents_count(self, obj):
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 FolderDocumentSerializer(DocumentSerializer):
remove = serializers.SerializerMethodField()
def get_remove(self, instance):
return reverse(
'rest_api:folder-document', args=(
self.context['folder'].pk, instance.pk
), request=self.context['request'], format=self.context['format']
)
class Meta(DocumentSerializer.Meta):
fields = DocumentSerializer.Meta.fields + ('remove',)
read_only_fields = DocumentSerializer.Meta.fields
class NewFolderDocumentSerializer(serializers.Serializer):
document = serializers.IntegerField(
help_text=_('Primary key of the document to be added.')
)
def create(self, validated_data):
try:
document = Document.objects.get(pk=validated_data['document'])
validated_data['folder'].documents.add(document)
except Exception as exception:
raise ValidationError(exception)
return {'document': document.pk}