Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
wbfiles / files / views.py
Size: Mime:
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)