70 lines
2.2 KiB
Python
70 lines
2.2 KiB
Python
from rest_framework import viewsets
|
|
from rest_framework.decorators import action
|
|
from rest_framework.permissions import IsAuthenticated
|
|
|
|
from .models import FileCategory, ProcessingPipeline, StoredFile
|
|
from .serializers import (
|
|
FileCategorySerializer,
|
|
ProcessingPipelineSerializer,
|
|
StoredFileSerializer,
|
|
)
|
|
from .services import FileService
|
|
|
|
|
|
class StoredFileViewSet(viewsets.ModelViewSet):
|
|
queryset = StoredFile.objects.all()
|
|
serializer_class = StoredFileSerializer
|
|
permission_classes = [IsAuthenticated]
|
|
|
|
def initial(self, request, *args, **kwargs):
|
|
from infrasynth.features.services import FeatureService
|
|
|
|
if not FeatureService().is_enabled("files", user=request.user):
|
|
from django.http import Http404
|
|
|
|
raise Http404()
|
|
super().initial(request, *args, **kwargs)
|
|
|
|
def get_queryset(self):
|
|
return StoredFile.objects.select_related("category", "uploaded_by").all()
|
|
|
|
@action(detail=True, methods=["get"])
|
|
def download(self, request, pk=None):
|
|
stored = self.get_object()
|
|
return FileService().get_download_response(stored, request)
|
|
|
|
|
|
class FileCategoryViewSet(viewsets.ModelViewSet):
|
|
queryset = FileCategory.objects.all()
|
|
serializer_class = FileCategorySerializer
|
|
permission_classes = [IsAuthenticated]
|
|
|
|
def initial(self, request, *args, **kwargs):
|
|
from infrasynth.features.services import FeatureService
|
|
|
|
if not FeatureService().is_enabled("files", user=request.user):
|
|
from django.http import Http404
|
|
|
|
raise Http404()
|
|
super().initial(request, *args, **kwargs)
|
|
|
|
def get_queryset(self):
|
|
return FileCategory.objects.all()
|
|
|
|
|
|
class ProcessingPipelineViewSet(viewsets.ModelViewSet):
|
|
queryset = ProcessingPipeline.objects.all()
|
|
serializer_class = ProcessingPipelineSerializer
|
|
permission_classes = [IsAuthenticated]
|
|
|
|
def initial(self, request, *args, **kwargs):
|
|
from infrasynth.features.services import FeatureService
|
|
|
|
if not FeatureService().is_enabled("files", user=request.user):
|
|
from django.http import Http404
|
|
|
|
raise Http404()
|
|
super().initial(request, *args, **kwargs)
|
|
|
|
def get_queryset(self):
|
|
return ProcessingPipeline.objects.all()
|