示例#1
0
 def get(self, request, pk, format=None):
     '''
     Return a project by id.
     '''
     project = self.get_object(pk)
     serializer = ProjectSerializer(project, context={'request': request})
     return Response(serializer.data)
示例#2
0
 def test_get_project(self):
     project = Project.objects.first()
     response = self.client.get('/api/projects/{}/'.format(project.id))
     self.assertEqual(response.status_code, status.HTTP_200_OK)
     self.assertEqual(
         response.data,
         ProjectSerializer(project,
                           context={
                               'request': self.factory.get('/')
                           }).data)
示例#3
0
 def get(self, request, format=None):
     """
     Return a list of projects.
     """
     projects = Project.objects.all()
     projects = self.applyFilters(request, projects)
     serializer = ProjectSerializer(projects,
                                    many=True,
                                    context={'request': request})
     return Response(serializer.data)
示例#4
0
 def post(self, request, format=None):
     '''
     Create a project.
     '''
     serializer = ProjectSerializerCreateUpdate(data=request.data)
     if serializer.is_valid():
         serializer.save(request)
         serializerReturn = ProjectSerializer(
             Project.objects.get(pk=serializer.data.get('id')),
             context={'request': request})
         return Response(serializerReturn.data, status=HTTP_201_CREATED)
     return Response(serializer.errors, status=HTTP_400_BAD_REQUEST)
示例#5
0
 def patch(self, request, pk, format=None):
     project = self.get_object(pk)
     if request.user == project.creator or request.user.is_staff or request.user.id in getCooperators(
             pk):
         serializer = ProjectSerializerCreateUpdate(project,
                                                    data=request.data,
                                                    partial=True)
         if serializer.is_valid():
             serializer.update(project, serializer.validated_data,
                               request.data)
             serializerReturn = ProjectSerializer(
                 Project.objects.get(pk=serializer.data.get('id')),
                 context={'request': request})
             return Response(serializerReturn.data)
     else:
         return Response({"This user can't update this project"},
                         status=HTTP_400_BAD_REQUEST)
     return Response(serializer.errors, status=HTTP_400_BAD_REQUEST)
示例#6
0
 def get_context_data(self, **kwargs):
     context_data = super().get_context_data(**kwargs)
     context_data["project_tab"] = ProjectTab.SETTINGS.value
     context_data["project_serializer"] = ProjectSerializer(self.object)
     context_data["project_destroy_serializer"] = ProjectDestroySerializer()
     return context_data
示例#7
0
 def test_list_projects(self):
     projects = Project.objects.all()
     serializer = ProjectSerializer(
         projects, context={'request': self.factory.get('/')}, many=True)
     response = self.client.get(reverse('api:project-list'))
     self.assertEqual(response.data, serializer.data)