Thursday, March 5, 2009

Django-wiki For AppEngine

Django-wiki is a very basic Wiki based on Django. It costed me a few minutes to port it to AppEngine. The patch against http://github.com/sneeu/django-wiki/tree/master current repository:


diff -ruN wiki/admin.py appengine-wiki/admin.py
--- wiki/admin.py 2008-12-08 10:58:24.000000000 +0800
+++ appengine-wiki/admin.py 2009-03-06 14:24:06.000000000 +0800
@@ -2,5 +2,10 @@

from models import Page

+#admin.site.register(Page)
+
+class PageAdmin(admin.ModelAdmin):
+ model = Page
+
+admin.site.register(Page, PageAdmin)

-admin.site.register(Page)
diff -ruN wiki/models.py appengine-wiki/models.py
--- wiki/models.py 2008-12-08 10:58:24.000000000 +0800
+++ appengine-wiki/models.py 2009-03-06 14:16:21.000000000 +0800
@@ -1,18 +1,22 @@
from django.db import models
+from google.appengine.ext import db

from templatetags.wiki import wikify


-class Page(models.Model):
- name = models.CharField(max_length=255, unique=True)
- content = models.TextField()
- rendered = models.TextField()
+class Page(db.Model):
+# name = models.CharField(max_length=255, unique=True)
+# content = models.TextField()
+# rendered = models.TextField()
+ name = db.StringProperty(required=True)
+ content = db.TextProperty(default='')
+ rendered = db.TextProperty(default='')

- class Meta:
- ordering = ('name', )
+# class Meta:
+# ordering = ('name', )

def __unicode__(self):
- return self.name
+ return u'%s' % self.name

def save(self, *args, **kwargs):
self.rendered = wikify(self.content)
diff -ruN wiki/views.py appengine-wiki/views.py
--- wiki/views.py 2008-12-08 10:58:24.000000000 +0800
+++ appengine-wiki/views.py 2009-03-06 14:17:55.000000000 +0800
@@ -8,14 +8,16 @@

def index(request):
"""Lists all pages stored in the wiki."""
- pages = Page.objects.all()
+# pages = Page.objects.all()
+ pages = Page.all()
return render_to_response('wiki/index.html', {'pages': pages})


def view(request, name):
"""Shows a single wiki page."""
try:
- page = Page.objects.get(name=name)
+# page = Page.objects.get(name=name)
+ page = Page.gql("WHERE name = :1", name).get()
except Page.DoesNotExist:
page = Page(name=name)

@@ -25,7 +27,8 @@
def edit(request, name):
"""Allows users to edit wiki pages."""
try:
- page = Page.objects.get(name=name)
+# page = Page.objects.get(name=name)
+ page = Page.gql("WHERE name = :1", name).get()
except Page.DoesNotExist:
page = None

@@ -33,9 +36,8 @@
form = PageForm(request.POST)
if form.is_valid():
if not page:
- page = Page()
- page.name = form.cleaned_data['name']
- page.content = form.cleaned_data['content']
+ page = Page(name = form.cleaned_data['name'],
+ content = form.cleaned_data['content'])

page.save()
return HttpResponseRedirect('../../%s/' % page.name)

Labels: , ,

0 Comments:

Post a Comment

<< Home