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