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