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: appengine, django, Wiki
TiddlyWiki - a reusable non-linear personal web notebook因为公司的一些政策的限制,我不能够给自己装个 MediaWiki 的 VM 来写文档,所以我找到了 TiddlyWiki 。其实几个月前就看到了,但当时一心要找个小 Wiki Server 给 OpenWRT ,所以就没试这个 offline 的。不过今天找来一试,觉得还是很不错的。Offline 其实是个很大的优点。在路上就可以写,连上网了只要 Sync Up 一下,就更新了。当然,不是很适合多人写作,不过这样也回避了用户管理等安全问题。
Labels: Web, Wiki
WIKI.LRFZ.COM
WIKI.LRFZ.COM works now. I got Didiwiki at my gateway. It's small and fast, implemented with C. Please access it at
http://wiki.lrfz.com .
Labels: OpenWRT, Web, Wiki