From 1b3dc66aefdfffa6e4c95b182b74256c0afa1f9f Mon Sep 17 00:00:00 2001 From: Juan Pakpahan <juan.alexander@ui.ac.id> Date: Thu, 28 Nov 2019 11:37:52 +0700 Subject: [PATCH] create helper method to handle pdf sertifikat and pdf file --- core/views/accounts/student.py | 28 +++++++++++++++------------- 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/core/views/accounts/student.py b/core/views/accounts/student.py index 60949f2a..ed575f3b 100644 --- a/core/views/accounts/student.py +++ b/core/views/accounts/student.py @@ -46,20 +46,11 @@ class StudentViewSet(viewsets.ModelViewSet): hackerrank_url_pattern = "^(https:\/\/www\.)(hackerrank.com)(\/[a-zA-Z0-9]*)(\/)?$" if 'pdf_sertifikat' in request.data.keys(): - if request.data['pdf_sertifikat'].content_type == 'application/pdf': - user.sertifikat = request.data['pdf_sertifikat'] - user.save() - return Response({}, status=status.HTTP_200_OK) - else: - return Response({}, status=status.HTTP_415_UNSUPPORTED_MEDIA_TYPE) + return self.__profile_helper('pdf_sertifikat', request, user) + elif 'pdf_file' in request.data.keys(): + return self.__profile_helper('pdf_file', request, user) - if 'pdf_file' in request.data.keys(): - if request.data['pdf_file'].content_type == 'application/pdf': - user.ui_ux_portofolio = request.data['pdf_file'] - user.save() - return Response({}, status=status.HTTP_200_OK) - else: - return Response({}, status=status.HTTP_415_UNSUPPORTED_MEDIA_TYPE) + if 'github_url' in request.data.keys() and not re.search(github_url_pattern, request.data['github_url']): return Response({'Error': "Pastikan link github yang anda tulis benar. (Berpola : https://github.com/<username>"}, status=status.HTTP_400_BAD_REQUEST) @@ -85,6 +76,17 @@ class StudentViewSet(viewsets.ModelViewSet): else: return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST) + def __profile_helper(self, key, request, user): + if request.data[key].content_type == 'application/pdf': + user.sertifikat = request.data[key] + user.save() + return Response({}, status=status.HTTP_200_OK) + else: + return Response({}, status=status.HTTP_415_UNSUPPORTED_MEDIA_TYPE) + + + + @detail_route(methods=['get'], permission_classes=[IsAdminOrStudent]) def transcript(self, request, pk): """ -- GitLab