diff --git a/fet2020/posts/views.py b/fet2020/posts/views.py index 7b114e18..6a8b5f9d 100644 --- a/fet2020/posts/views.py +++ b/fet2020/posts/views.py @@ -1,43 +1,36 @@ from django.shortcuts import render from django.http import HttpResponse, JsonResponse -from collections import deque +from django_filters.rest_framework import DjangoFilterBackend +from django.core.cache import cache +from django.utils.text import slugify +from django.utils import timezone -from .models import Post, PostSerializer from taggit.models import Tag from rest_framework import viewsets from rest_framework import permissions -from django_filters.rest_framework import DjangoFilterBackend -from django.core.cache import cache +from .models import Post, PostSerializer -from django.utils.text import slugify -from django.utils import timezone +from collections import deque -def get_next_dict(): - posts = Post.article_objects.order_by('-public_date').values('slug') - print(posts) - d = {} - print(d) - for k,v in enumerate(posts): - if k == len(posts) - 1: - break - d[v['slug']] = posts[k+1]['slug'] - print(d) - return d +################## +# RENDERED VIEWS # +################## -# Create your views here. def index(request): posts = deque(Post.objects.order_by('-public_date').all()) - f = lambda p: p.tags + f = lambda p: p.tags t = map(f, posts) - + return render(request, 'posts/index.html', {"posts": posts, "tags_list": t}) + def tags(request,tag=""): posts = deque(Post.objects.filter(tags__name=tag)) return render(request, 'posts/index.html', {"posts": posts, "tags_list": None}) - + + def show(request,id=None): if id.isdigit() or id is int: p = Post.objects.get(id=int(id)) @@ -51,9 +44,15 @@ def show(request,id=None): } return render(request, 'posts/show.html', context) -# Ajax function that is called to calculate a slug from the title -def slug_calc(request): +########### +# HELPERS # +########### + +def slug_calc(request): + """ + Ajax function that is called to calculate a slug from the title + """ if request.method == "GET": get = request.GET.copy() title = get['title'] @@ -67,9 +66,11 @@ def slug_calc(request): return HttpResponseServerError("Requires a title field.") -# Ajax function that returns autocomplete suggestions for a given tag input -def tag_complete(request): +def tag_complete(request): + """ + Ajax function that returns autocomplete suggestions for a given tag input + """ if request.method == "GET": get = request.GET.copy() term = get['term'] @@ -81,9 +82,24 @@ def tag_complete(request): tag_array.append(elem.name) return JsonResponse(tag_array, safe=False) - + return HttpResponseServerError("Requires a term field.") + +def get_next_dict(): + #TODO: Docstring + posts = Post.article_objects.order_by('-public_date').values('slug') + print(posts) + d = {} + print(d) + for k,v in enumerate(posts): + if k == len(posts) - 1: + break + d[v['slug']] = posts[k+1]['slug'] + print(d) + return d + + class PostViewSet(viewsets.ModelViewSet): """ API endpoint that allows users to be viewed or edited. @@ -94,6 +110,6 @@ class PostViewSet(viewsets.ModelViewSet): filter_backends = [DjangoFilterBackend] filterset_fields = ['legacy_id', 'slug','legacy_rubrik_id'] lookup_field = 'slug' - + def pre_save(self, obj): obj.image = self.request.FILES.get('image')