From 558c199b20743e38ea42540851cac82812e2116e Mon Sep 17 00:00:00 2001 From: Siarhei Puhach Date: Wed, 23 Oct 2019 11:13:16 +0300 Subject: [PATCH 1/2] Removed duplicate code from api and app --- api/views.py | 25 ++++++++----------------- app/views.py | 47 ++++++++++++++++++++++++++++++----------------- 2 files changed, 38 insertions(+), 34 deletions(-) diff --git a/api/views.py b/api/views.py index afe5246..064e036 100644 --- a/api/views.py +++ b/api/views.py @@ -1,11 +1,12 @@ -from app.models import Tag, Tutorial from django.http import HttpResponse from django.shortcuts import render from rest_framework import status from rest_framework.decorators import api_view from rest_framework.pagination import PageNumberPagination from rest_framework.renderers import JSONRenderer -from taggie.parser import generate_tags + +from app.models import Tag, Tutorial +from app.views import handle_tutorial_post_request from .serializers import TagSerializer, TutorialPOST, TutorialSerializer @@ -39,26 +40,16 @@ def tutorials(request): elif request.method == 'POST': postserializer = TutorialPOST(data=request.data) if postserializer.is_valid(): - link_count = Tutorial.objects.filter( - link=request.data['link']).count() - if link_count == 0: - tags, title = generate_tags(request.data['link']) - if 'other' in tags: + link = request.data['link'] + category = request.data['category'] + result = handle_tutorial_post_request(link, category) + if result is not None: + if result: return JSONResponse( {"message ": "Not a Tutorial link"}, status=status.HTTP_406_NOT_ACCEPTABLE ) else: - tutorial_object = Tutorial.objects.create( - title=title, - link=request.data['link'], - category=request.data['category'] - ) - for tag in tags: - obj, created = Tag.objects.get_or_create(name=tag) - - tag_obj_list = Tag.objects.filter(name__in=tags) - tutorial_object.tags.set(tag_obj_list) return JSONResponse( {"message ": "Created, Thanks"}, status=status.HTTP_201_CREATED ) diff --git a/app/views.py b/app/views.py index 485fa15..700ca6e 100644 --- a/app/views.py +++ b/app/views.py @@ -4,6 +4,7 @@ from django.db.models import Q from django.shortcuts import render from django.views.generic import TemplateView + from taggie.parser import generate_tags from .models import Tag, Tutorial @@ -119,29 +120,41 @@ def get(self, request): def post(self, request): """POST a tutorial""" - link_count = Tutorial.objects.filter( - link=request.POST['tlink']).count() - if link_count == 0: - tags, title = generate_tags(request.POST['tlink']) + link = request.POST['tlink'] + category = request.POST['tcategory'] + result = handle_tutorial_post_request(link, category) + if result is not None: self.context['error'] = 'Not a Tutorial Link, Try Again' - if 'other' in tags: + if result: return render( request, 'contribute.html', self.context ) else: - tutorial_object = Tutorial.objects.create( - title=title, - link=request.POST['tlink'], - category=request.POST['tcategory'] - ) - for tag in tags: - obj, created = Tag.objects.get_or_create(name=tag) - - tag_obj_list = Tag.objects.filter(name__in=tags) - tutorial_object.tags.set(tag_obj_list) - # thankyou.html shouldn't be accessible unless someone successfully posts - # a tutorial + # thankyou.html shouldn't be accessible unless someone successfully posts + # a tutorial return render(request, 'thankyou.html', {'title': 'Thanks!'}) return render(request, 'thankyou.html', {'title': 'Thanks!'}) + + +def handle_tutorial_post_request(link, category): + if Tutorial.objects.filter( + link=link + ).exists(): + tags, title = generate_tags(link) + if 'other' in tags: + return True + else: + tutorial_object = Tutorial.objects.create( + title=title, + link=link, + category=category + ) + tag_obj_list = [] + for tag in tags: + obj, created = Tag.objects.get_or_create(name=tag) + tag_obj_list.append(obj) + + tutorial_object.tags.set(tag_obj_list) + return False From 84c8b526d5b6f229a16ed48036de4f865e59e666 Mon Sep 17 00:00:00 2001 From: Siarhei Puhach Date: Wed, 23 Oct 2019 11:18:09 +0300 Subject: [PATCH 2/2] Removed unnecessary else --- api/views.py | 7 +++---- app/views.py | 7 +++---- 2 files changed, 6 insertions(+), 8 deletions(-) diff --git a/api/views.py b/api/views.py index 064e036..4326f94 100644 --- a/api/views.py +++ b/api/views.py @@ -49,10 +49,9 @@ def tutorials(request): {"message ": "Not a Tutorial link"}, status=status.HTTP_406_NOT_ACCEPTABLE ) - else: - return JSONResponse( - {"message ": "Created, Thanks"}, status=status.HTTP_201_CREATED - ) + return JSONResponse( + {"message ": "Created, Thanks"}, status=status.HTTP_201_CREATED + ) return JSONResponse( {"message ": "Created, Thanks"}, status=status.HTTP_201_CREATED ) diff --git a/app/views.py b/app/views.py index 700ca6e..a4dacb2 100644 --- a/app/views.py +++ b/app/views.py @@ -131,10 +131,9 @@ def post(self, request): 'contribute.html', self.context ) - else: - # thankyou.html shouldn't be accessible unless someone successfully posts - # a tutorial - return render(request, 'thankyou.html', {'title': 'Thanks!'}) + # thankyou.html shouldn't be accessible unless someone successfully posts + # a tutorial + return render(request, 'thankyou.html', {'title': 'Thanks!'}) return render(request, 'thankyou.html', {'title': 'Thanks!'})