more flexible auth.wiki, thanks Alan
This commit is contained in:
@@ -1 +1 @@
|
|||||||
Version 2.00.1 (2012-08-28 10:44:48) rc4
|
Version 2.00.1 (2012-08-28 10:54:03) rc4
|
||||||
|
|||||||
+48
-28
@@ -3141,14 +3141,18 @@ class Auth(object):
|
|||||||
new_record.update(fields)
|
new_record.update(fields)
|
||||||
id = archive_table.insert(**new_record)
|
id = archive_table.insert(**new_record)
|
||||||
return id
|
return id
|
||||||
def wiki(self,slug=None,env=None,manage_permissions=False,force_prefix=''):
|
|
||||||
|
def wiki(self,slug=None,env=None,manage_permissions=False,force_prefix='', resolve=True):
|
||||||
if not hasattr(self,'_wiki'):
|
if not hasattr(self,'_wiki'):
|
||||||
self._wiki = Wiki(self,
|
self._wiki = Wiki(self,
|
||||||
manage_permissions=manage_permissions,
|
manage_permissions=manage_permissions,
|
||||||
force_prefix=force_prefix,env=env)
|
force_prefix=force_prefix,env=env)
|
||||||
else:
|
else:
|
||||||
self._wiki.env.update(env or {})
|
self._wiki.env.update(env or {})
|
||||||
return self._wiki.read(slug)['content'] if slug else self._wiki()
|
# if resolve is set to True, process request as wiki call
|
||||||
|
# resolve=False allows initial setup without wiki redirection
|
||||||
|
if resolve:
|
||||||
|
return self._wiki.read(slug)['content'] if slug else self._wiki()
|
||||||
|
|
||||||
class Crud(object):
|
class Crud(object):
|
||||||
|
|
||||||
@@ -4490,32 +4494,48 @@ class Wiki(object):
|
|||||||
self.host = current.request.env.http_host
|
self.host = current.request.env.http_host
|
||||||
perms = self.manage_permissions = manage_permissions
|
perms = self.manage_permissions = manage_permissions
|
||||||
db = auth.db
|
db = auth.db
|
||||||
db.define_table(
|
table_definitions = {
|
||||||
'wiki_page',
|
'wiki_page':{
|
||||||
Field('slug',
|
'args':[
|
||||||
requires=[IS_SLUG(),IS_NOT_IN_DB(db,'wiki_page.slug')],
|
Field('slug',
|
||||||
readable=False,writable=False),
|
requires=[IS_SLUG(),
|
||||||
Field('title',unique=True),
|
IS_NOT_IN_DB(db,'wiki_page.slug')],
|
||||||
Field('body','text',notnull=True),
|
readable=False,writable=False),
|
||||||
Field('tags','list:string'),
|
Field('title',unique=True),
|
||||||
Field('can_read','list:string',writable=perms,readable=perms,
|
Field('body','text',notnull=True),
|
||||||
default=[Wiki.everybody]),
|
Field('tags','list:string'),
|
||||||
Field('can_edit','list:string',writable=perms,readable=perms,
|
Field('can_read','list:string',
|
||||||
default=[Wiki.everybody]),
|
writable=perms,
|
||||||
Field('changelog'),
|
readable=perms,
|
||||||
Field('html','text',readable=False,writable=False,compute=render),
|
default=[Wiki.everybody]),
|
||||||
auth.signature,format='%(title)s')
|
Field('can_edit', 'list:string',
|
||||||
db.define_table(
|
writable=perms,readable=perms,
|
||||||
'wiki_tag',
|
default=[Wiki.everybody]),
|
||||||
Field('name'),
|
Field('changelog'),
|
||||||
Field('wiki_page',db.wiki_page),
|
Field('html','text',compute=render,
|
||||||
auth.signature,format='%(name)s')
|
readable=False, writable=False),
|
||||||
db.define_table(
|
auth.signature],
|
||||||
'wiki_media',
|
'vars':{'format':'%(title)s'}},
|
||||||
Field('wiki_page',db.wiki_page),
|
'wiki_tag':{
|
||||||
Field('title',required=True),
|
'args':[
|
||||||
Field('file','upload',required=True),
|
Field('name'),
|
||||||
auth.signature,format='%(title)s')
|
Field('wiki_page','reference wiki_page'),
|
||||||
|
auth.signature],
|
||||||
|
'vars':{'format':'%(name)s'}},
|
||||||
|
'wiki_media':{
|
||||||
|
'args':[
|
||||||
|
Field('wiki_page','reference wiki_page'),
|
||||||
|
Field('title',required=True),
|
||||||
|
Field('file','upload',required=True),
|
||||||
|
auth.signature],
|
||||||
|
'vars':{'format':'%(title)s'}}
|
||||||
|
}
|
||||||
|
|
||||||
|
# define only non-existent tables
|
||||||
|
for key, value in table_definitions.iteritems():
|
||||||
|
if not key in db.tables():
|
||||||
|
db.define_table(key, *value['args'], **value['vars'])
|
||||||
|
|
||||||
def update_tags_insert(page,id,db=db):
|
def update_tags_insert(page,id,db=db):
|
||||||
for tag in page.tags or []:
|
for tag in page.tags or []:
|
||||||
tag = tag.strip().lower()
|
tag = tag.strip().lower()
|
||||||
|
|||||||
Reference in New Issue
Block a user