Hey again,

We found some errors with the prefix field of a user's properties. First, when 
creating
a new user with the UI, it is not possible to leave the prefix empty, it 
complains about
a non-valid value (even though an 'empty' value is actually contained in the 
prefixes
list). Further, when editing a user's details it is not possible to empty the 
prefix.
This is especially annoying if you used e.g. spacecmd to create a user without 
a prefix.
It is then later on not even possible to edit and save such a user without 
changing the
prefix. I reproduced these issues reliably on Oracle as well as on PG.

The attached patch fixes the problem by setting the apparently correct empty 
value of " ",
just in case it is empty (== ""). The select in the form might even return it 
correctly
as " ", but looks like it is maybe trimmed away somewhere.. This works for me 
now, but
I tested the fix on PG only.

Thanks,
Johannes

-- 
SUSE LINUX Products GmbH, HRB 16746 (AG Nürnberg)
GF: Jeff Hawn, Jennifer Guild, Felix Imendörffer
>From 7e095b96cc5d104b76cb0121ed8dc89e62ce50eb Mon Sep 17 00:00:00 2001
From: Johannes Renner <jren...@suse.de>
Date: Thu, 15 Nov 2012 15:21:55 +0100
Subject: [PATCH] Fix errors with unrequired field 'Prefix'

---
 .../rhn/frontend/action/user/UserEditActionHelper.java       |    3 ++-
 .../src/com/redhat/rhn/manager/user/CreateUserCommand.java   |   10 +++++++---
 2 files changed, 9 insertions(+), 4 deletions(-)

diff --git a/java/code/src/com/redhat/rhn/frontend/action/user/UserEditActionHelper.java b/java/code/src/com/redhat/rhn/frontend/action/user/UserEditActionHelper.java
index e7726ad..3056834 100644
--- a/java/code/src/com/redhat/rhn/frontend/action/user/UserEditActionHelper.java
+++ b/java/code/src/com/redhat/rhn/frontend/action/user/UserEditActionHelper.java
@@ -67,7 +67,8 @@ public abstract class UserEditActionHelper extends RhnAction {
             targetUser.setFirstNames((String)form.get("firstNames"));
             targetUser.setLastName((String)form.get("lastName"));
             targetUser.setTitle((String)form.get("title"));
-            targetUser.setPrefix((String)form.get("prefix"));
+            String prefix = (String)form.get("prefix");
+            targetUser.setPrefix(prefix.isEmpty() ? " " : prefix);
             // Update PAM Authentication attribute
             updatePamAttribute(loggedInUser, targetUser, form);
         }
diff --git a/java/code/src/com/redhat/rhn/manager/user/CreateUserCommand.java b/java/code/src/com/redhat/rhn/manager/user/CreateUserCommand.java
index fa16d7c..9930aad 100644
--- a/java/code/src/com/redhat/rhn/manager/user/CreateUserCommand.java
+++ b/java/code/src/com/redhat/rhn/manager/user/CreateUserCommand.java
@@ -224,12 +224,16 @@ public class CreateUserCommand {
      * errors list.
      */
     private void validatePrefix() {
-        if (user.getPrefix() != null) {
+        String prefix = user.getPrefix();
+        if (prefix != null) {
             // Make sure whether prefix is valid, if it is set
             SortedSet validPrefixes = LocalizationService.getInstance().availablePrefixes();
-            if (!validPrefixes.contains(user.getPrefix())) {
+            if (prefix.isEmpty()) {
+                user.setPrefix(" ");
+            }
+            if (!validPrefixes.contains(prefix)) {
                 errors.add(new ValidatorError("error.user_invalid_prefix",
-                                               user.getPrefix(), validPrefixes.toString()));
+                                               prefix, validPrefixes.toString()));
             }
         }
     }
-- 
1.7.10.4

_______________________________________________
Spacewalk-devel mailing list
Spacewalk-devel@redhat.com
https://www.redhat.com/mailman/listinfo/spacewalk-devel

Reply via email to