2007-11-03 00:45:10 -07:00
|
|
|
#
|
|
|
|
# Based on code from http://e-scribe.com/news/210
|
|
|
|
#
|
|
|
|
from django.http import HttpResponse, HttpResponseRedirect
|
|
|
|
from django.contrib.auth.decorators import login_required
|
2008-03-08 00:13:41 -08:00
|
|
|
from archweb_dev.main.utils import render_response
|
|
|
|
from archweb_dev.main.models import Wikipage
|
2007-11-03 00:45:10 -07:00
|
|
|
|
|
|
|
@login_required
|
|
|
|
def index(request):
|
2007-12-29 15:34:02 -08:00
|
|
|
"""Return a list of all wiki pages"""
|
|
|
|
pages = Wikipage.objects.all().order_by('title')
|
|
|
|
return render_response(request, 'wiki/home.html', {'pages':pages})
|
2007-11-03 00:45:10 -07:00
|
|
|
|
|
|
|
def main(request):
|
2007-12-29 15:34:02 -08:00
|
|
|
"""Return the Index wiki page"""
|
|
|
|
return HttpResponseRedirect("/wiki/WikiIndex/")
|
2007-11-03 00:45:10 -07:00
|
|
|
|
|
|
|
@login_required
|
|
|
|
def page(request, title):
|
2007-12-29 15:34:02 -08:00
|
|
|
"""Display page, or redirect to root if page doesn't exist yet"""
|
|
|
|
try:
|
|
|
|
page = Wikipage.objects.get(title__exact=title)
|
|
|
|
return render_response(request, 'wiki/page.html', {'page':page})
|
|
|
|
except Wikipage.DoesNotExist:
|
|
|
|
return HttpResponseRedirect("/wiki/edit/%s/" % title)
|
2007-11-03 00:45:10 -07:00
|
|
|
|
|
|
|
@login_required
|
|
|
|
def edit(request, title):
|
2007-12-29 15:34:02 -08:00
|
|
|
"""Process submitted page edits (POST) or display editing form (GET)"""
|
|
|
|
if request.POST:
|
|
|
|
try:
|
|
|
|
page = Wikipage.objects.get(title__exact=title)
|
|
|
|
except Wikipage.DoesNotExist:
|
|
|
|
# Must be a new one; let's create it
|
|
|
|
page = Wikipage(title=title)
|
|
|
|
page.content = request.POST['content']
|
|
|
|
page.title = request.POST['title']
|
|
|
|
page.last_author = request.user
|
|
|
|
page.save()
|
|
|
|
return HttpResponseRedirect("/wiki/" + page.title + "/")
|
|
|
|
else:
|
|
|
|
try:
|
|
|
|
page = Wikipage.objects.get(title__exact=title)
|
|
|
|
except Wikipage.DoesNotExist:
|
|
|
|
# create a dummy page object -- note that it is not saved!
|
|
|
|
page = Wikipage(title=title)
|
|
|
|
page.body = "<!-- Enter content here -->"
|
|
|
|
return render_response(request, 'wiki/edit.html', {'page':page})
|
2007-11-03 00:45:10 -07:00
|
|
|
|
|
|
|
@login_required
|
|
|
|
def delete(request):
|
2007-12-29 15:34:02 -08:00
|
|
|
"""Delete a page"""
|
|
|
|
if request.POST:
|
|
|
|
title = request.POST['title']
|
|
|
|
try:
|
|
|
|
page = Wikipage.objects.get(title__exact=title)
|
|
|
|
except Wikipage.DoesNotExist:
|
|
|
|
return HttpResponseRedirect("/wiki/")
|
|
|
|
page.delete()
|
|
|
|
return HttpResponseRedirect("/wiki/")
|
2007-12-29 16:42:55 -08:00
|
|
|
|
|
|
|
# vim: set ts=4 sw=4 et:
|
|
|
|
|