Do not compare hidden (and not required) password fields.

Also compare MS SQL Cluster ips not in code, but in markup with YAQL validator.

Change-Id: Iebfe935385a3eeab2ea258bd8dad2ccb70ab14ef
Fixes: bug MRN-856.
This commit is contained in:
Timur Sufiev 2013-08-28 16:18:02 +04:00
parent ed9b3916f8
commit cb850de082
2 changed files with 8 additions and 13 deletions

View File

@ -71,7 +71,9 @@ class PasswordField(CharField):
return name + '-clone'
def compare(self, name, form_data):
if self.is_original(): # run compare only for original fields
if self.is_original() and self.required:
# run compare only for original fields
# do not run compare for hidden fields (they are not required)
if form_data.get(name) != form_data.get(self.get_clone_name(name)):
raise forms.ValidationError(_(u"{0}{1} don't match".format(
self.label, pluralize(2))))
@ -164,8 +166,9 @@ class DataGridField(forms.MultiValueField, CustomPropertiesField):
self.widget.update_request(request)
# hack to use json string instead of python dict get by YAQL
data = kwargs['form'].service.cleaned_data
data['clusterConfiguration']['dcInstances'] = json.dumps(
data['clusterConfiguration']['dcInstances'])
if 'clusterConfiguration' in data:
conf = data['clusterConfiguration']
conf['dcInstances'] = json.dumps(conf['dcInstances'])
class ChoiceField(forms.ChoiceField, CustomPropertiesField):
@ -294,16 +297,6 @@ class ClusterIPField(CharField):
self.validators = [self.validate_cluster_ip(request, ip_ranges)]
self.error_messages['invalid'] = validate_ipv4_address.message
def postclean(self, form, data):
# hack to compare two IPs
ips = []
for key, field in form.fields.items():
if isinstance(field, ClusterIPField):
ips.append(data.get(key))
if ips[0] == ips[1] and ips[0] is not None:
raise forms.ValidationError(_(
'Listener IP and Cluster Static IP should be different'))
class DatabaseListField(CharField):
validate_mssql_identifier = RegexValidator(

View File

@ -156,6 +156,8 @@ forms:
# if unitNamingPattern is given and dcInstances > 1, then '#' should occur in unitNamingPattern
- expr: {YAQL: not $.clusterConfiguration.unitNamingPattern.bool() or '#' in $.clusterConfiguration.unitNamingPattern}
message: Incrementation symbol "#" is required in the Hostname template
- expr: {YAQL: $.clusterConfiguration.clusterIP.bool() and $.clusterConfiguration.clusterIP != $.clusterConfiguration.agListenerIP}
message: Listener IP and Cluster Static IP should be different
- unitsConfiguration:
fields:
- name: nodes