Initial import for public release...
[archweb_dev-nj.git] / wiki / views.py
blobc78da37de02f0a4dbba991e242dca301d7d87394
2 # Based on code from http://e-scribe.com/news/210
4 from django.http import HttpResponse, HttpResponseRedirect
5 from django.contrib.auth.decorators import login_required
6 from archlinux.utils import render_template
7 from archlinux.wiki.models import Wikipage
9 @login_required
10 def index(request):
11 """Return a list of all wiki pages"""
12 pages = Wikipage.objects.all().order_by('title')
13 return render_template('wiki/home.html', request, {'pages':pages})
15 def main(request):
16 """Return the Index wiki page"""
17 return HttpResponseRedirect("/wiki/WikiIndex/")
19 @login_required
20 def page(request, title):
21 """Display page, or redirect to root if page doesn't exist yet"""
22 try:
23 page = Wikipage.objects.get(title__exact=title)
24 return render_template('wiki/page.html', request, {'page':page})
25 except Wikipage.DoesNotExist:
26 return HttpResponseRedirect("/wiki/edit/%s/" % title)
28 @login_required
29 def edit(request, title):
30 """Process submitted page edits (POST) or display editing form (GET)"""
31 if request.POST:
32 try:
33 page = Wikipage.objects.get(title__exact=title)
34 except Wikipage.DoesNotExist:
35 # Must be a new one; let's create it
36 page = Wikipage(title=title)
37 page.content = request.POST['content']
38 page.title = request.POST['title']
39 page.last_author = request.user
40 page.save()
41 return HttpResponseRedirect("/wiki/" + page.title + "/")
42 else:
43 try:
44 page = Wikipage.objects.get(title__exact=title)
45 except Wikipage.DoesNotExist:
46 # create a dummy page object -- note that it is not saved!
47 page = Wikipage(title=title)
48 page.body = "<!-- Enter content here -->"
49 return render_template('wiki/edit.html', request, {'page':page})
51 @login_required
52 def delete(request):
53 """Delete a page"""
54 if request.POST:
55 title = request.POST['title']
56 try:
57 page = Wikipage.objects.get(title__exact=title)
58 except Wikipage.DoesNotExist:
59 return HttpResponseRedirect("/wiki/")
60 page.delete()
61 return HttpResponseRedirect("/wiki/")