Clean up validators, remove old imports.

This commit is contained in:
Ricky Zhou (周家杰) 2008-02-27 20:21:20 -05:00
parent 98f3cf6695
commit 6520579448
7 changed files with 69 additions and 93 deletions

View file

@ -1,10 +1,5 @@
from turbogears import config from turbogears import config
#from fas.fasLDAP import UserAccount
#from fas.fasLDAP import Person
#from fas.fasLDAP import Groups
#from fas.fasLDAP import UserGroup
from fas.model import Groups from fas.model import Groups
from fas.model import PersonRoles from fas.model import PersonRoles
from fas.model import People from fas.model import People

View file

@ -2,7 +2,6 @@ import turbogears
from turbogears import controllers, expose, paginate, identity, redirect, widgets, validate, validators, error_handler from turbogears import controllers, expose, paginate, identity, redirect, widgets, validate, validators, error_handler
from turbogears.database import session from turbogears.database import session
import ldap
import cherrypy import cherrypy
from datetime import datetime from datetime import datetime
@ -10,17 +9,8 @@ import re
import gpgme import gpgme
import StringIO import StringIO
import fas.fasLDAP
from fas.fasLDAP import UserAccount
from fas.fasLDAP import Person
from fas.fasLDAP import Groups
from fas.fasLDAP import UserGroup
from fas.auth import * from fas.auth import *
from fas.user import knownUser, usernameExists
class CLA(controllers.Controller): class CLA(controllers.Controller):
def __init__(self): def __init__(self):

View file

@ -2,15 +2,10 @@ from turbogears import controllers, expose, config
from model import * from model import *
from turbogears import identity, redirect, widgets, validate, validators, error_handler from turbogears import identity, redirect, widgets, validate, validators, error_handler
from cherrypy import request, response from cherrypy import request, response
#from fas.fasLDAP import UserAccount
#from fas.fasLDAP import Person
#from fas.fasLDAP import Groups
##from fas.fasLDAP import UserGroup
from turbogears import exception_handler from turbogears import exception_handler
import turbogears import turbogears
import ldap
import time import time
from operator import itemgetter
from fas.user import User from fas.user import User
from fas.group import Group from fas.group import Group
@ -18,8 +13,6 @@ from fas.cla import CLA
from fas.json_request import JsonRequest from fas.json_request import JsonRequest
#from fas.openid_fas import OpenID #from fas.openid_fas import OpenID
from fas.auth import isAdmin, canAdminGroup, canSponsorGroup, canEditUser
import os import os
import sys import sys
reload(sys) reload(sys)
@ -45,6 +38,7 @@ class Root(controllers.RootController):
json = JsonRequest() json = JsonRequest()
# openid = OpenID() # openid = OpenID()
# TODO: Find a better place for this.
os.environ['GNUPGHOME'] = config.get('gpghome') os.environ['GNUPGHOME'] = config.get('gpghome')
@expose(template="fas.templates.welcome") @expose(template="fas.templates.welcome")

View file

@ -2,25 +2,17 @@ import turbogears
from turbogears import controllers, expose, paginate, identity, redirect, widgets, validate, validators, error_handler from turbogears import controllers, expose, paginate, identity, redirect, widgets, validate, validators, error_handler
from turbogears.database import session from turbogears.database import session
import ldap
import cherrypy import cherrypy
import fas.fasLDAP
#from fas.fasLDAP import UserAccount
#from fas.fasLDAP import Person
#from fas.fasLDAP import Groups
#from fas.fasLDAP import UserGroup
from fas.auth import * from fas.auth import *
from fas.user import knownUser, usernameExists from fas.user import KnownUser
from textwrap import dedent from textwrap import dedent
import re import re
class knownGroup(validators.FancyValidator): class KnownGroup(validators.FancyValidator):
'''Make sure that a group already exists''' '''Make sure that a group already exists'''
def _to_python(self, value, state): def _to_python(self, value, state):
return value.strip() return value.strip()
@ -30,7 +22,7 @@ class knownGroup(validators.FancyValidator):
except InvalidRequestError: except InvalidRequestError:
raise validators.Invalid(_("The group '%s' does not exist.") % value, value, state) raise validators.Invalid(_("The group '%s' does not exist.") % value, value, state)
class unknownGroup(validators.FancyValidator): class UnknownGroup(validators.FancyValidator):
'''Make sure that a group doesn't already exist''' '''Make sure that a group doesn't already exist'''
def _to_python(self, value, state): def _to_python(self, value, state):
return value.strip() return value.strip()
@ -42,29 +34,48 @@ class unknownGroup(validators.FancyValidator):
else: else:
raise validators.Invalid(_("The group '%s' already exists.") % value, value, state) raise validators.Invalid(_("The group '%s' already exists.") % value, value, state)
class createGroup(validators.Schema): class GroupCreate(validators.Schema):
name = validators.All(unknownGroup(not_empty=True, max=10), validators.String(max=32, min=3)) name = validators.All(UnknownGroup(not_empty=True, max=10), validators.String(max=32, min=3))
display_name = validators.NotEmpty display_name = validators.NotEmpty
owner = validators.All(knownUser(not_empty=True, max=10), validators.String(max=32, min=3)) owner = validators.All(knownUser(not_empty=True, max=10), validators.String(max=32, min=3))
prerequisite = knownGroup prerequisite = KnownGroup
#group_type = something #group_type = something
class editGroup(validators.Schema): class GroupSave(validators.Schema):
groupname = validators.All(knownGroup(not_empty=True, max=10), validators.String(max=32, min=3)) groupname = validators.All(KnownGroup(not_empty=True, max=10), validators.String(max=32, min=3))
display_name = validators.NotEmpty display_name = validators.NotEmpty
owner = validators.All(knownUser(not_empty=True, max=10), validators.String(max=32, min=3)) owner = validators.All(knownUser(not_empty=True, max=10), validators.String(max=32, min=3))
prerequisite = knownGroup prerequisite = KnownGroup
#group_type = something #group_type = something
class usernameGroupnameExists(validators.Schema): class GroupApply(validators.Schema):
groupname = validators.All(knownGroup(not_empty=True, max=10), validators.String(max=32, min=3)) groupname = KnownGroup()
targetname = validators.All(knownUser(not_empty=True, max=10), validators.String(max=32, min=3)) targetname = KnownUser()
class groupnameExists(validators.Schema): class GroupSponsor(validators.Schema):
groupname = validators.All(knownGroup(not_empty=True, max=10), validators.String(max=32, min=3)) groupname = KnownGroup()
targetname = KnownUser()
class groupInvite(validators.Schema): class GroupRemove(validators.Schema):
groupname = validators.All(knownGroup(not_empty=True, max=10), validators.String(max=32, min=3)) groupname = KnownGroup()
targetname = KnownUser()
class GroupUpgrade(validators.Schema):
groupname = KnownGroup()
targetname = KnownUser()
class GroupDowngrade(validators.Schema):
groupname = KnownGroup()
targetname = KnownUser()
class GroupView(validators.Schema):
groupname = KnownGroup()
class GroupEdit(validators.Schema):
groupname = KnownGroup()
class GroupInvite(validators.Schema):
groupname = KnownGroup()
target = validators.Email(not_empty=True, strip=True), target = validators.Email(not_empty=True, strip=True),
#class findUser(widgets.WidgetsList): #class findUser(widgets.WidgetsList):
@ -112,7 +123,7 @@ class Group(controllers.Controller):
return dict(users=users, groups=groups) return dict(users=users, groups=groups)
@identity.require(turbogears.identity.not_anonymous()) @identity.require(turbogears.identity.not_anonymous())
@validate(validators=groupnameExists()) @validate(validators=GroupView())
@error_handler(error) @error_handler(error)
@expose(template="fas.templates.group.view") @expose(template="fas.templates.group.view")
def view(self, groupname): def view(self, groupname):
@ -141,7 +152,7 @@ class Group(controllers.Controller):
return dict() return dict()
@identity.require(turbogears.identity.not_anonymous()) @identity.require(turbogears.identity.not_anonymous())
@validate(validators=createGroup()) @validate(validators=GroupCreate())
@error_handler(error) @error_handler(error)
@expose(template="fas.templates.group.new") @expose(template="fas.templates.group.new")
def create(self, name, display_name, owner, group_type, needs_sponsor=0, user_can_remove=1, prerequisite='', joinmsg=''): def create(self, name, display_name, owner, group_type, needs_sponsor=0, user_can_remove=1, prerequisite='', joinmsg=''):
@ -187,7 +198,7 @@ class Group(controllers.Controller):
return dict() return dict()
@identity.require(turbogears.identity.not_anonymous()) @identity.require(turbogears.identity.not_anonymous())
@validate(validators=groupnameExists()) @validate(validators=GroupEdit())
@error_handler(error) @error_handler(error)
@expose(template="fas.templates.group.edit") @expose(template="fas.templates.group.edit")
def edit(self, groupname): def edit(self, groupname):
@ -202,7 +213,7 @@ class Group(controllers.Controller):
return dict(group=group) return dict(group=group)
@identity.require(turbogears.identity.not_anonymous()) @identity.require(turbogears.identity.not_anonymous())
@validate(validators=editGroup()) @validate(validators=GroupSave())
@error_handler(error) @error_handler(error)
@expose(template="fas.templates.group.edit") @expose(template="fas.templates.group.edit")
def save(self, groupname, display_name, owner, group_type, needs_sponsor=0, user_can_remove=1, prerequisite='', joinmsg=''): def save(self, groupname, display_name, owner, group_type, needs_sponsor=0, user_can_remove=1, prerequisite='', joinmsg=''):
@ -252,7 +263,7 @@ class Group(controllers.Controller):
return dict(groups=groups, search=search) return dict(groups=groups, search=search)
@identity.require(turbogears.identity.not_anonymous()) @identity.require(turbogears.identity.not_anonymous())
@validate(validators=usernameGroupnameExists()) @validate(validators=GroupApply())
@error_handler(error) @error_handler(error)
@expose(template='fas.templates.group.view') @expose(template='fas.templates.group.view')
def apply(self, groupname, targetname=None): def apply(self, groupname, targetname=None):
@ -297,7 +308,7 @@ class Group(controllers.Controller):
return dict() return dict()
@identity.require(turbogears.identity.not_anonymous()) @identity.require(turbogears.identity.not_anonymous())
@validate(validators=usernameGroupnameExists()) @validate(validators=GroupSponsor())
@error_handler(error) @error_handler(error)
@expose(template='fas.templates.group.view') @expose(template='fas.templates.group.view')
def sponsor(self, groupname, targetname): def sponsor(self, groupname, targetname):
@ -333,7 +344,7 @@ class Group(controllers.Controller):
return dict() return dict()
@identity.require(turbogears.identity.not_anonymous()) @identity.require(turbogears.identity.not_anonymous())
@validate(validators=usernameGroupnameExists()) @validate(validators=GroupRemove())
@error_handler(error) @error_handler(error)
@expose(template='fas.templates.group.view') @expose(template='fas.templates.group.view')
def remove(self, groupname, targetname): def remove(self, groupname, targetname):
@ -371,7 +382,7 @@ class Group(controllers.Controller):
return dict() return dict()
@identity.require(turbogears.identity.not_anonymous()) @identity.require(turbogears.identity.not_anonymous())
@validate(validators=usernameGroupnameExists()) @validate(validators=GroupUpgrade())
@error_handler(error) @error_handler(error)
@expose(template='fas.templates.group.view') @expose(template='fas.templates.group.view')
def upgrade(self, groupname, targetname): def upgrade(self, groupname, targetname):
@ -412,7 +423,7 @@ class Group(controllers.Controller):
return dict() return dict()
@identity.require(turbogears.identity.not_anonymous()) @identity.require(turbogears.identity.not_anonymous())
@validate(validators=usernameGroupnameExists()) @validate(validators=GroupDowngrade())
@error_handler(error) @error_handler(error)
@expose(template='fas.templates.group.view') @expose(template='fas.templates.group.view')
def downgrade(self, groupname, targetname): def downgrade(self, groupname, targetname):

View file

@ -2,16 +2,8 @@ import turbogears
from turbogears import controllers, expose, paginate, identity, redirect, widgets, validate, validators, error_handler from turbogears import controllers, expose, paginate, identity, redirect, widgets, validate, validators, error_handler
from turbogears.database import session from turbogears.database import session
import ldap
import cherrypy import cherrypy
import fas.fasLDAP
#from fas.fasLDAP import UserAccount
#from fas.fasLDAP import Person
#from fas.fasLDAP import Groups
#from fas.fasLDAP import UserGroup
from fas.auth import * from fas.auth import *
from fas.user import knownUser, usernameExists from fas.user import knownUser, usernameExists

View file

@ -2,20 +2,13 @@ import turbogears
from turbogears import controllers, expose, paginate, identity, redirect, widgets, validate, validators, error_handler, config from turbogears import controllers, expose, paginate, identity, redirect, widgets, validate, validators, error_handler, config
from cherrypy import session from cherrypy import session
import ldap
import cherrypy import cherrypy
import fas.fasLDAP
from openid.server.server import Server as OpenIDServer from openid.server.server import Server as OpenIDServer
from openid.server.server import BROWSER_REQUEST_MODES from openid.server.server import BROWSER_REQUEST_MODES
from openid.server.server import OPENID_PREFIX from openid.server.server import OPENID_PREFIX
from openid.store.filestore import FileOpenIDStore from openid.store.filestore import FileOpenIDStore
from fas.fasLDAP import UserAccount
from fas.fasLDAP import Person
from fas.fasLDAP import Groups
from fas.fasLDAP import UserGroup
from fas.auth import * from fas.auth import *
from fas.user import knownUser, userNameExists from fas.user import knownUser, userNameExists

View file

@ -3,8 +3,6 @@ from turbogears import controllers, expose, paginate, identity, redirect, widget
from turbogears.database import session from turbogears.database import session
import cherrypy import cherrypy
import ldap
import os import os
import re import re
import gpgme import gpgme
@ -22,7 +20,7 @@ import sha
from base64 import b64encode from base64 import b64encode
class knownUser(validators.FancyValidator): class KnownUser(validators.FancyValidator):
'''Make sure that a user already exists''' '''Make sure that a user already exists'''
def _to_python(self, value, state): def _to_python(self, value, state):
return value.strip() return value.strip()
@ -32,7 +30,7 @@ class knownUser(validators.FancyValidator):
except InvalidRequestError: except InvalidRequestError:
raise validators.Invalid(_("'%s' does not exist.") % value, value, state) raise validators.Invalid(_("'%s' does not exist.") % value, value, state)
class nonFedoraEmail(validators.FancyValidator): class NonFedoraEmail(validators.FancyValidator):
'''Make sure that an email address is not @fedoraproject.org''' '''Make sure that an email address is not @fedoraproject.org'''
def _to_python(self, value, state): def _to_python(self, value, state):
return value.strip() return value.strip()
@ -40,7 +38,7 @@ class nonFedoraEmail(validators.FancyValidator):
if value.endswith('@fedoraproject.org'): if value.endswith('@fedoraproject.org'):
raise validators.Invalid(_("To prevent email loops, your email address cannot be @fedoraproject.org."), value, state) raise validators.Invalid(_("To prevent email loops, your email address cannot be @fedoraproject.org."), value, state)
class unknownUser(validators.FancyValidator): class UnknownUser(validators.FancyValidator):
'''Make sure that a user doesn't already exist''' '''Make sure that a user doesn't already exist'''
def _to_python(self, value, state): def _to_python(self, value, state):
return value.strip() return value.strip()
@ -54,7 +52,7 @@ class unknownUser(validators.FancyValidator):
raise validators.Invalid(_("'%s' already exists.") % value, value, state) raise validators.Invalid(_("'%s' already exists.") % value, value, state)
class usernameAllowed(validators.FancyValidator): class ValidUsername(validators.FancyValidator):
'''Make sure that a username isn't blacklisted''' '''Make sure that a username isn't blacklisted'''
def _to_python(self, value, state): def _to_python(self, value, state):
return value.strip() return value.strip()
@ -63,40 +61,43 @@ class usernameAllowed(validators.FancyValidator):
if re.compile(username_blacklist).match(value): if re.compile(username_blacklist).match(value):
raise validators.Invalid(_("'%s' is an illegal username.") % value, value, state) raise validators.Invalid(_("'%s' is an illegal username.") % value, value, state)
class editUser(validators.Schema): class UserSave(validators.Schema):
targetname = validators.All(knownUser(not_empty=True, max=32), validators.String(max=32, min=3)) targetname = KnownUser()
human_name = validators.String(not_empty=True, max=42) human_name = validators.String(not_empty=True, max=42)
#mail = validators.All( #mail = validators.All(
# validators.Email(not_empty=True, strip=True, max=128), # validators.Email(not_empty=True, strip=True, max=128),
# nonFedoraEmail(not_empty=True, strip=True, max=128), # NonFedoraEmail(not_empty=True, strip=True, max=128),
#) #)
#fedoraPersonBugzillaMail = validators.Email(strip=True, max=128) #fedoraPersonBugzillaMail = validators.Email(strip=True, max=128)
#fedoraPersonKeyId- Save this one for later :) #fedoraPersonKeyId- Save this one for later :)
postal_address = validators.String(max=512) postal_address = validators.String(max=512)
class newUser(validators.Schema): class UserCreate(validators.Schema):
username = validators.All( username = validators.All(
unknownUser(not_empty=True, max=10), UnknownUser(),
usernameAllowed(not_empty=True), ValidUsername(not_empty=True),
validators.String(max=32, min=3), validators.String(max=32, min=3),
) )
human_name = validators.String(not_empty=True, max=42) human_name = validators.String(not_empty=True, max=42)
email = validators.All( email = validators.All(
validators.Email(not_empty=True, strip=True), validators.Email(not_empty=True, strip=True),
nonFedoraEmail(not_empty=True, strip=True), NonFedoraEmail(not_empty=True, strip=True),
) )
#fedoraPersonBugzillaMail = validators.Email(strip=True) #fedoraPersonBugzillaMail = validators.Email(strip=True)
postal_address = validators.String(max=512) postal_address = validators.String(max=512)
class changePass(validators.Schema): class UserSetPassword(validators.Schema):
currentpassword = validators.String() currentpassword = validators.String()
# TODO (after we're done with most testing): Add complexity requirements? # TODO (after we're done with most testing): Add complexity requirements?
password = validators.String(min=8) password = validators.String(min=8)
passwordcheck = validators.String() passwordcheck = validators.String()
chained_validators = [validators.FieldsMatch('password', 'passwordcheck')] chained_validators = [validators.FieldsMatch('password', 'passwordcheck')]
class usernameExists(validators.Schema): class UserView(validators.Schema):
username = validators.All(knownUser(max=10), validators.String(max=32, min=3)) username = KnownUser()
class UserEdit(validators.Schema):
username = KnownUser()
def generatePassword(password=None,length=14,salt=''): def generatePassword(password=None,length=14,salt=''):
''' Generate Password ''' ''' Generate Password '''
@ -147,7 +148,7 @@ class User(controllers.Controller):
return dict(tg_errors=tg_errors) return dict(tg_errors=tg_errors)
@identity.require(turbogears.identity.not_anonymous()) @identity.require(turbogears.identity.not_anonymous())
@validate(validators=usernameExists()) @validate(validators=UserView())
@error_handler(error) @error_handler(error)
@expose(template="fas.templates.user.view") @expose(template="fas.templates.user.view")
def view(self, username=None): def view(self, username=None):
@ -176,8 +177,8 @@ class User(controllers.Controller):
return dict(person=person, groups=groups, cla=cla, personal=personal, admin=admin) return dict(person=person, groups=groups, cla=cla, personal=personal, admin=admin)
@identity.require(turbogears.identity.not_anonymous()) @identity.require(turbogears.identity.not_anonymous())
# @validate(validators=usernameExists()) @validate(validators=UserEdit())
# @error_handler(error) @error_handler(error)
@expose(template="fas.templates.user.edit") @expose(template="fas.templates.user.edit")
def edit(self, targetname=None): def edit(self, targetname=None):
'''Edit a user '''Edit a user
@ -195,7 +196,7 @@ class User(controllers.Controller):
return dict(target=target) return dict(target=target)
@identity.require(turbogears.identity.not_anonymous()) @identity.require(turbogears.identity.not_anonymous())
@validate(validators=editUser()) @validate(validators=UserSave())
@error_handler(error) @error_handler(error)
@expose(template='fas.templates.user.edit') @expose(template='fas.templates.user.edit')
def save(self, targetname, human_name, telephone, postal_address, email, ircnick=None, gpg_keyid=None, comments='', timezone='UTC'): def save(self, targetname, human_name, telephone, postal_address, email, ircnick=None, gpg_keyid=None, comments='', timezone='UTC'):
@ -246,7 +247,7 @@ class User(controllers.Controller):
turbogears.redirect('/user/view/%s' % turbogears.identity.current.user_name) turbogears.redirect('/user/view/%s' % turbogears.identity.current.user_name)
return dict() return dict()
@validate(validators=newUser()) @validate(validators=UserCreate())
@error_handler(error) @error_handler(error)
@expose(template='fas.templates.new') @expose(template='fas.templates.new')
def create(self, username, human_name, email, telephone, postal_address): def create(self, username, human_name, email, telephone, postal_address):
@ -285,7 +286,7 @@ class User(controllers.Controller):
return dict() return dict()
@identity.require(turbogears.identity.not_anonymous()) @identity.require(turbogears.identity.not_anonymous())
@validate(validators=changePass()) @validate(validators=UserSetPassword())
@error_handler(error) @error_handler(error)
@expose(template="fas.templates.user.changepass") @expose(template="fas.templates.user.changepass")
def setpass(self, currentpassword, password, passwordcheck): def setpass(self, currentpassword, password, passwordcheck):