Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from django.shortcuts import get_object_or_404
- from rest_framework import status
- from rest_framework.generics import ListCreateAPIView, RetrieveUpdateDestroyAPIView
- from rest_framework.response import Response
- from rest_framework.views import APIView
- from jobs_explorer.accounts.api.mixins import AuthenticateUserMixin
- from jobs_explorer.accounts.api.v1.serializers import (
- ProjectSerializer, ProfileSerializer, AchievementSerializer, ExperienceSerializer, EducationSerializer,
- ExtracurricularActivitySerializer, ReferenceSerializer, SkillSerializer
- )
- from jobs_explorer.accounts.models import Profile, Education
- from jobs_explorer.core.api.permission import IsObjectOwnerOrReadOnly
- def get_profile(self):
- self.request.user = self.get_user_or_404()
- profile, _ = Profile.objects.get_or_create(user=self.request.user, app=self.get_app())
- return profile
- class ProfileCRUDAPIView(AuthenticateUserMixin, APIView):
- serializer_class = ProfileSerializer
- permission_classes = []
- def get_object(self):
- profile = get_profile(self)
- return profile
- def get(self, request, *args, **kwargs):
- serializer = ProfileSerializer(self.get_object(), context={'request': request})
- return Response(serializer.data, status=status.HTTP_200_OK)
- class ProjectCRUDAPIView(AuthenticateUserMixin, APIView):
- serializer_class = ProjectSerializer
- permission_classes = []
- def get_object(self):
- profile = get_profile(self)
- project = profile.project_set.all()
- return project
- def get(self, request, *args, **kwargs):
- serializer = ProjectSerializer(self.get_object(), many=True)
- return Response(serializer.data, status=status.HTTP_200_OK)
- def post(self, request, *args, **kwargs):
- serializer = ProjectSerializer(data=request.data)
- if serializer.is_valid():
- profile = get_profile(self)
- serializer.save(profile=profile)
- return Response(serializer.data, status=status.HTTP_200_OK)
- return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
- class AchievementCRUDAPIView(AuthenticateUserMixin, APIView):
- serializer_class = AchievementSerializer
- permission_classes = []
- def get_object(self):
- profile = get_profile(self)
- achievement = profile.achievement_set.all()
- return achievement
- def get(self, request, *args, **kwargs):
- serializer = AchievementSerializer(self.get_object(), many=True)
- return Response(serializer.data, status=status.HTTP_200_OK)
- def post(self, request, *args, **kwargs):
- serializer = AchievementSerializer(data=request.data)
- if serializer.is_valid():
- profile = get_profile(self)
- serializer.save(profile=profile)
- return Response(serializer.data, status=status.HTTP_200_OK)
- return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
- class ExperienceCRUDAPIView(AuthenticateUserMixin, APIView):
- serializer_class = ExperienceSerializer
- permission_classes = []
- def get_object(self):
- profile = get_profile(self)
- experience = profile.experience_set.all()
- return experience
- def get(self, request, *args, **kwargs):
- serializer = ExperienceSerializer(self.get_object(), many=True)
- return Response(serializer.data, status=status.HTTP_200_OK)
- def post(self, request, *args, **kwargs):
- serializer = ExperienceSerializer(data=request.data)
- if serializer.is_valid():
- profile = get_profile(self)
- serializer.save(profile=profile)
- return Response(serializer.data, status=status.HTTP_200_OK)
- return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
- class Custom(AuthenticateUserMixin, RetrieveUpdateDestroyAPIView):
- permission_classes = [IsObjectOwnerOrReadOnly]
- def get_object(self):
- self.request.user = get_profile(self).user
- data = get_object_or_404(self.model_name, pk=self.kwargs.get('pk'))
- self.check_object_permissions(self.request, data.profile)
- return data
- def get(self, request, *args, **kwargs):
- return Response(self.serializer_class(self.get_object()).data, status=status.HTTP_200_OK)
- def put(self, request, *args, **kwargs):
- instance = self.get_object()
- serializer = self.serializer_class(instance, data=request.data, partial=True)
- if serializer.is_valid():
- serializer.save()
- return Response(serializer.data, status=status.HTTP_200_OK)
- return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
- def delete(self, request, *args, **kwargs):
- data = self.get_object()
- data.delete()
- return Response(status=status.HTTP_200_OK)
- class EducationCRUDAPIView(Custom):
- serializer_class = EducationSerializer
- model_name = Education
- # def get_object(self, pk):
- # data = Education.objects.get(pk=pk)
- # return data
- #
- # def get_object_list(self):
- # profile = get_profile(self)
- # education = profile.education_set.all()
- # return education
- #
- # def get(self, request, *args, **kwargs):
- # pk = kwargs.get('pk')
- #
- # if pk is None:
- # serializer = EducationSerializer(self.get_object_list(), many=True)
- # else:
- # data = self.get_object(pk)
- # serializer = EducationSerializer(data)
- #
- # return Response(serializer.data, status=status.HTTP_200_OK)
- #
- # def post(self, request, *args, **kwargs):
- # serializer = EducationSerializer(data=request.data)
- #
- # if serializer.is_valid():
- # profile = get_profile(self)
- # serializer.save(profile=profile)
- # return Response(serializer.data, status=status.HTTP_200_OK)
- #
- # return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
- #
- # def put(self, request, *args, **kwargs):
- # pk = kwargs.get('pk')
- # profile = get_profile(self)
- # previous_data = self.get_object(pk)
- #
- # if previous_data.profile == profile:
- # serializer = EducationSerializer(previous_data, data=request.data)
- #
- # if serializer.is_valid():
- # serializer.save()
- # return Response(serializer.data, status=status.HTTP_200_OK)
- # else:
- # return Response(
- # {'message': 'You do not have permission to perform this action.'},
- # status=status.HTTP_403_FORBIDDEN)
- # return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
- #
- # def delete(self, request, *args, **kwargs):
- # pk = kwargs.get('pk')
- # profile = get_profile(self)
- # data = self.get_object(pk)
- #
- # if data.profile == profile:
- # data.delete()
- # return Response(status=status.HTTP_200_OK)
- #
- # else:
- # return Response(
- # {'message': 'You do not have permission to perform this action.'},
- # status=status.HTTP_403_FORBIDDEN)
- # return Response(status=status.HTTP_400_BAD_REQUEST)
- class Test(AuthenticateUserMixin, ListCreateAPIView):
- permission_classes = []
- serializer_class = EducationSerializer
- def get_queryset(self):
- profile = get_profile(self)
- education = profile.education_set.all()
- return education
- def post(self, request, *args, **kwargs):
- serializer = EducationSerializer(data=request.data)
- if serializer.is_valid():
- profile = get_profile(self)
- serializer.save(profile=profile)
- return Response(serializer.data, status=status.HTTP_200_OK)
- return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
- class Test2(AuthenticateUserMixin, RetrieveUpdateDestroyAPIView):
- permission_classes = [IsObjectOwnerOrReadOnly]
- serializer_class = EducationSerializer
- def get_object(self):
- self.request.user = get_profile(self).user
- data = get_object_or_404(Education, pk=self.kwargs.get('pk'))
- self.check_object_permissions(self.request, data.profile)
- return data
- def get(self, request, *args, **kwargs):
- return Response(self.get_serializer(self.get_object()).data, status=status.HTTP_200_OK)
- def put(self, request, *args, **kwargs):
- instance = self.get_object()
- serializer = self.get_serializer(instance, data=request.data, partial=True)
- if serializer.is_valid():
- serializer.save()
- return Response(serializer.data, status=status.HTTP_200_OK)
- return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
- def delete(self, request, *args, **kwargs):
- data = self.get_object()
- data.delete()
- return Response(status=status.HTTP_200_OK)
- class ExtracurricularActivityCRUDAPIView(AuthenticateUserMixin, APIView):
- serializer_class = ExtracurricularActivitySerializer
- permission_classes = []
- def get_object(self):
- profile = get_profile(self)
- extracurricular = profile.extracurricularactivity_set.all()
- return extracurricular
- def get(self, request, *args, **kwargs):
- serializer = ExtracurricularActivitySerializer(self.get_object(), many=True)
- return Response(serializer.data, status=status.HTTP_200_OK)
- def post(self, request, *args, **kwargs):
- serializer = ExtracurricularActivitySerializer(data=request.data)
- if serializer.is_valid():
- profile = get_profile(self)
- serializer.save(profile=profile)
- return Response(serializer.data, status=status.HTTP_200_OK)
- return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
- class ReferencesCRUDAPIView(AuthenticateUserMixin, APIView):
- serializer_class = ReferenceSerializer
- permission_classes = []
- def get_object(self):
- profile = get_profile(self)
- reference = profile.reference_set.all()
- return reference
- def get(self, request, *args, **kwargs):
- serializer = ReferenceSerializer(self.get_object(), many=True)
- return Response(serializer.data, status=status.HTTP_200_OK)
- def post(self, request, *args, **kwargs):
- serializer = ReferenceSerializer(data=request.data)
- if serializer.is_valid():
- profile = get_profile(self)
- serializer.save(profile=profile)
- return Response(serializer.data, status=status.HTTP_200_OK)
- return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
- class SkillCRUDAPIView(AuthenticateUserMixin, APIView):
- serializer_class = SkillSerializer
- permission_classes = []
- def get_object(self):
- self.request.user = self.get_user_or_404()
- profile, _ = Profile.objects.get_or_create(user=self.request.user, app=self.get_app())
- skill = profile.skill_set.all()
- return skill
- def get(self, request, *args, **kwargs):
- serializer = SkillSerializer(self.get_object(), many=True)
- return Response(serializer.data, status=status.HTTP_200_OK)
- def post(self, request, *args, **kwargs):
- serializer = SkillSerializer(data=request.data)
- if serializer.is_valid():
- profile = get_profile(self)
- serializer.save(profile=profile)
- return Response(serializer.data, status=status.HTTP_200_OK)
- return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
- # permission_classes = []
- #
- # def get_object(self, pk):
- # try:
- # return Project.objects.get(pk=pk)
- # except Project.DoesNotExist:
- # raise Http404
- #
- # def get(self, request, pk):
- # snippet = self.get_object(pk)
- # serializer = ProjectSerializer(snippet, context={request: request})
- # return Response(serializer.data)
- #
- # def put(self, request, pk):
- # snippet = self.get_object(pk)
- # serializer = ProjectSerializer(snippet, data=request.data)
- # if serializer.is_valid():
- # serializer.save()
- # return Response(serializer.data)
- # return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
- #
- # def delete(self, request, pk):
- # snippet = self.get_object(pk)
- # snippet.delete()
- # return Response(status=status.HTTP_204_NO_CONTENT)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement