diff options
author | Kevin McCarthy <kmccarth@redhat.com> | 2007-08-30 15:10:48 -0700 |
---|---|---|
committer | Kevin McCarthy <kmccarth@redhat.com> | 2007-08-30 15:10:48 -0700 |
commit | 90a34f386555ca8352e38b6186136a6750517116 (patch) | |
tree | 8630bdfde242b3be1d80355f560643807ab177b0 /ipa-server/ipa-gui/ipagui/controllers.py | |
parent | 59f843517dff81784d81ca54acf5956a136b7d65 (diff) | |
download | freeipa-90a34f386555ca8352e38b6186136a6750517116.tar.gz freeipa-90a34f386555ca8352e38b6186136a6750517116.tar.xz freeipa-90a34f386555ca8352e38b6186136a6750517116.zip |
Add auto-suggest for uid and email fields.
Diffstat (limited to 'ipa-server/ipa-gui/ipagui/controllers.py')
-rw-r--r-- | ipa-server/ipa-gui/ipagui/controllers.py | 76 |
1 files changed, 76 insertions, 0 deletions
diff --git a/ipa-server/ipa-gui/ipagui/controllers.py b/ipa-server/ipa-gui/ipagui/controllers.py index d767f2686..5771ebe31 100644 --- a/ipa-server/ipa-gui/ipagui/controllers.py +++ b/ipa-server/ipa-gui/ipagui/controllers.py @@ -189,6 +189,82 @@ class Root(controllers.RootController): return password + @expose() + def suggest_uid(self, givenname, sn): + if (len(givenname) == 0) or (len(sn) == 0): + return "" + + uid = givenname[0] + sn[:7] + try: + client.get_user_by_uid(uid) + except ipaerror.exception_for(ipaerror.LDAP_NOT_FOUND): + return uid + + uid = givenname[:7] + sn[0] + try: + client.get_user_by_uid(uid) + except ipaerror.exception_for(ipaerror.LDAP_NOT_FOUND): + return uid + + uid = (givenname + sn)[:8] + try: + client.get_user_by_uid(uid) + except ipaerror.exception_for(ipaerror.LDAP_NOT_FOUND): + return uid + + uid = sn[:8] + try: + client.get_user_by_uid(uid) + except ipaerror.exception_for(ipaerror.LDAP_NOT_FOUND): + return uid + + suffix = 2 + template = givenname[0] + sn[:7] + while suffix < 20: + uid = template[:8 - len(str(suffix))] + str(suffix) + try: + client.get_user_by_uid(uid) + except ipaerror.exception_for(ipaerror.LDAP_NOT_FOUND): + return uid + suffix += 1 + + return "" + + @expose() + def suggest_email(self, givenname, sn): + if (len(givenname) == 0) or (len(sn) == 0): + return "" + + # TODO - get from config + domain = "freeipa.org" + + return "%s.%s@%s" % (givenname, sn, domain) + + + # TODO - mail is currently not indexed nor searchable. + # implement when it's done + # email = givenname + "." + sn + domain + # users = client.find_users(email, ['mail']) + # if len(filter(lambda u: u['mail'] == email, users[1:])) == 0: + # return email + + # email = self.suggest_uid(givenname, sn) + domain + # users = client.find_users(email, ['mail']) + # if len(filter(lambda u: u['mail'] == email, users[1:])) == 0: + # return email + + # suffix = 2 + # template = givenname + "." + sn + # while suffix < 20: + # email = template + str(suffix) + domain + # users = client.find_users(email, ['mail']) + # if len(filter(lambda u: u['mail'] == email, users[1:])) == 0: + # return email + # suffix += 1 + + # return "" + + ######### # Group # |