Initial commit from ZIP

This commit is contained in:
kusz committed 2024-11-27 13:18:16 +01:00
commit 378d4692a9
454 files changed
+40367

No files matched your search

+10
View File
@@ -0,0 +1,10 @@
from .blanking import BlankingViewSet
from .brief import BriefViewSet
from .draft import DraftViewSet
from .draft_file import DraftFileViewSet, DraftFileNestedViewSet
from .first_final import FirstFinalViewSet
from .packaging_type import PackagingTypeViewSet
from .photo import PhotoViewSet
from .product import ProductViewSet
from .product_stage import ProductStageViewSet
from .printing_files import PrintingFilesViewSet
+31
View File
@@ -0,0 +1,31 @@
from django.http import HttpResponseRedirect
from rest_framework.permissions import AllowAny
from outbo.apps.core.viewsets import (
AutoPermissionViewSetMixin,
RetrieveModelMixin,
DestroyModelMixin,
MultipleSerializerViewSet,
)
from outbo.apps.products.models import Blanking
from outbo.apps.products.serializers import BlankingSerializer
class BlankingViewSet(
AutoPermissionViewSetMixin,
RetrieveModelMixin,
DestroyModelMixin,
MultipleSerializerViewSet,
):
queryset = Blanking.objects.all()
serializer_class_set = BlankingSerializer
retrieve_permission_classes = [AllowAny]
def get_permissions(self):
if self.action == "retrieve":
return [permission() for permission in self.retrieve_permission_classes]
return super().get_permissions()
def retrieve(self, request, *args, **kwargs):
blanking: Blanking = self.get_object()
return HttpResponseRedirect(redirect_to=blanking.file.url)
+15
View File
@@ -0,0 +1,15 @@
from outbo.apps.core.viewsets import (
AutoPermissionViewSetMixin,
RetrieveModelMixin,
MultipleSerializerViewSet,
PartialUpdateModelMixin,
)
from outbo.apps.products.models import Brief
from outbo.apps.products.serializers import BriefSerializer
class BriefViewSet(
AutoPermissionViewSetMixin, RetrieveModelMixin, PartialUpdateModelMixin, MultipleSerializerViewSet
):
queryset = Brief.objects.all()
serializer_class_set = BriefSerializer
+18
View File
@@ -0,0 +1,18 @@
from outbo.apps.core.viewsets import (
AutoPermissionViewSetMixin,
MultipleSerializerViewSet,
RetrieveModelMixin,
PartialUpdateModelMixin,
)
from outbo.apps.products.models import Draft
from outbo.apps.products.serializers import DraftSerializer
class DraftViewSet(
AutoPermissionViewSetMixin,
RetrieveModelMixin,
PartialUpdateModelMixin,
MultipleSerializerViewSet,
):
queryset = Draft.objects.all()
serializer_class_set = DraftSerializer
+78
View File
@@ -0,0 +1,78 @@
from django.http import HttpResponseRedirect
from rest_framework.decorators import action
from rest_framework.exceptions import PermissionDenied
from rest_framework.permissions import AllowAny
from rest_framework.response import Response
from rest_framework.status import HTTP_200_OK
from outbo.apps.core.viewsets import (
AutoPermissionViewSetMixin,
CreateModelMixin,
MultipleSerializerViewSet,
NestedViewSetMixin,
RetrieveModelMixin,
)
from outbo.apps.products import rules
from outbo.apps.products.models import DraftFile, Draft
from outbo.apps.products.serializers import DraftFileSerializer
class OpenFileAsUser:
def __update_opened_by(self):
object = self.get_object()
if object.opened_by is None:
object.opened_by = [self.request.user.id]
else:
if self.request.user.id not in object.opened_by:
object.opened_by.append(self.request.user.id)
object.save()
@action(methods=['get'], detail=True, url_path="open-file")
def open_file(self, request, pk=None):
if self.request.user is not None:
self.__update_opened_by()
return Response(data="ok", status=HTTP_200_OK)
class DraftFileViewSet(
NestedViewSetMixin,
AutoPermissionViewSetMixin,
RetrieveModelMixin,
MultipleSerializerViewSet,
OpenFileAsUser,
):
queryset = DraftFile.objects.all()
serializer_class_set = DraftFileSerializer
retrieve_permission_classes = [AllowAny]
permission_type_map = {
**AutoPermissionViewSetMixin.permission_type_map,
"open_file": "view",
}
def get_permissions(self):
if self.action == "retrieve":
return [permission() for permission in self.retrieve_permission_classes]
return super().get_permissions()
def retrieve(self, request, *args, **kwargs):
return HttpResponseRedirect(redirect_to=self.get_object().file.url)
class DraftFileNestedViewSet(
NestedViewSetMixin,
AutoPermissionViewSetMixin,
CreateModelMixin,
MultipleSerializerViewSet,
):
queryset = DraftFile.objects.all()
serializer_class_set = DraftFileSerializer
serializer_map = {**MultipleSerializerViewSet.serializer_map, "open_file": "Retrieve"}
def perform_create(self, *, serializer):
current_user = self.request.user
parents = self.get_parents_query_dict()
draft = Draft.objects.get(pk=parents["draft_id"])
if not rules.can_edit_draft.test(current_user, draft):
raise PermissionDenied() # NOTE: Should it be here?
return serializer.save(draft=draft)
+18
View File
@@ -0,0 +1,18 @@
from outbo.apps.core.viewsets import (
AutoPermissionViewSetMixin,
MultipleSerializerViewSet,
RetrieveModelMixin,
PartialUpdateModelMixin,
)
from outbo.apps.products.models import FirstFinal
from outbo.apps.products.serializers import FirstFinalSerializer
class FirstFinalViewSet(
AutoPermissionViewSetMixin,
RetrieveModelMixin,
PartialUpdateModelMixin,
MultipleSerializerViewSet,
):
queryset = FirstFinal.objects.all()
serializer_class_set = FirstFinalSerializer
@@ -0,0 +1,58 @@
from django.http import HttpResponseRedirect
from rest_framework.exceptions import PermissionDenied
from rest_framework.permissions import AllowAny
from outbo.apps.core.viewsets import (
AutoPermissionViewSetMixin,
CreateModelMixin,
MultipleSerializerViewSet,
NestedViewSetMixin,
RetrieveModelMixin,
)
from outbo.apps.products import rules
from outbo.apps.products.models import FirstFinal, FirstFinalFile
from outbo.apps.products.serializers import FirstFinalFileSerializer
from outbo.apps.products.viewsets.draft_file import OpenFileAsUser
class FirstFinalFileViewSet(
NestedViewSetMixin,
AutoPermissionViewSetMixin,
RetrieveModelMixin,
MultipleSerializerViewSet,
OpenFileAsUser
):
queryset = FirstFinalFile.objects.all()
serializer_class_set = FirstFinalFileSerializer
retrieve_permission_classes = [AllowAny]
permission_type_map = {
**AutoPermissionViewSetMixin.permission_type_map,
"open_file": "view",
}
def get_permissions(self):
if self.action == "retrieve":
return [permission() for permission in self.retrieve_permission_classes]
return super().get_permissions()
def retrieve(self, request, *args, **kwargs):
return HttpResponseRedirect(redirect_to=self.get_object().file.url)
class FirstFinalFileNestedViewSet(
NestedViewSetMixin,
AutoPermissionViewSetMixin,
CreateModelMixin,
MultipleSerializerViewSet,
):
queryset = FirstFinalFile.objects.all()
serializer_class_set = FirstFinalFileSerializer
def perform_create(self, *, serializer):
current_user = self.request.user
parents = self.get_parents_query_dict()
ff = FirstFinal.objects.get(pk=parents["first_final_id"])
if not rules.can_edit_ff.test(current_user, ff):
raise PermissionDenied() # NOTE: Should it be here?
return serializer.save(first_final=ff)
@@ -0,0 +1,14 @@
from outbo.apps.core.viewsets import (
AutoPermissionViewSetMixin,
ListModelMixin,
MultipleSerializerViewSet,
)
from outbo.apps.products.models import PackagingType
from outbo.apps.products.serializers import PackagingTypeSerializer
class PackagingTypeViewSet(
AutoPermissionViewSetMixin, ListModelMixin, MultipleSerializerViewSet,
):
queryset = PackagingType.objects.all()
serializer_class_set = PackagingTypeSerializer
+31
View File
@@ -0,0 +1,31 @@
from django.http import HttpResponseRedirect
from rest_framework.permissions import AllowAny
from outbo.apps.core.viewsets import (
AutoPermissionViewSetMixin,
RetrieveModelMixin,
MultipleSerializerViewSet,
DestroyModelMixin,
)
from outbo.apps.products.models import Photo
from outbo.apps.products.serializers import PhotoSerializer
class PhotoViewSet(
AutoPermissionViewSetMixin,
RetrieveModelMixin,
DestroyModelMixin,
MultipleSerializerViewSet,
):
queryset = Photo.objects.all()
serializer_class_set = PhotoSerializer
retrieve_permission_classes = [AllowAny]
def get_permissions(self):
if self.action == "retrieve":
return [permission() for permission in self.retrieve_permission_classes]
return super().get_permissions()
def retrieve(self, request, *args, **kwargs):
photo: Photo = self.get_object()
return HttpResponseRedirect(redirect_to=photo.file.url)
@@ -0,0 +1,18 @@
from outbo.apps.core.viewsets import (
AutoPermissionViewSetMixin,
MultipleSerializerViewSet,
RetrieveModelMixin,
PartialUpdateModelMixin,
)
from outbo.apps.products.models import PrintingFiles
from outbo.apps.products.serializers import PrintingFilesSerializer
class PrintingFilesViewSet(
AutoPermissionViewSetMixin,
RetrieveModelMixin,
PartialUpdateModelMixin,
MultipleSerializerViewSet,
):
queryset = PrintingFiles.objects.all()
serializer_class_set = PrintingFilesSerializer
@@ -0,0 +1,58 @@
from django.http import HttpResponseRedirect
from rest_framework.exceptions import PermissionDenied
from rest_framework.permissions import AllowAny
from outbo.apps.core.viewsets import (
AutoPermissionViewSetMixin,
CreateModelMixin,
MultipleSerializerViewSet,
NestedViewSetMixin,
RetrieveModelMixin,
)
from outbo.apps.products import rules
from outbo.apps.products.models import PrintingFilesFile, PrintingFiles
from outbo.apps.products.serializers import PrintingFilesFileSerializer
from outbo.apps.products.viewsets.draft_file import OpenFileAsUser
class PrintingFilesFileViewSet(
NestedViewSetMixin,
AutoPermissionViewSetMixin,
RetrieveModelMixin,
MultipleSerializerViewSet,
OpenFileAsUser
):
queryset = PrintingFilesFile.objects.all()
serializer_class_set = PrintingFilesFileSerializer
retrieve_permission_classes = [AllowAny]
permission_type_map = {
**AutoPermissionViewSetMixin.permission_type_map,
"open_file": "view",
}
def get_permissions(self):
if self.action == "retrieve":
return [permission() for permission in self.retrieve_permission_classes]
return super().get_permissions()
def retrieve(self, request, *args, **kwargs):
return HttpResponseRedirect(redirect_to=self.get_object().file.url)
class PrintingFilesFileNestedViewSet(
NestedViewSetMixin,
AutoPermissionViewSetMixin,
CreateModelMixin,
MultipleSerializerViewSet,
):
queryset = PrintingFilesFile.objects.all()
serializer_class_set = PrintingFilesFileSerializer
def perform_create(self, *, serializer):
current_user = self.request.user
parents = self.get_parents_query_dict()
pf = PrintingFiles.objects.get(pk=parents["printing_files_id"])
if not rules.can_edit_pf.test(current_user, pf):
raise PermissionDenied() # NOTE: Should it be here?
return serializer.save(printing_files=pf)
+31
View File
@@ -0,0 +1,31 @@
from outbo.apps.core.viewsets import (
AutoPermissionViewSetMixin,
ListModelMixin,
RetrieveModelMixin,
PartialUpdateModelMixin,
MultipleSerializerViewSet,
)
from outbo.apps.products.filters import ProductFilter
from outbo.apps.products.models import Product
from outbo.apps.products.queries import read_product_query
from outbo.apps.products.serializers import ProductSerializer
class ProductViewSet(
AutoPermissionViewSetMixin,
ListModelMixin,
RetrieveModelMixin,
PartialUpdateModelMixin,
MultipleSerializerViewSet,
):
queryset = Product.objects.all()
serializer_class_set = ProductSerializer
filterset_class = ProductFilter
def get_queryset(self):
qs = super().get_queryset()
qs = qs.prefetch_related("brief", "draft", "first_final", "printing_files")
if self.action == "list":
qs_filter = read_product_query(self.request.user)
qs = qs.filter(qs_filter)
return qs
@@ -0,0 +1,14 @@
from outbo.apps.core.viewsets import (
AutoPermissionViewSetMixin,
ListModelMixin,
MultipleSerializerViewSet,
)
from outbo.apps.products.models import ProductStage
from outbo.apps.products.serializers import ProductStageSerializer
class ProductStageViewSet(
AutoPermissionViewSetMixin, ListModelMixin, MultipleSerializerViewSet
):
queryset = ProductStage.objects.all()
serializer_class_set = ProductStageSerializer