From aa5215d6034a9575e6a3f1cfa49ed9c7ad3f0ea1 Mon Sep 17 00:00:00 2001 From: Oleg Lavrovsky Date: Mon, 3 Jul 2017 16:42:27 +0200 Subject: [PATCH] Feedler APIv2 integrated --- feedler/__init__.py | 4 +++- feedler/api.py | 7 +++++++ feedler/endpoints.py | 26 ++++++++++++++++++++++++++ feedler/routes.py | 19 ------------------- feedler/urls.py | 10 ++++++++++ feedler/views.py | 3 --- publichealth/settings/base.py | 3 +++ publichealth/urls.py | 5 ++++- 8 files changed, 53 insertions(+), 24 deletions(-) create mode 100644 feedler/api.py create mode 100644 feedler/endpoints.py delete mode 100644 feedler/routes.py create mode 100644 feedler/urls.py delete mode 100644 feedler/views.py diff --git a/feedler/__init__.py b/feedler/__init__.py index 4037eda..a522364 100644 --- a/feedler/__init__.py +++ b/feedler/__init__.py @@ -8,10 +8,12 @@ FEEDLER_APPS = ( # Wagtail apps 'wagtail.wagtailcore', 'wagtail.wagtailadmin', - 'wagtail.contrib.wagtailroutablepage', 'wagtail.contrib.modeladmin', + 'wagtail.contrib.wagtailroutablepage', + 'wagtail.api.v2', # Third-party apps + 'rest_framework', # My apps 'feedler', diff --git a/feedler/api.py b/feedler/api.py new file mode 100644 index 0000000..9dbcffc --- /dev/null +++ b/feedler/api.py @@ -0,0 +1,7 @@ +from wagtail.api.v2.router import WagtailAPIRouter +from .endpoints import EntriesAPIEndpoint + +# Create the router. "wagtailapi" is the URL namespace +api_router = WagtailAPIRouter('wagtailapi') + +api_router.register_endpoint('entries', EntriesAPIEndpoint) diff --git a/feedler/endpoints.py b/feedler/endpoints.py new file mode 100644 index 0000000..3bafe75 --- /dev/null +++ b/feedler/endpoints.py @@ -0,0 +1,26 @@ +# -*- coding: utf-8 -*- + +from wagtail.contrib.wagtailapi.endpoints import BaseAPIEndpoint +from wagtail.contrib.wagtailapi.serializers import BaseSerializer +from wagtail.contrib.wagtailapi.filters import FieldsFilter, OrderingFilter, SearchFilter +from wagtail.contrib.wagtailapi.pagination import WagtailPagination + +from .models import Entry + +class EntrySerializer(BaseSerializer): + pass + +class EntriesAPIEndpoint(BaseAPIEndpoint): + base_serializer_class = EntrySerializer + filter_backends = [FieldsFilter, OrderingFilter, SearchFilter] + extra_api_fields = [ + 'title', + 'author', + 'link', + 'visual', + 'content', + 'tags', + 'published', + ] + name = 'entries' + model = Entry diff --git a/feedler/routes.py b/feedler/routes.py deleted file mode 100644 index aa2e5bc..0000000 --- a/feedler/routes.py +++ /dev/null @@ -1,19 +0,0 @@ -# -*- coding: utf-8 -*- - -from datetime import date - -from django.utils.dateformat import DateFormat -from django.utils.formats import date_format -from django.utils.translation import ugettext_lazy as _ -from django.conf import settings - -from wagtail.contrib.wagtailroutablepage.models import RoutablePageMixin, route -from wagtail.wagtailcore.models import Page -from wagtail.wagtailsearch.models import Query - -class FeedlerRoutes(RoutablePageMixin): - - @route(r'^$') - def entries_list(self, request, *args, **kwargs): - self.entries = self.get_entries() - return Page.serve(self, request, *args, **kwargs) diff --git a/feedler/urls.py b/feedler/urls.py new file mode 100644 index 0000000..5289b17 --- /dev/null +++ b/feedler/urls.py @@ -0,0 +1,10 @@ +from django.conf.urls import include, url +from django.conf import settings +from django.contrib import admin +from django.conf.urls.i18n import i18n_patterns + +from .api import api_router + +urlpatterns = [ + url(r'^api/v2/', api_router.urls), +] diff --git a/feedler/views.py b/feedler/views.py deleted file mode 100644 index 91ea44a..0000000 --- a/feedler/views.py +++ /dev/null @@ -1,3 +0,0 @@ -from django.shortcuts import render - -# Create your views here. diff --git a/publichealth/settings/base.py b/publichealth/settings/base.py index fb02160..13a16c0 100644 --- a/publichealth/settings/base.py +++ b/publichealth/settings/base.py @@ -42,6 +42,9 @@ INSTALLED_APPS = [ 'wagtail.wagtailadmin', 'wagtail.wagtailcore', + 'wagtail.api.v2', + 'rest_framework', + 'modelcluster', 'compressor', 'taggit', diff --git a/publichealth/urls.py b/publichealth/urls.py index 1b7d87a..b7d6cbb 100644 --- a/publichealth/urls.py +++ b/publichealth/urls.py @@ -6,13 +6,16 @@ from django.conf.urls.i18n import i18n_patterns from wagtail.wagtailadmin import urls as wagtailadmin_urls from wagtail.wagtaildocs import urls as wagtaildocs_urls from wagtail.wagtailcore import urls as wagtail_urls + from puput import urls as puput_urls +from feedler import urls as feedler_urls from publichealth.search import views as search_views - urlpatterns = [ url(r'', include(puput_urls)), + url(r'', include(feedler_urls)), + url(r'^django-admin/', include(admin.site.urls)), url(r'^admin/', include(wagtailadmin_urls)),