Advertisement
Fahim_7861

back code

Sep 1st, 2021
32
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 12.62 KB | None | 0 0
  1. from django.shortcuts import get_object_or_404
  2. from rest_framework import status
  3. from rest_framework.generics import ListCreateAPIView, RetrieveUpdateDestroyAPIView
  4. from rest_framework.response import Response
  5. from rest_framework.views import APIView
  6.  
  7. from jobs_explorer.accounts.api.mixins import AuthenticateUserMixin
  8. from jobs_explorer.accounts.api.v1.serializers import (
  9. ProjectSerializer, ProfileSerializer, AchievementSerializer, ExperienceSerializer, EducationSerializer,
  10. ExtracurricularActivitySerializer, ReferenceSerializer, SkillSerializer
  11. )
  12.  
  13. from jobs_explorer.accounts.models import Profile, Education
  14. from jobs_explorer.core.api.permission import IsObjectOwnerOrReadOnly
  15.  
  16.  
  17. def get_profile(self):
  18. self.request.user = self.get_user_or_404()
  19. profile, _ = Profile.objects.get_or_create(user=self.request.user, app=self.get_app())
  20. return profile
  21.  
  22.  
  23. class ProfileCRUDAPIView(AuthenticateUserMixin, APIView):
  24. serializer_class = ProfileSerializer
  25. permission_classes = []
  26.  
  27. def get_object(self):
  28. profile = get_profile(self)
  29. return profile
  30.  
  31. def get(self, request, *args, **kwargs):
  32. serializer = ProfileSerializer(self.get_object(), context={'request': request})
  33. return Response(serializer.data, status=status.HTTP_200_OK)
  34.  
  35.  
  36. class ProjectCRUDAPIView(AuthenticateUserMixin, APIView):
  37. serializer_class = ProjectSerializer
  38. permission_classes = []
  39.  
  40. def get_object(self):
  41. profile = get_profile(self)
  42. project = profile.project_set.all()
  43. return project
  44.  
  45. def get(self, request, *args, **kwargs):
  46. serializer = ProjectSerializer(self.get_object(), many=True)
  47. return Response(serializer.data, status=status.HTTP_200_OK)
  48.  
  49. def post(self, request, *args, **kwargs):
  50. serializer = ProjectSerializer(data=request.data)
  51.  
  52. if serializer.is_valid():
  53. profile = get_profile(self)
  54. serializer.save(profile=profile)
  55. return Response(serializer.data, status=status.HTTP_200_OK)
  56.  
  57. return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
  58.  
  59.  
  60. class AchievementCRUDAPIView(AuthenticateUserMixin, APIView):
  61. serializer_class = AchievementSerializer
  62. permission_classes = []
  63.  
  64. def get_object(self):
  65. profile = get_profile(self)
  66. achievement = profile.achievement_set.all()
  67. return achievement
  68.  
  69. def get(self, request, *args, **kwargs):
  70. serializer = AchievementSerializer(self.get_object(), many=True)
  71. return Response(serializer.data, status=status.HTTP_200_OK)
  72.  
  73. def post(self, request, *args, **kwargs):
  74. serializer = AchievementSerializer(data=request.data)
  75.  
  76. if serializer.is_valid():
  77. profile = get_profile(self)
  78. serializer.save(profile=profile)
  79. return Response(serializer.data, status=status.HTTP_200_OK)
  80.  
  81. return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
  82.  
  83.  
  84. class ExperienceCRUDAPIView(AuthenticateUserMixin, APIView):
  85. serializer_class = ExperienceSerializer
  86. permission_classes = []
  87.  
  88. def get_object(self):
  89. profile = get_profile(self)
  90. experience = profile.experience_set.all()
  91. return experience
  92.  
  93. def get(self, request, *args, **kwargs):
  94. serializer = ExperienceSerializer(self.get_object(), many=True)
  95. return Response(serializer.data, status=status.HTTP_200_OK)
  96.  
  97. def post(self, request, *args, **kwargs):
  98. serializer = ExperienceSerializer(data=request.data)
  99.  
  100. if serializer.is_valid():
  101. profile = get_profile(self)
  102. serializer.save(profile=profile)
  103. return Response(serializer.data, status=status.HTTP_200_OK)
  104.  
  105. return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
  106.  
  107.  
  108. class Custom(AuthenticateUserMixin, RetrieveUpdateDestroyAPIView):
  109. permission_classes = [IsObjectOwnerOrReadOnly]
  110.  
  111. def get_object(self):
  112. self.request.user = get_profile(self).user
  113. data = get_object_or_404(self.model_name, pk=self.kwargs.get('pk'))
  114. self.check_object_permissions(self.request, data.profile)
  115. return data
  116.  
  117. def get(self, request, *args, **kwargs):
  118. return Response(self.serializer_class(self.get_object()).data, status=status.HTTP_200_OK)
  119.  
  120. def put(self, request, *args, **kwargs):
  121. instance = self.get_object()
  122. serializer = self.serializer_class(instance, data=request.data, partial=True)
  123.  
  124. if serializer.is_valid():
  125. serializer.save()
  126. return Response(serializer.data, status=status.HTTP_200_OK)
  127.  
  128. return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
  129.  
  130. def delete(self, request, *args, **kwargs):
  131. data = self.get_object()
  132. data.delete()
  133. return Response(status=status.HTTP_200_OK)
  134.  
  135.  
  136. class EducationCRUDAPIView(Custom):
  137. serializer_class = EducationSerializer
  138. model_name = Education
  139.  
  140. # def get_object(self, pk):
  141. # data = Education.objects.get(pk=pk)
  142. # return data
  143. #
  144. # def get_object_list(self):
  145. # profile = get_profile(self)
  146. # education = profile.education_set.all()
  147. # return education
  148. #
  149. # def get(self, request, *args, **kwargs):
  150. # pk = kwargs.get('pk')
  151. #
  152. # if pk is None:
  153. # serializer = EducationSerializer(self.get_object_list(), many=True)
  154. # else:
  155. # data = self.get_object(pk)
  156. # serializer = EducationSerializer(data)
  157. #
  158. # return Response(serializer.data, status=status.HTTP_200_OK)
  159. #
  160. # def post(self, request, *args, **kwargs):
  161. # serializer = EducationSerializer(data=request.data)
  162. #
  163. # if serializer.is_valid():
  164. # profile = get_profile(self)
  165. # serializer.save(profile=profile)
  166. # return Response(serializer.data, status=status.HTTP_200_OK)
  167. #
  168. # return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
  169. #
  170. # def put(self, request, *args, **kwargs):
  171. # pk = kwargs.get('pk')
  172. # profile = get_profile(self)
  173. # previous_data = self.get_object(pk)
  174. #
  175. # if previous_data.profile == profile:
  176. # serializer = EducationSerializer(previous_data, data=request.data)
  177. #
  178. # if serializer.is_valid():
  179. # serializer.save()
  180. # return Response(serializer.data, status=status.HTTP_200_OK)
  181. # else:
  182. # return Response(
  183. # {'message': 'You do not have permission to perform this action.'},
  184. # status=status.HTTP_403_FORBIDDEN)
  185. # return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
  186. #
  187. # def delete(self, request, *args, **kwargs):
  188. # pk = kwargs.get('pk')
  189. # profile = get_profile(self)
  190. # data = self.get_object(pk)
  191. #
  192. # if data.profile == profile:
  193. # data.delete()
  194. # return Response(status=status.HTTP_200_OK)
  195. #
  196. # else:
  197. # return Response(
  198. # {'message': 'You do not have permission to perform this action.'},
  199. # status=status.HTTP_403_FORBIDDEN)
  200. # return Response(status=status.HTTP_400_BAD_REQUEST)
  201.  
  202.  
  203. class Test(AuthenticateUserMixin, ListCreateAPIView):
  204. permission_classes = []
  205. serializer_class = EducationSerializer
  206.  
  207. def get_queryset(self):
  208. profile = get_profile(self)
  209. education = profile.education_set.all()
  210. return education
  211.  
  212. def post(self, request, *args, **kwargs):
  213. serializer = EducationSerializer(data=request.data)
  214.  
  215. if serializer.is_valid():
  216. profile = get_profile(self)
  217. serializer.save(profile=profile)
  218. return Response(serializer.data, status=status.HTTP_200_OK)
  219.  
  220. return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
  221.  
  222.  
  223. class Test2(AuthenticateUserMixin, RetrieveUpdateDestroyAPIView):
  224. permission_classes = [IsObjectOwnerOrReadOnly]
  225. serializer_class = EducationSerializer
  226.  
  227. def get_object(self):
  228. self.request.user = get_profile(self).user
  229. data = get_object_or_404(Education, pk=self.kwargs.get('pk'))
  230. self.check_object_permissions(self.request, data.profile)
  231. return data
  232.  
  233. def get(self, request, *args, **kwargs):
  234. return Response(self.get_serializer(self.get_object()).data, status=status.HTTP_200_OK)
  235.  
  236. def put(self, request, *args, **kwargs):
  237. instance = self.get_object()
  238. serializer = self.get_serializer(instance, data=request.data, partial=True)
  239.  
  240. if serializer.is_valid():
  241. serializer.save()
  242. return Response(serializer.data, status=status.HTTP_200_OK)
  243.  
  244. return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
  245.  
  246. def delete(self, request, *args, **kwargs):
  247. data = self.get_object()
  248. data.delete()
  249. return Response(status=status.HTTP_200_OK)
  250.  
  251.  
  252. class ExtracurricularActivityCRUDAPIView(AuthenticateUserMixin, APIView):
  253. serializer_class = ExtracurricularActivitySerializer
  254. permission_classes = []
  255.  
  256. def get_object(self):
  257. profile = get_profile(self)
  258. extracurricular = profile.extracurricularactivity_set.all()
  259. return extracurricular
  260.  
  261. def get(self, request, *args, **kwargs):
  262. serializer = ExtracurricularActivitySerializer(self.get_object(), many=True)
  263. return Response(serializer.data, status=status.HTTP_200_OK)
  264.  
  265. def post(self, request, *args, **kwargs):
  266. serializer = ExtracurricularActivitySerializer(data=request.data)
  267.  
  268. if serializer.is_valid():
  269. profile = get_profile(self)
  270. serializer.save(profile=profile)
  271. return Response(serializer.data, status=status.HTTP_200_OK)
  272.  
  273. return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
  274.  
  275.  
  276. class ReferencesCRUDAPIView(AuthenticateUserMixin, APIView):
  277. serializer_class = ReferenceSerializer
  278. permission_classes = []
  279.  
  280. def get_object(self):
  281. profile = get_profile(self)
  282. reference = profile.reference_set.all()
  283. return reference
  284.  
  285. def get(self, request, *args, **kwargs):
  286. serializer = ReferenceSerializer(self.get_object(), many=True)
  287. return Response(serializer.data, status=status.HTTP_200_OK)
  288.  
  289. def post(self, request, *args, **kwargs):
  290. serializer = ReferenceSerializer(data=request.data)
  291.  
  292. if serializer.is_valid():
  293. profile = get_profile(self)
  294. serializer.save(profile=profile)
  295. return Response(serializer.data, status=status.HTTP_200_OK)
  296.  
  297. return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
  298.  
  299.  
  300. class SkillCRUDAPIView(AuthenticateUserMixin, APIView):
  301. serializer_class = SkillSerializer
  302. permission_classes = []
  303.  
  304. def get_object(self):
  305. self.request.user = self.get_user_or_404()
  306. profile, _ = Profile.objects.get_or_create(user=self.request.user, app=self.get_app())
  307. skill = profile.skill_set.all()
  308. return skill
  309.  
  310. def get(self, request, *args, **kwargs):
  311. serializer = SkillSerializer(self.get_object(), many=True)
  312. return Response(serializer.data, status=status.HTTP_200_OK)
  313.  
  314. def post(self, request, *args, **kwargs):
  315. serializer = SkillSerializer(data=request.data)
  316.  
  317. if serializer.is_valid():
  318. profile = get_profile(self)
  319. serializer.save(profile=profile)
  320. return Response(serializer.data, status=status.HTTP_200_OK)
  321.  
  322. return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
  323.  
  324. # permission_classes = []
  325. #
  326. # def get_object(self, pk):
  327. # try:
  328. # return Project.objects.get(pk=pk)
  329. # except Project.DoesNotExist:
  330. # raise Http404
  331. #
  332. # def get(self, request, pk):
  333. # snippet = self.get_object(pk)
  334. # serializer = ProjectSerializer(snippet, context={request: request})
  335. # return Response(serializer.data)
  336. #
  337. # def put(self, request, pk):
  338. # snippet = self.get_object(pk)
  339. # serializer = ProjectSerializer(snippet, data=request.data)
  340. # if serializer.is_valid():
  341. # serializer.save()
  342. # return Response(serializer.data)
  343. # return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
  344. #
  345. # def delete(self, request, pk):
  346. # snippet = self.get_object(pk)
  347. # snippet.delete()
  348. # return Response(status=status.HTTP_204_NO_CONTENT)
  349.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement