6
0

project.py 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  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. print(e)
  27. return Response({
  28. "status": str(e)},
  29. status=status.HTTP_400_BAD_REQUEST)
  30. else:
  31. return Response({
  32. 'status': 'File uploaded',
  33. 'file_id': file.id})
  34. @action(detail=True)
  35. def files(self, request, pk=None):
  36. project = self.get_object()
  37. files = project.files
  38. serializer = FileSerializer(files, many=True)
  39. return Response(serializer.data)