accounts2/fas/fas controllers.py,1.9,1.10
Michael Patrick McGrath (mmcgrath)
fedora-extras-commits at redhat.com
Fri Apr 27 21:08:52 UTC 2007
Author: mmcgrath
Update of /cvs/fedora/accounts2/fas/fas
In directory cvs-int.fedora.redhat.com:/tmp/cvs-serv7615/fas/fas
Modified Files:
controllers.py
Log Message:
Major UI updates
Index: controllers.py
===================================================================
RCS file: /cvs/fedora/accounts2/fas/fas/controllers.py,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -r1.9 -r1.10
--- controllers.py 26 Apr 2007 19:35:50 -0000 1.9
+++ controllers.py 27 Apr 2007 21:08:49 -0000 1.10
@@ -1,6 +1,6 @@
from turbogears import controllers, expose
# from model import *
-from turbogears import identity, redirect
+from turbogears import identity, redirect, widgets, validate, validators, error_handler
from cherrypy import request, response
from fas.fasLDAP import UserAccount
from fas.fasLDAP import Person
@@ -13,6 +13,34 @@
# import logging
# log = logging.getLogger("fas.controllers")
+
+class knownUser(validators.FancyValidator):
+ def _to_python(self, value, state):
+ return value.strip()
+ def validate_python(self, value, state):
+ p = Person.byUserName(value)
+ if p.cn:
+ raise validators.Invalid("'%s' already axists" % value, value, state)
+
+class newPerson(widgets.WidgetsList):
+# cn = widgets.TextField(label='Username', validator=validators.PlainText(not_empty=True, max=10))
+ cn = widgets.TextField(label='Username', validator=validators.All(knownUser(not_empty=True, max=10), validators.String(max=32, min=3)))
+ givenName = widgets.TextField(label='Full Name', validator=validators.String(not_empty=True, max=42))
+ mail = widgets.TextField(label='email', validator=validators.Email(not_empty=True, strip=True))
+ telephoneNumber = widgets.TextField(label='Telephone Number', validator=validators.PhoneNumber(not_empty=True))
+ postalAddress = widgets.TextArea(label='Postal Address', validator=validators.NotEmpty)
+
+newPersonForm = widgets.TableForm(fields=newPerson(), submit_text='Sign Up')
+
+class findUser(widgets.WidgetsList):
+ userName = widgets.AutoCompleteField(search_controller='search', search_param='userName', result_name='people')
+
+ action = widgets.HiddenField(default='apply', validator=validators.String(not_empty=True))
+
+ groupName = widgets.HiddenField(validator=validators.String(not_empty=True))
+
+searchUserForm = widgets.TableForm(fields=findUser())
+
class Root(controllers.RootController):
@expose(template="fas.templates.error")
def errorMessage(self, tg_exceptions=None):
@@ -78,6 +106,7 @@
@exception_handler(errorMessage,rules="isinstance(tg_exceptions,ValueError)")
@identity.require(identity.not_anonymous())
def editGroup(self, groupName):
+
try:
groups = Groups.byGroupName(groupName, includeUnapproved=True)
except KeyError, e:
@@ -93,7 +122,10 @@
me = groups[userName]
except:
me = UserGroup()
- return dict(groups=groups, group=group, me=me)
+ #searchUserForm.groupName.display('group')
+ #findUser.groupName.display(value='fff')
+ value = {'groupName' : group.cn}
+ return dict(groups=groups, group=group, me=me, searchUserForm=searchUserForm, value=value)
@expose(template="fas.templates.groupList")
@exception_handler(errorMessage,rules="isinstance(tg_exceptions,ValueError)")
@@ -193,9 +225,10 @@
turbogears.identity.current.user_name=userName
turbogears.flash('Sudoed to %s' % userName)
turbogears.recirect('editAccount')
-
+
+ @error_handler(editGroup)
+ @validate(form=newPersonForm)
@expose(template='fas.templates.apply')
- @exception_handler(errorMessage, rules="isinstance(tg_exceptions,ValueError)")
@identity.require(identity.not_anonymous())
def modifyGroup(self, groupName, action, userName):
''' Modifies group based on action, groupName and userName '''
@@ -325,10 +358,19 @@
return dict()
@expose(template='fas.templates.signUp')
- def newAccount(self, cn, givenName, mail, telephoneNumber, postalAddressForm):
+ def signUp(self):
+ if turbogears.identity.not_anonymous():
+ turbogears.flash('No need to sign up, You have an account!')
+ turbogears.redirect('editAccount')
+ return dict(form=newPersonForm)
+
+ @validate(form=newPersonForm)
+ @error_handler(signUp)
+ @expose(template='fas.templates.signUp')
+ def newAccountSubmit(self, cn, givenName, mail, telephoneNumber, postalAddress):
import turbomail
try:
- Person.newPerson(cn.encode('utf8'), givenName.encode('utf8'), mail.encode('utf8'), telephoneNumber.encode('utf8'), postalAddressForm.encode('utf8'))
+ Person.newPerson(cn.encode('utf8'), givenName.encode('utf8'), mail.encode('utf8'), telephoneNumber.encode('utf8'), postalAddress.encode('utf8'))
p = Person.byUserName(cn.encode('utf8'))
newpass = p.generatePassword()
message = turbomail.Message('accounts at fedoraproject.org', p.mail, 'Fedora Project Password Reset')
@@ -341,13 +383,12 @@
turbogears.flash('%s Already Exists, Please pick a different name' % cn)
turbogears.redirect('signUp')
return dict()
-
- @expose(template='fas.templates.signUp')
- def signUp(self):
- if turbogears.identity.not_anonymous():
- turbogears.flash('No need to sign up, You have an account!')
- turbogears.redirect('editAccount')
- return dict()
+
+ @expose(format="json")
+ def search(self, userName=None, groupName=None):
+ people = Person.users('%s*' % userName)
+ return dict(people=
+ filter(lambda item: userName in item.lower(), people))
@expose(template='fas.templates.invite')
@@ -381,3 +422,5 @@
def relativeUser(realUser, sudoUser):
''' Takes user and sees if they are allow to sudo for remote group'''
p = Person.byUserName('realUser')
+
+
More information about the fedora-extras-commits
mailing list