Files
postgres-web/pgweb/news/views.py
Magnus Hagander 689f9d9b8b 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.
2018-01-22 12:28:46 +01:00

45 lines
1.3 KiB
Python

from django.shortcuts import render_to_response, get_object_or_404
from django.http import HttpResponse, Http404
from pgweb.util.decorators import login_required
from pgweb.util.contexts import NavContext
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('/'))
news = NewsArticle.objects.filter(approved=True, tags=tag)
else:
tag = None
news = NewsArticle.objects.filter(approved=True)
return render_to_response('news/newsarchive.html', {
'news': news,
'tag': tag,
'newstags': NewsTag.objects.all(),
}, NavContext(request, 'about'))
def item(request, itemid, throwaway=None):
news = get_object_or_404(NewsArticle, pk=itemid)
if not news.approved:
raise Http404
return render_to_response('news/item.html', {
'obj': news,
'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,
redirect='/account/edit/news/')