From a5aa9890127f0ce8f86b2185bc5f9d2c95e8813d Mon Sep 17 00:00:00 2001
From: Rob Crittenden <rcritten@redhat.com>
Date: Tue, 5 Apr 2011 17:26:35 -0400
Subject: [PATCH] postalCode should be a string not an integer.

postalCode is defined as an Int. This means you can't define one that has
a leading zero nor can you have dashes, letters, etc.

This changes the data type on the server. It will still accept an int
value if provided and convert it into a string.

ticket 1150
---
 API.txt                               |    6 +++---
 ipalib/plugins/user.py                |    2 +-
 tests/test_xmlrpc/test_user_plugin.py |    3 ++-
 3 files changed, 6 insertions(+), 5 deletions(-)

diff --git a/API.txt b/API.txt
index 54193e7..13b877c 100644
--- a/API.txt
+++ b/API.txt
@@ -2542,7 +2542,7 @@ option: Int('gidnumber', attribute=True, cli_name='gidnumber', default_from=Defa
 option: Str('street', attribute=True, cli_name='street', label=Gettext('Street address', domain='ipa', localedir=None), multivalue=False, required=False)
 option: Str('l', attribute=True, cli_name='city', label=Gettext('City', domain='ipa', localedir=None), multivalue=False, required=False)
 option: Str('st', attribute=True, cli_name='state', label=Gettext('State/Province', domain='ipa', localedir=None), multivalue=False, required=False)
-option: Int('postalcode', attribute=True, cli_name='postalcode', label=Gettext('ZIP', domain='ipa', localedir=None), multivalue=False, required=False)
+option: Str('postalcode', attribute=True, cli_name='postalcode', label=Gettext('ZIP', domain='ipa', localedir=None), multivalue=False, required=False)
 option: Str('telephonenumber', attribute=True, cli_name='phone', label=Gettext('Telephone Number', domain='ipa', localedir=None), multivalue=True, required=False)
 option: Str('mobile', attribute=True, cli_name='mobile', label=Gettext('Mobile Telephone Number', domain='ipa', localedir=None), multivalue=True, required=False)
 option: Str('pager', attribute=True, cli_name='pager', label=Gettext('Pager Number', domain='ipa', localedir=None), multivalue=True, required=False)
@@ -2598,7 +2598,7 @@ option: Int('gidnumber', attribute=True, autofill=False, cli_name='gidnumber', d
 option: Str('street', attribute=True, autofill=False, cli_name='street', label=Gettext('Street address', domain='ipa', localedir=None), multivalue=False, query=True, required=False)
 option: Str('l', attribute=True, autofill=False, cli_name='city', label=Gettext('City', domain='ipa', localedir=None), multivalue=False, query=True, required=False)
 option: Str('st', attribute=True, autofill=False, cli_name='state', label=Gettext('State/Province', domain='ipa', localedir=None), multivalue=False, query=True, required=False)
-option: Int('postalcode', attribute=True, autofill=False, cli_name='postalcode', label=Gettext('ZIP', domain='ipa', localedir=None), multivalue=False, query=True, required=False)
+option: Str('postalcode', attribute=True, autofill=False, cli_name='postalcode', label=Gettext('ZIP', domain='ipa', localedir=None), multivalue=False, query=True, required=False)
 option: Str('telephonenumber', attribute=True, autofill=False, cli_name='phone', label=Gettext('Telephone Number', domain='ipa', localedir=None), multivalue=True, query=True, required=False)
 option: Str('mobile', attribute=True, autofill=False, cli_name='mobile', label=Gettext('Mobile Telephone Number', domain='ipa', localedir=None), multivalue=True, query=True, required=False)
 option: Str('pager', attribute=True, autofill=False, cli_name='pager', label=Gettext('Pager Number', domain='ipa', localedir=None), multivalue=True, query=True, required=False)
@@ -2641,7 +2641,7 @@ option: Int('gidnumber', attribute=True, autofill=False, cli_name='gidnumber', d
 option: Str('street', attribute=True, autofill=False, cli_name='street', label=Gettext('Street address', domain='ipa', localedir=None), multivalue=False, required=False)
 option: Str('l', attribute=True, autofill=False, cli_name='city', label=Gettext('City', domain='ipa', localedir=None), multivalue=False, required=False)
 option: Str('st', attribute=True, autofill=False, cli_name='state', label=Gettext('State/Province', domain='ipa', localedir=None), multivalue=False, required=False)
-option: Int('postalcode', attribute=True, autofill=False, cli_name='postalcode', label=Gettext('ZIP', domain='ipa', localedir=None), multivalue=False, required=False)
+option: Str('postalcode', attribute=True, autofill=False, cli_name='postalcode', label=Gettext('ZIP', domain='ipa', localedir=None), multivalue=False, required=False)
 option: Str('telephonenumber', attribute=True, autofill=False, cli_name='phone', label=Gettext('Telephone Number', domain='ipa', localedir=None), multivalue=True, required=False)
 option: Str('mobile', attribute=True, autofill=False, cli_name='mobile', label=Gettext('Mobile Telephone Number', domain='ipa', localedir=None), multivalue=True, required=False)
 option: Str('pager', attribute=True, autofill=False, cli_name='pager', label=Gettext('Pager Number', domain='ipa', localedir=None), multivalue=True, required=False)
diff --git a/ipalib/plugins/user.py b/ipalib/plugins/user.py
index 0f6fb58..9015144 100644
--- a/ipalib/plugins/user.py
+++ b/ipalib/plugins/user.py
@@ -189,7 +189,7 @@ class user(LDAPObject):
             cli_name='state',
             label=_('State/Province'),
         ),
-        Int('postalcode?',
+        Str('postalcode?',
             label=_('ZIP'),
         ),
         Str('telephonenumber*',
diff --git a/tests/test_xmlrpc/test_user_plugin.py b/tests/test_xmlrpc/test_user_plugin.py
index 73cb295..00f9060 100644
--- a/tests/test_xmlrpc/test_user_plugin.py
+++ b/tests/test_xmlrpc/test_user_plugin.py
@@ -511,7 +511,7 @@ class test_user(Declarative):
             command=(
                 'user_add', [user1], dict(givenname=u'Test', sn=u'User1',
                 street=u'123 Maple Rd', l=u'Anytown', st=u'MD',
-                telephonenumber=u'410-555-1212',)
+                telephonenumber=u'410-555-1212', postalcode=u'01234-5678')
             ),
             expected=dict(
                 value=user1,
@@ -532,6 +532,7 @@ class test_user(Declarative):
                     street=[u'123 Maple Rd'],
                     l=[u'Anytown'],
                     st=[u'MD'],
+                    postalcode=[u'01234-5678'],
                     telephonenumber=[u'410-555-1212'],
                     ipauniqueid=[fuzzy_uuid],
                     dn=u'uid=tuser1,cn=users,cn=accounts,' + api.env.basedn,
-- 
1.7.4

