summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPetr Vobornik <pvoborni@redhat.com>2012-09-05 14:45:26 +0200
committerPetr Vobornik <pvoborni@redhat.com>2012-09-06 10:30:28 +0200
commit5331a86610bee823f88804d758830420bf3d1238 (patch)
treeceda5dabcae4077fc51bce5e5e85b5fdd08d0290
parent9f4f2a17b9e7f6ea36419174ef8d020589773f8d (diff)
downloadfreeipa-5331a86610bee823f88804d758830420bf3d1238.tar.gz
freeipa-5331a86610bee823f88804d758830420bf3d1238.tar.xz
freeipa-5331a86610bee823f88804d758830420bf3d1238.zip
Added decimal checks to metadata validator
Medatadata validator didn't have check for decimal values. It was added. https://fedorahosted.org/freeipa/ticket/3052
-rw-r--r--install/ui/field.js16
-rw-r--r--install/ui/test/data/ipa_init.json1
-rw-r--r--ipalib/plugins/internal.py1
3 files changed, 15 insertions, 3 deletions
diff --git a/install/ui/field.js b/install/ui/field.js
index 8e2d116c0..5aa24c70e 100644
--- a/install/ui/field.js
+++ b/install/ui/field.js
@@ -430,21 +430,31 @@ IPA.metadata_validator = function(spec) {
var message;
var metadata = context.metadata;
+ var number = false;
if (!metadata || IPA.is_empty(value)) return that.true_result();
- if (metadata.type == 'int') {
+ if (metadata.type === 'int') {
+ number = true;
if (!value.match(/^-?\d+$/)) {
return that.false_result(IPA.messages.widget.validation.integer);
}
+ } else if (metadata.type === 'Decimal') {
+ number = true;
+ if (!value.match(/^-?\d+(\.\d+)?$/)) {
+ return that.false_result(IPA.messages.widget.validation.decimal);
+ }
+ }
+
+ if (number) {
- if (metadata.minvalue !== undefined && value < metadata.minvalue) {
+ if (metadata.minvalue !== undefined && Number(value) < Number(metadata.minvalue)) {
message = IPA.messages.widget.validation.min_value;
message = message.replace('${value}', metadata.minvalue);
return that.false_result(message);
}
- if (metadata.maxvalue !== undefined && value > metadata.maxvalue) {
+ if (metadata.maxvalue !== undefined && Number(value) > Number(metadata.maxvalue)) {
message = IPA.messages.widget.validation.max_value;
message = message.replace('${value}', metadata.maxvalue);
return that.false_result(message);
diff --git a/install/ui/test/data/ipa_init.json b/install/ui/test/data/ipa_init.json
index 74d01706d..24364dafa 100644
--- a/install/ui/test/data/ipa_init.json
+++ b/install/ui/test/data/ipa_init.json
@@ -523,6 +523,7 @@
"undo_all": "undo all",
"validation": {
"error": "Text does not match field pattern",
+ "decimal": "Must be a decimal number",
"integer": "Must be an integer",
"ip_address": "Not a valid IP address",
"ip_v4_address": "Not a valid IPv4 address",
diff --git a/ipalib/plugins/internal.py b/ipalib/plugins/internal.py
index 26e1b63fb..f449da4f4 100644
--- a/ipalib/plugins/internal.py
+++ b/ipalib/plugins/internal.py
@@ -662,6 +662,7 @@ class i18n_messages(Command):
"undo_all": _("undo all"),
"validation": {
"error": _("Text does not match field pattern"),
+ "decimal": _("Must be a decimal number"),
"integer": _("Must be an integer"),
"ip_address": _('Not a valid IP address'),
"ip_v4_address": _('Not a valid IPv4 address'),