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)
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)
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)
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)
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)
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
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)