From 1cef67e2e16ec137a1d04f9f4f99694ed36e3d28 Mon Sep 17 00:00:00 2001 From: Kevin McCarthy Date: Wed, 3 Oct 2007 13:53:14 -0700 Subject: Add the rest of the user fields to the user pages. --- ipa-server/ipa-gui/ipagui/controllers.py | 71 ++++- ipa-server/ipa-gui/ipagui/forms/user.py | 68 ++-- .../ipa-gui/ipagui/templates/usereditform.kid | 316 ++++++++++++++++++- .../ipa-gui/ipagui/templates/usernewform.kid | 351 ++++++++++++++++++++- ipa-server/ipa-gui/ipagui/templates/usershow.kid | 160 +++++++++- ipa-server/xmlrpc-server/funcs.py | 2 +- 6 files changed, 908 insertions(+), 60 deletions(-) diff --git a/ipa-server/ipa-gui/ipagui/controllers.py b/ipa-server/ipa-gui/ipagui/controllers.py index bdb7b102..792b97a3 100644 --- a/ipa-server/ipa-gui/ipagui/controllers.py +++ b/ipa-server/ipa-gui/ipagui/controllers.py @@ -139,11 +139,41 @@ class Root(controllers.RootController): # try: new_user = ipa.user.User() - new_user.setValue('uid', kw.get('uid')) + new_user.setValue('title', kw.get('title')) new_user.setValue('givenname', kw.get('givenname')) new_user.setValue('sn', kw.get('sn')) + new_user.setValue('cn', kw.get('cn')) + new_user.setValue('displayname', kw.get('displayname')) + new_user.setValue('initials', kw.get('initials')) + + new_user.setValue('uid', kw.get('uid')) + new_user.setValue('loginshell', kw.get('loginshell')) + new_user.setValue('gecos', kw.get('gecos')) + new_user.setValue('mail', kw.get('mail')) new_user.setValue('telephonenumber', kw.get('telephonenumber')) + new_user.setValue('facsimiletelephonenumber', + kw.get('facsimiletelephonenumber')) + new_user.setValue('mobile', kw.get('mobile')) + new_user.setValue('pager', kw.get('pager')) + new_user.setValue('homephone', kw.get('homephone')) + + new_user.setValue('street', kw.get('street')) + new_user.setValue('l', kw.get('l')) + new_user.setValue('st', kw.get('st')) + new_user.setValue('postalcode', kw.get('postalcode')) + + new_user.setValue('ou', kw.get('ou')) + new_user.setValue('businesscategory', kw.get('businesscategory')) + new_user.setValue('description', kw.get('description')) + new_user.setValue('employeetype', kw.get('employeetype')) + # new_user.setValue('manager', kw.get('manager')) + new_user.setValue('roomnumber', kw.get('roomnumber')) + # new_user.setValue('secretary', kw.get('secretary')) + + new_user.setValue('carlicense', kw.get('carlicense')) + new_user.setValue('labeleduri', kw.get('labeleduri')) + if kw.get('nsAccountLock'): new_user.setValue('nsAccountLock', 'true') @@ -293,10 +323,41 @@ class Root(controllers.RootController): orig_user_dict = loads(b64decode(kw.get('user_orig'))) new_user = ipa.user.User(orig_user_dict) + new_user.setValue('title', kw.get('title')) new_user.setValue('givenname', kw.get('givenname')) new_user.setValue('sn', kw.get('sn')) + new_user.setValue('cn', kw.get('cn')) + new_user.setValue('displayname', kw.get('displayname')) + new_user.setValue('initials', kw.get('initials')) + + new_user.setValue('loginshell', kw.get('loginshell')) + new_user.setValue('gecos', kw.get('gecos')) + new_user.setValue('mail', kw.get('mail')) new_user.setValue('telephonenumber', kw.get('telephonenumber')) + new_user.setValue('facsimiletelephonenumber', + kw.get('facsimiletelephonenumber')) + new_user.setValue('mobile', kw.get('mobile')) + new_user.setValue('pager', kw.get('pager')) + new_user.setValue('homephone', kw.get('homephone')) + + new_user.setValue('street', kw.get('street')) + new_user.setValue('l', kw.get('l')) + new_user.setValue('st', kw.get('st')) + new_user.setValue('postalcode', kw.get('postalcode')) + + new_user.setValue('ou', kw.get('ou')) + new_user.setValue('businesscategory', kw.get('businesscategory')) + new_user.setValue('description', kw.get('description')) + new_user.setValue('employeetype', kw.get('employeetype')) + # new_user.setValue('manager', kw.get('manager')) + new_user.setValue('roomnumber', kw.get('roomnumber')) + # new_user.setValue('secretary', kw.get('secretary')) + + new_user.setValue('carlicense', kw.get('carlicense')) + new_user.setValue('labeleduri', kw.get('labeleduri')) + + if kw.get('nsAccountLock'): new_user.setValue('nsAccountLock', 'true') else: @@ -306,13 +367,7 @@ class Root(controllers.RootController): password_change = True new_user.setValue('uidnumber', str(kw.get('uidnumber'))) new_user.setValue('gidnumber', str(kw.get('gidnumber'))) - - # - # this is a hack until we decide on the policy for names/cn/sn/givenName - # - new_user.setValue('cn', - "%s %s" % (new_user.getValue('givenname'), - new_user.getValue('sn'))) + new_user.setValue('homedirectory', str(kw.get('homedirectory'))) rv = client.update_user(new_user) # diff --git a/ipa-server/ipa-gui/ipagui/forms/user.py b/ipa-server/ipa-gui/ipagui/forms/user.py index 8beac510..9072fe78 100644 --- a/ipa-server/ipa-gui/ipagui/forms/user.py +++ b/ipa-server/ipa-gui/ipagui/forms/user.py @@ -2,17 +2,47 @@ import turbogears from turbogears import validators, widgets class UserFields(): + givenname = widgets.TextField(name="givenname", label="Given Name") + sn = widgets.TextField(name="sn", label="Family Name") + cn = widgets.TextField(name="cn", label="Common Names") + title = widgets.TextField(name="title", label="Title") + displayname = widgets.TextField(name="displayname", label="Display Name") + initials = widgets.TextField(name="initials", label="Initials") + uid = widgets.TextField(name="uid", label="Login") userpassword = widgets.PasswordField(name="userpassword", label="Password") userpassword_confirm = widgets.PasswordField(name="userpassword_confirm", label="Confirm Password") uidnumber = widgets.TextField(name="uidnumber", label="UID") gidnumber = widgets.TextField(name="gidnumber", label="GID") - givenname = widgets.TextField(name="givenname", label="Given Name") - sn = widgets.TextField(name="sn", label="Family Name") + homedirectory = widgets.TextField(name="homedirectory", label="Home Directory") + loginshell = widgets.TextField(name="loginshell", label="Login Shell") + gecos = widgets.TextField(name="gecos", label="GECOS") + mail = widgets.TextField(name="mail", label="E-mail Address") - telephonenumber = widgets.TextField(name="telephonenumber", label="Phone") - # nsAccountLock = widgets.CheckBox(name="nsAccountLock", label="Account Deactivated") + telephonenumber = widgets.TextField(name="telephonenumber", label="Work Number") + facsimiletelephonenumber = widgets.TextField(name="facsimiletelephonenumber", + label="Fax Number") + mobile = widgets.TextField(name="mobile", label="Cell Number") + pager = widgets.TextField(name="pager", label="Pager Number") + homephone = widgets.TextField(name="homephone", label="Home Number") + + street = widgets.TextField(name="street", label="Street Address") + l = widgets.TextField(name="l", label="City") + st = widgets.TextField(name="st", label="State") + postalcode = widgets.TextField(name="postalcode", label="ZIP") + + ou = widgets.TextField(name="ou", label="Org Unit") + businesscategory = widgets.TextField(name="businesscategory", label="Tags") + description = widgets.TextField(name="description", label="Description") + employeetype = widgets.TextField(name="employeetype", label="Employee Type") + manager = widgets.TextField(name="manager", label="Manager") + roomnumber = widgets.TextField(name="roomnumber", label="Room Number") + secretary = widgets.TextField(name="secretary", label="Secretary") + + carlicense = widgets.TextField(name="carlicense", label="Car License") + labeleduri = widgets.TextField(name="labeleduri", label="Home Page") + nsAccountLock = widgets.SingleSelectField(name="nsAccountLock", label="Account Status", options = [("", "active"), ("true", "inactive")]) @@ -34,8 +64,6 @@ class UserNewValidator(validators.Schema): givenname = validators.String(not_empty=True) sn = validators.String(not_empty=True) mail = validators.Email(not_empty=True) - # validators.PhoneNumber may be a bit too picky, requiring an area code - # telephonenumber = validators.PlainText(not_empty=False) chained_validators = [ validators.FieldsMatch('userpassword', 'userpassword_confirm') @@ -45,10 +73,9 @@ class UserNewValidator(validators.Schema): class UserNewForm(widgets.Form): params = ['user'] - fields = [UserFields.uid, UserFields.givenname, - UserFields.sn, UserFields.mail, - UserFields.dn_to_info_json, - ] + hidden_fields = [ + UserFields.dn_to_info_json, + ] validator = UserNewValidator() @@ -59,10 +86,6 @@ class UserNewForm(widgets.Form): def update_params(self, params): super(UserNewForm,self).update_params(params) - params['has_foo'] = self.has_foo - - def has_foo(self): - return False class UserEditValidator(validators.Schema): userpassword = validators.String(not_empty=False) @@ -72,8 +95,6 @@ class UserEditValidator(validators.Schema): mail = validators.Email(not_empty=True) uidnumber = validators.Int(not_empty=False) gidnumber = validators.Int(not_empty=False) - # validators.PhoneNumber may be a bit too picky, requiring an area code - # telephonenumber = validators.PlainText(not_empty=False) pre_validators = [ validators.RequireIfPresent(required='uidnumber', present='editprotected'), @@ -87,14 +108,13 @@ class UserEditValidator(validators.Schema): class UserEditForm(widgets.Form): params = ['user'] - fields = [UserFields.givenname, UserFields.sn, UserFields.mail, - UserFields.uid_hidden, UserFields.user_orig, - UserFields.uidnumber, UserFields.gidnumber, - UserFields.krbPasswordExpiration_hidden, - UserFields.editprotected_hidden, - UserFields.user_groups_data, - UserFields.dn_to_info_json, - ] + hidden_fields = [ + UserFields.uid_hidden, UserFields.user_orig, + UserFields.krbPasswordExpiration_hidden, + UserFields.editprotected_hidden, + UserFields.user_groups_data, + UserFields.dn_to_info_json, + ] validator = UserEditValidator() diff --git a/ipa-server/ipa-gui/ipagui/templates/usereditform.kid b/ipa-server/ipa-gui/ipagui/templates/usereditform.kid index 135f352a..a21f0b7d 100644 --- a/ipa-server/ipa-gui/ipagui/templates/usereditform.kid +++ b/ipa-server/ipa-gui/ipagui/templates/usereditform.kid @@ -32,17 +32,20 @@ from ipagui.helpers import ipahelper passwordConfirmField = document.getElementById('form_userpassword_confirm'); uidnumberField = document.getElementById('form_uidnumber'); gidnumberField = document.getElementById('form_gidnumber'); + homedirectoryField = document.getElementById('form_homedirectory'); if (checkbox.checked) { passwordField.disabled = false; passwordConfirmField.disabled = false; uidnumberField.disabled = false; gidnumberField.disabled = false; + homedirectoryField.disabled = false; $('form_editprotected').value = 'true'; } else { passwordField.disabled = true; passwordConfirmField.disabled = true; uidnumberField.disabled = true; gidnumberField.disabled = true; + homedirectoryField.disabled = true; $('form_editprotected').value = ''; } } @@ -74,6 +77,19 @@ from ipagui.helpers import ipahelper
Identity Details
+ + + + + + + + + + + + + + + + + + + +
+ + + + +
+ + + + +
+ + + + +
+ + + + +
Account Details
+ + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + +
+ + + +
+ + + +
Contact Details
@@ -228,6 +337,7 @@ from ipagui.helpers import ipahelper py:content="tg.errors.get('mail')" /> +