project.py 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. from django.shortcuts import get_object_or_404
  2. from rest_framework import status
  3. from rest_framework.decorators import permission_classes
  4. from rest_framework.decorators import action
  5. from rest_framework.response import Response
  6. from pycs_api.models import Project
  7. from pycs_api.models import File
  8. from pycs_api.serializers import ProjectSerializer
  9. from pycs_api.serializers import FileSerializer
  10. from pycs_api.views.base import BaseViewSet
  11. class ProjectViewSet(BaseViewSet):
  12. serializer_class = ProjectSerializer
  13. def get_queryset(self):
  14. return self.request.user.projects
  15. def perform_create(self, serializer):
  16. serializer.save(user=self.request.user)
  17. @action(detail=True, methods=['post'])
  18. def file(self, request, pk=None):
  19. if "file" not in request.FILES:
  20. return Response({"status": "File missing"},
  21. status=status.HTTP_400_BAD_REQUEST)
  22. project = self.get_object()
  23. try:
  24. file = File.create(request.FILES['file'], project)
  25. except Exception as e:
  26. return Response({"status": str(e)},
  27. status=status.HTTP_400_BAD_REQUEST)
  28. else:
  29. return Response({'status': 'File uploaded'})
  30. @action(detail=True)
  31. def files(self, request, pk=None):
  32. project = self.get_object()
  33. files = project.files
  34. serializer = FileSerializer(files, many=True)
  35. return Response(serializer.data)