Merge read json_request methods into existing methods, add identity requirement in a few places.

This commit is contained in:
Ricky Zhou (周家杰) 2008-02-29 10:24:40 -05:00
parent 8aa7b66979
commit 494cf8fc8d
4 changed files with 13 additions and 49 deletions

View file

@ -59,7 +59,7 @@ parser.add_option('-s', '--server',
class MakeShellAccounts(BaseClient):
def group_list(self, search='*'):
params = {'search' : search}
data = self.send_request('json/group_list', auth=True, input=params)
data = self.send_request('group/list', auth=True, input=params)
return data
def shadow_text(self, people=None):
@ -136,7 +136,7 @@ class MakeShellAccounts(BaseClient):
def people_list(self, search='*'):
params = {'search' : search}
data = self.send_request('json/people_list', auth=True, input=params)
data = self.send_request('user/list', auth=True, input=params)
return data['people']
def make_group_db(self):

View file

@ -112,22 +112,6 @@ class Group(controllers.Controller):
turbogears.redirect('/')
return dict(tg_errors=tg_errors)
@expose(format="json")
def exportShellAccounts(self):
''' Replaces old "exportShellAccounts.py" '''
# TODO: Restrict access to this.
group = Groups.by_name('sysadmin-main')
users = {}
for role in userlist.roles:
if role.status == 'approved':
person = role.member
users[person.username] = {
'password' : person.password,
'ssh_key' : person.ssh_key,
}
groups = Groups.query.all()
return dict(users=users, groups=groups)
@identity.require(turbogears.identity.not_anonymous())
@validate(validators=GroupView())
@error_handler(error)
@ -263,10 +247,10 @@ class Group(controllers.Controller):
groups = filter(lambda group: canViewGroup(person, group), groups)
if len(groups) <= 0:
turbogears.flash(_("No Groups found matching '%s'") % search)
groups = {}
if self.jsonRequest():
return ({'groups': groups})
return dict(groups=groups, search=search)
memberships = {}
for group in groups:
memberships[group.id] = group.approved_roles
return dict(groups=groups, search=search, memberships=memberships)
@identity.require(turbogears.identity.not_anonymous())
@validate(validators=GroupApply())

View file

@ -2,16 +2,8 @@ import turbogears
from turbogears import controllers, expose, paginate, identity, redirect, widgets, validate, validators, error_handler
from turbogears.database import session
from cherrypy import request, response
import cherrypy
from fas.auth import *
from textwrap import dedent
import re
class JsonRequest(controllers.Controller):
def __init__(self):
'''Create a JsonRequest Controller.'''
@ -20,18 +12,4 @@ class JsonRequest(controllers.Controller):
def index(self):
'''Perhaps show a nice explanatory message about groups here?'''
return dict(help='This is a json interface')
@expose("json", allow_json=True)
def group_list(self, search='*'):
re_search = re.sub(r'\*', r'%', search).lower()
groups = Groups.query.filter(Groups.name.like(re_search)).order_by('name')
memberships = {}
for group in groups:
memberships[group.id] = group.approved_roles
return dict(groups=groups, memberships=memberships)
@expose("json", allow_json=True)
def people_list(self, search='*'):
re_search = re.sub(r'\*', r'%', search).lower()
people = People.query.filter(People.username.like(re_search)).order_by('username')
return dict(people=people)

View file

@ -235,7 +235,9 @@ class User(controllers.Controller):
turbogears.redirect("/user/view/%s" % target.username)
return dict(target=target)
@identity.require(turbogears.identity.in_group("accounts")) #TODO: Use auth.py
# TODO: Decide who is allowed to see this.
#@identity.require(turbogears.identity.in_group("accounts")) #TODO: Use auth.py
@identity.require(turbogears.identity.not_anonymous())
@expose(template="fas.templates.user.list", allow_json=True)
def list(self, search="a*"):
'''List users
@ -244,11 +246,9 @@ class User(controllers.Controller):
people = People.query.filter(People.username.like(re_search)).order_by('username')
if people.count() < 0:
turbogears.flash(_("No users found matching '%s'") % search)
if self.jsonRequest():
return ({'users': people})
return dict(people=people, search=search)
@identity.require(turbogears.identity.not_anonymous())
@expose(template='fas.templates.user.new')
def new(self):
if turbogears.identity.not_anonymous():
@ -256,6 +256,7 @@ class User(controllers.Controller):
turbogears.redirect('/user/view/%s' % turbogears.identity.current.user_name)
return dict()
@identity.require(turbogears.identity.not_anonymous())
@validate(validators=UserCreate())
@error_handler(error)
@expose(template='fas.templates.new')
@ -409,6 +410,7 @@ class User(controllers.Controller):
return dict(cert=certdump, key=keydump)
# Not sure where to take this yet.
@identity.require(turbogears.identity.not_anonymous())
@expose(format="json")
def search(self, username=None, groupname=None):
people = People.query.filter(People.username.like('%%%s%%' % username))