[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

[PATCH 1/2] Guess user name from full name (#517269)



---
 modules/create_user.py |   42 ++++++++++++++++++++++++++++++++++--------
 1 files changed, 34 insertions(+), 8 deletions(-)

diff --git a/modules/create_user.py b/modules/create_user.py
index ba37b2b..ee77072 100644
--- a/modules/create_user.py
+++ b/modules/create_user.py
@@ -221,8 +221,13 @@ class moduleClass(Module):
         label.set_alignment(0.0, 0.5)
         label.set_size_request(500, -1)
 
-        self.usernameEntry = gtk.Entry()
         self.fullnameEntry = gtk.Entry()
+        self.usernameEntry = gtk.Entry()
+
+        self.guessUserName = True
+        self.fullnameEntry.connect("changed", self.fullnameEntry_changed)
+        self.usernameEntry.connect("changed", self.usernameEntry_changed)
+
         self.passwordEntry = gtk.Entry()
         self.passwordEntry.set_visibility(False)
         self.passwordEntry.set_property("primary-icon-stock",
@@ -240,19 +245,20 @@ class moduleClass(Module):
         table = gtk.Table(2, 4)
         table.set_row_spacings(6)
         table.set_col_spacings(6)
-        label = gtk.Label(_("_Username:"))
+
+        label = gtk.Label(_("Full Nam_e:"))
         label.set_use_underline(True)
-        label.set_mnemonic_widget(self.usernameEntry)
+        label.set_mnemonic_widget(self.fullnameEntry)
         label.set_alignment(0.0, 0.5)
         table.attach(label, 0, 1, 0, 1, gtk.FILL)
-        table.attach(self.usernameEntry, 1, 2, 0, 1, gtk.SHRINK, gtk.FILL, 5)
+        table.attach(self.fullnameEntry, 1, 2, 0, 1, gtk.SHRINK, gtk.FILL, 5)
 
-        label = gtk.Label(_("Full Nam_e:"))
+        label = gtk.Label(_("_Username:"))
         label.set_use_underline(True)
-        label.set_mnemonic_widget(self.fullnameEntry)
+        label.set_mnemonic_widget(self.usernameEntry)
         label.set_alignment(0.0, 0.5)
         table.attach(label, 0, 1, 1, 2, gtk.FILL)
-        table.attach(self.fullnameEntry, 1, 2, 1, 2, gtk.SHRINK, gtk.FILL, 5)
+        table.attach(self.usernameEntry, 1, 2, 1, 2, gtk.SHRINK, gtk.FILL, 5)
 
         label = gtk.Label(_("_Password:"))
         label.set_use_underline(True)
@@ -306,7 +312,7 @@ class moduleClass(Module):
         self.vbox.pack_start(scuHBox, False, False)
 
     def focus(self):
-        self.usernameEntry.grab_focus()
+        self.fullnameEntry.grab_focus()
 
     def initializeUI(self):
         pass
@@ -357,6 +363,26 @@ class moduleClass(Module):
         dlg.destroy()
         return None
 
+    def fullnameEntry_changed(self, fn_entry):
+        if not self.guessUserName:
+            return
+
+        name = fn_entry.get_text()
+        try:
+            user = name.split()[0]
+        except IndexError:
+            user = ""
+        else:
+            user = user.encode("ascii", "ascii_transliterate")
+            user = user.lower()
+
+        self.usernameEntry.handler_block_by_func(self.usernameEntry_changed)
+        self.usernameEntry.set_text(user)
+        self.usernameEntry.handler_unblock_by_func(self.usernameEntry_changed)
+
+    def usernameEntry_changed(self, un_entry):
+        self.guessUserName = not bool(un_entry.get_text())
+
     def passwordEntry_changed(self, entry):
         pw = entry.get_text()
         if not pw:
-- 
1.7.1.1


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]