Initial commit from ZIP
This commit is contained in:
commit
378d4692a9
454 files changed
+40367
No files matched your search
+10
@@ -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
@@ -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
@@ -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
@@ -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
|
||||
@@ -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)
|
||||
@@ -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
@@ -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
@@ -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
|
||||
Reference in new issue
Block a user