From 6b7d4e31b6b22395babd815045b77cb4598b0eae Mon Sep 17 00:00:00 2001 From: winkidney Date: Mon, 9 Dec 2019 20:27:13 +0800 Subject: [PATCH 1/5] Feature: Add cached tag-list api for tag-auto-complete --- core/serializers.py | 7 +++++++ core/views.py | 18 ++++++++++++++++++ 2 files changed, 25 insertions(+) diff --git a/core/serializers.py b/core/serializers.py index 7f2005d..f5e4c8a 100644 --- a/core/serializers.py +++ b/core/serializers.py @@ -226,3 +226,10 @@ class BoardSerializer(serializers.HyperlinkedModelSerializer): ) validated_data['submitter'] = user return super(BoardSerializer, self).create(validated_data) + + +class TagAutoCompleteSerializer(serializers.ModelSerializer): + + class Meta: + model = Tag + fields = ('name', ) diff --git a/core/views.py b/core/views.py index 8510626..93310af 100644 --- a/core/views.py +++ b/core/views.py @@ -1,7 +1,10 @@ +from django.utils.decorators import method_decorator +from django.views.decorators.cache import cache_page from django_filters.rest_framework import DjangoFilterBackend from rest_framework import viewsets, mixins, routers from rest_framework.filters import SearchFilter, OrderingFilter from rest_framework.viewsets import GenericViewSet +from taggit.models import Tag from core import serializers as api from core.models import Image, Pin, Board @@ -49,8 +52,23 @@ class BoardAutoCompleteViewSet( pagination_class = None +class TagAutoCompleteViewSet(mixins.ListModelMixin, viewsets.GenericViewSet): + queryset = Tag.objects.all() + serializer_class = api.TagAutoCompleteSerializer + pagination_class = None + + @method_decorator(cache_page(60*5)) + def list(self, request, *args, **kwargs): + return super(TagAutoCompleteViewSet, self).list( + request, + *args, + **kwargs + ) + + drf_router = routers.DefaultRouter() drf_router.register(r'pins', PinViewSet) drf_router.register(r'images', ImageViewSet) drf_router.register(r'boards', BoardViewSet) +drf_router.register(r'tags-auto-complete/', TagAutoCompleteViewSet) drf_router.register(r'boards-auto-complete', BoardAutoCompleteViewSet) From b7f24b83be1140957ede3ff636c1a4bc212dd9d6 Mon Sep 17 00:00:00 2001 From: winkidney Date: Mon, 9 Dec 2019 22:22:00 +0800 Subject: [PATCH 2/5] Feafactor: Move AutoComplete filter function as utils --- .../src/components/pin_edit/FilterSelect.vue | 15 ++------------- pinry-spa/src/components/utils/AutoComplete.js | 15 +++++++++++++++ 2 files changed, 17 insertions(+), 13 deletions(-) create mode 100644 pinry-spa/src/components/utils/AutoComplete.js diff --git a/pinry-spa/src/components/pin_edit/FilterSelect.vue b/pinry-spa/src/components/pin_edit/FilterSelect.vue index 43a510a..5f647eb 100644 --- a/pinry-spa/src/components/pin_edit/FilterSelect.vue +++ b/pinry-spa/src/components/pin_edit/FilterSelect.vue @@ -38,21 +38,10 @@