auth.wiki(restrict_search=True) authors can only search their own pages
This commit is contained in:
@@ -1 +1 @@
|
|||||||
Version 2.0.8 (2012-09-11 09:55:54) stable
|
Version 2.0.8 (2012-09-11 10:25:49) stable
|
||||||
|
|||||||
+12
-6
@@ -3157,12 +3157,15 @@ class Auth(object):
|
|||||||
env=None,
|
env=None,
|
||||||
render=None,
|
render=None,
|
||||||
manage_permissions=False,
|
manage_permissions=False,
|
||||||
force_prefix='',
|
force_prefix='',
|
||||||
|
restrict_search=False,
|
||||||
resolve=True):
|
resolve=True):
|
||||||
if not hasattr(self,'_wiki'):
|
if not hasattr(self,'_wiki'):
|
||||||
self._wiki = Wiki(self,render=render,
|
self._wiki = Wiki(self,render=render,
|
||||||
manage_permissions=manage_permissions,
|
manage_permissions=manage_permissions,
|
||||||
force_prefix=force_prefix,env=env)
|
force_prefix=force_prefix,
|
||||||
|
restrict_search=restrict_search,
|
||||||
|
env=env)
|
||||||
else:
|
else:
|
||||||
self._wiki.env.update(env or {})
|
self._wiki.env.update(env or {})
|
||||||
# if resolve is set to True, process request as wiki call
|
# if resolve is set to True, process request as wiki call
|
||||||
@@ -4506,7 +4509,8 @@ class Wiki(object):
|
|||||||
controller, function, args = items[0], items[1], items[2:]
|
controller, function, args = items[0], items[1], items[2:]
|
||||||
return LOAD(controller, function, args=args, ajax=True).xml()
|
return LOAD(controller, function, args=args, ajax=True).xml()
|
||||||
def __init__(self,auth,env=None,render='markmin',
|
def __init__(self,auth,env=None,render='markmin',
|
||||||
manage_permissions=False,force_prefix=''):
|
manage_permissions=False,force_prefix='',
|
||||||
|
restrict_search=False):
|
||||||
self.env = env or {}
|
self.env = env or {}
|
||||||
self.env['component'] = Wiki.component
|
self.env['component'] = Wiki.component
|
||||||
if render == 'markmin': render=self.markmin_render
|
if render == 'markmin': render=self.markmin_render
|
||||||
@@ -4518,6 +4522,7 @@ class Wiki(object):
|
|||||||
self.force_prefix = force_prefix
|
self.force_prefix = force_prefix
|
||||||
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
|
||||||
|
self.restrict_search = restrict_search
|
||||||
db = auth.db
|
db = auth.db
|
||||||
table_definitions = {
|
table_definitions = {
|
||||||
'wiki_page':{
|
'wiki_page':{
|
||||||
@@ -4826,9 +4831,8 @@ class Wiki(object):
|
|||||||
URL(controller,function,args=('_pages'))))
|
URL(controller,function,args=('_pages'))))
|
||||||
submenu.append((current.T('Edit Menu'),None,
|
submenu.append((current.T('Edit Menu'),None,
|
||||||
URL(controller,function,args=('_edit','wiki-menu'))))
|
URL(controller,function,args=('_edit','wiki-menu'))))
|
||||||
# if self.can_search():
|
submenu.append((current.T('Search Pages'),None,
|
||||||
submenu.append((current.T('Search Pages'),None,
|
URL(controller,function,args=('_search'))))
|
||||||
URL(controller,function,args=('_search'))))
|
|
||||||
return menu
|
return menu
|
||||||
|
|
||||||
def search(self,tags=None,query=None,cloud=True,preview=True,
|
def search(self,tags=None,query=None,cloud=True,preview=True,
|
||||||
@@ -4857,6 +4861,8 @@ class Wiki(object):
|
|||||||
query = (db.wiki_page.id==db.wiki_tag.wiki_page)&\
|
query = (db.wiki_page.id==db.wiki_tag.wiki_page)&\
|
||||||
(db.wiki_tag.name.belongs(tags))
|
(db.wiki_tag.name.belongs(tags))
|
||||||
query = query|db.wiki_page.title.startswith(request.vars.q)
|
query = query|db.wiki_page.title.startswith(request.vars.q)
|
||||||
|
if self.restrict_search and not self.manage():
|
||||||
|
query = query&(db.wiki_page.created_by==self.auth.user_id)
|
||||||
pages = db(query).select(
|
pages = db(query).select(
|
||||||
*fields,**dict(orderby=orderby or ~count,
|
*fields,**dict(orderby=orderby or ~count,
|
||||||
groupby=db.wiki_page.id,
|
groupby=db.wiki_page.id,
|
||||||
|
|||||||
Reference in New Issue
Block a user