Add view that lists all available tags as json
authorMagnus Hagander <magnus@hagander.net>
Mon, 22 Jan 2018 11:28:46 +0000 (12:28 +0100)
committerMagnus Hagander <magnus@hagander.net>
Mon, 22 Jan 2018 11:28:46 +0000 (12:28 +0100)
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
pgweb/urls.py

index a20f456b93ea7ea3888587cf98849be76dbfc246..1c2b093a9114c1950b65995c987b3093322b8f41 100644 (file)
@@ -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,
index 04e6d61061d967f888fe69f7f5e665e8a54637ed..1dba7ccfdb643bbc352c04e61bc3502dcdc2b613 100644 (file)
@@ -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'),