project.py 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. from django.views.decorators.http import require_POST
  2. from rest_framework import status
  3. from rest_framework.decorators import permission_classes
  4. from rest_framework.response import Response
  5. from pycs_api.models import Project
  6. from pycs_api.serializers import ProjectSerializer
  7. from pycs_api.views.base import BaseViewSet
  8. class ProjectViewSet(BaseViewSet):
  9. queryset = Project.objects.all().order_by("id")
  10. serializer_class = ProjectSerializer
  11. def list(self, request):
  12. if request.user.is_anonymous:
  13. return Response('Unauthorized',
  14. status=status.HTTP_401_UNAUTHORIZED)
  15. projects = request.user.projects.all()
  16. serializer = self.get_serializer(projects, many=True)
  17. return Response(serializer.data)
  18. def create(self, request):
  19. if request.user.is_anonymous:
  20. return Response('Unauthorized',
  21. status=status.HTTP_401_UNAUTHORIZED)
  22. project = Project(
  23. user=request.user,
  24. **request.data
  25. )
  26. project.save()
  27. serializer = self.get_serializer(project)
  28. return Response(serializer.data)
  29. # class ProjectView(JsonResponseView):
  30. # """
  31. # serves POST and GET for '/projects/'
  32. # staticmethods serve POST methods for
  33. # '/projects/<id>/name'
  34. # '/projects/<id>/description'
  35. # '/projects/<id>/remove'
  36. # """
  37. # http_method_names = ["get", "post"]
  38. # def get(self, request, *args, **kwargs):
  39. # """ lists projects """
  40. # return self.respond([
  41. # dict(name="Project 1", description="Desc1", ),
  42. # dict(name="Project 2", description="Desc2"),
  43. # ])
  44. # def post(self, request, *args, **kwargs):
  45. # """ creates a project """
  46. # return self.respond()
  47. # @require_POST
  48. # @classmethod
  49. # def remove(cls, request, project_id: int):
  50. # """ removes a project """
  51. # return cls.respond()
  52. # @require_POST
  53. # @classmethod
  54. # def edit_name(cls, request, project_id: int):
  55. # """ edit project's name """
  56. # return cls.respond()
  57. # @require_POST
  58. # @classmethod
  59. # def edit_description(cls, request, project_id: int):
  60. # """ edit project's description """
  61. # return cls.respond()
  62. # @require_POST
  63. # @classmethod
  64. # def run_external_storage(cls, request, project_id: int):
  65. # """ runs external storage routine """
  66. # return cls.respond()
  67. # @require_POST
  68. # @classmethod
  69. # def run_label_provider(cls, request, project_id: int):
  70. # """ runs label provider routine """
  71. # return cls.respond()