From 8412b4d0cc13ec63eb2e7daefcb1821a8f6d2a1e Mon Sep 17 00:00:00 2001 From: mdipierro Date: Sun, 15 Jul 2012 10:03:05 -0500 Subject: [PATCH] improved media handling in auth.wiki(), more work needed --- VERSION | 2 +- gluon/tools.py | 27 ++++++++++++++++----------- 2 files changed, 17 insertions(+), 12 deletions(-) diff --git a/VERSION b/VERSION index 4e5c41f6..4b269dd8 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -Version 2.00.0 (2012-07-14 23:27:03) dev +Version 2.00.0 (2012-07-15 10:02:59) dev diff --git a/gluon/tools.py b/gluon/tools.py index 179eae93..8245a802 100644 --- a/gluon/tools.py +++ b/gluon/tools.py @@ -4366,10 +4366,11 @@ class Wiki(object): db.Field('menu'), db.Field('html','text',readable=False,writable=False, compute=lambda t,env=self.env: \ - MARKMIN(t.body,url=True,env=env).xml()), + MARKMIN(t.body,url=True,environment=env).xml()), auth.signature,format='%(title)s') db.define_table( 'wiki_media', + db.Field('wiki_page',db.wiki_page), db.Field('title',required=True), db.Field('file','upload',required=True), auth.signature,format='%(title)s') @@ -4382,7 +4383,7 @@ class Wiki(object): elif current.request.args(0)=='_pages': return self.pages() elif current.request.args(0)=='_media': - return self.media() + return self.media(current.request.args(1,cast=int)) else: return self.read(current.request.args(0) or 'index') def read(self,slug): @@ -4420,14 +4421,20 @@ class Wiki(object): def pages(self): self.check_authorization() self.auth.db.wiki_page.slug.writable = True - content=SQLFORM.grid(self.auth.db.wiki_page,args=['_pages'], - orderby = self.auth.db.wiki_page.title) - return dict(content=content) - def media(self): - self.check_authorization() - content=SQLFORM.grid(self.auth.db.wiki_media,args=['_media'], - orderby = self.auth.db.wiki_media.title) + content=SQLFORM.smartgrid( + self.auth.db.wiki_page, + args=['_pages'], + orderby = {'wiki_page':self.auth.db.wiki_page.title, + 'wiki_media':self.auth.db.wiki_media.title}) return dict(content=content) + def media(self, id): + request, db = current.request, self.auth.db + media = db.wiki_media(id) + if media: + request.args = [media.file] + return current.response.download(request,db) + else: + raise HTTP(404) def menu(self,controller='default',function='index'): db = self.auth.db request = current.request @@ -4454,8 +4461,6 @@ class Wiki(object): args=('_edit',request.args(0) or 'index')))) submenu.append((current.T('Manage Pages'),None, URL(controller,function,args=('_pages')))) - submenu.append((current.T('Manage Madia'),None, - URL(controller,function,args=('_media')))) menu.append((current.T('[Wiki]'),None,None,submenu)) return menu