From 689f9d9b8bb72c77f0fa889492c3f813088e19a6 Mon Sep 17 00:00:00 2001 From: Magnus Hagander Date: Mon, 22 Jan 2018 12:28:46 +0100 Subject: [PATCH] Add view that lists all available tags as json For external consumption. Only tag and description is viewed, but URLs to the feeds and pages can easily be constructed using it. --- pgweb/news/views.py | 10 +++++++++- pgweb/urls.py | 1 + 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/pgweb/news/views.py b/pgweb/news/views.py index a20f456b..1c2b093a 100644 --- a/pgweb/news/views.py +++ b/pgweb/news/views.py @@ -1,5 +1,5 @@ from django.shortcuts import render_to_response, get_object_or_404 -from django.http import Http404 +from django.http import HttpResponse, Http404 from pgweb.util.decorators import login_required from pgweb.util.contexts import NavContext @@ -8,6 +8,8 @@ from pgweb.util.helpers import simple_form from models import NewsArticle, NewsTag from forms import NewsArticleForm +import json + def archive(request, tag=None, paging=None): if tag: tag = get_object_or_404(NewsTag,urlname=tag.strip('/')) @@ -30,6 +32,12 @@ def item(request, itemid, throwaway=None): 'newstags': NewsTag.objects.all(), }, NavContext(request, 'about')) +def taglist_json(request): + return HttpResponse(json.dumps({ + 'tags': [{'name': t.urlname, 'description': t.description} for t in NewsTag.objects.distinct('urlname')], + }), content_type='application/json') + + @login_required def form(request, itemid): return simple_form(NewsArticle, itemid, request, NewsArticleForm, diff --git a/pgweb/urls.py b/pgweb/urls.py index 04e6d610..1dba7ccf 100644 --- a/pgweb/urls.py +++ b/pgweb/urls.py @@ -21,6 +21,7 @@ urlpatterns = patterns('', (r'^about/newsarchive/([^/]+/)?$', 'pgweb.news.views.archive'), (r'^about/news/(\d+)(-.*)?/$', 'pgweb.news.views.item'), + (r'^about/news/taglist.json/$', 'pgweb.news.views.taglist_json'), (r'^about/events/$', 'pgweb.events.views.main'), (r'^about/eventarchive/$', 'pgweb.events.views.archive'), (r'^about/eventarchive/training/$', 'pgweb.events.views.trainingarchive'), -- 2.39.5