Repository URL to install this package:
|
Version:
0.0.4 ▾
|
import mimetypes
import boto3
import django_filters
from django.conf import settings
from django.db.models import Q
from django.http import Http404, HttpResponse
from django.shortcuts import render
from rest_framework import filters, permissions, viewsets
from rest_framework.authentication import (SessionAuthentication,
TokenAuthentication)
from rest_framework.decorators import api_view
from rest_framework.response import Response
from rest_framework.reverse import reverse
from files.serializers import DocumentModelSerializer, DocumentSubTypeModelSerializer, DocumentTypeModelSerializer,ContentTypeModelSerializer
from files import filters as file_filters
from files import models
from rest_framework_simplejwt.authentication import JWTAuthentication
from django.contrib.contenttypes.models import ContentType
from wbutils.views import AppModelResponseHeaderMixin
class DocumentModelViewSet(AppModelResponseHeaderMixin, viewsets.ModelViewSet):
IDENTIFIER = 'files:document'
filter_backends = (django_filters.rest_framework.DjangoFilterBackend, filters.OrderingFilter)
ordering_fields = ('title', 'created', 'last_modified', 'id')
filter_class = file_filters.DocumentFilter
queryset = models.Document.objects.none()
serializer_class = DocumentModelSerializer
def get_queryset(self):
return models.Document.get_queryset_for_user(self.request.user)
class DocumentTypeModelViewSet(AppModelResponseHeaderMixin, viewsets.ModelViewSet):
IDENTIFIER = 'files:documenttype'
filter_backends = (filters.OrderingFilter, filters.SearchFilter)
ordering_fields = ('id', 'name', 'slug')
search_fields = ('name',)
queryset = models.DocumentType.objects.all()
serializer_class = DocumentTypeModelSerializer
class DocumentSubTypeModelViewSet(AppModelResponseHeaderMixin, viewsets.ModelViewSet):
IDENTIFIER = 'files:documentsubtype'
filter_backends = (django_filters.rest_framework.DjangoFilterBackend, filters.OrderingFilter, filters.SearchFilter)
ordering_fields = ('name', 'slug', 'id')
search_fields = ('name',)
filter_class = file_filters.DocumentSubTypeFilter
queryset = models.DocumentSubType.objects.all()
serializer_class = DocumentSubTypeModelSerializer
class ContentTypeModelViewSet(AppModelResponseHeaderMixin, viewsets.ReadOnlyModelViewSet):
IDENTIFIER = 'django:contenttype'
filter_backends = (filters.SearchFilter,)
search_fields = ('model',)
queryset = ContentType.objects.none()
serializer_class = ContentTypeModelSerializer
def get_queryset(self):
ct_apps = [model_definition[0] for _, model_definition in settings.FILES_LINKED_MODELS.items()]
ct_models = [model_definition[1] for _, model_definition in settings.FILES_LINKED_MODELS.items()]
return ContentType.objects.filter(app_label__in=ct_apps, model__in=ct_models)