From 7e87bfef5b1425f5397ddd9d1ce3dd342308b866 Mon Sep 17 00:00:00 2001 From: Jens Langhammer Date: Thu, 21 Mar 2019 16:36:38 +0100 Subject: [PATCH] validate server_name in form --- passbook/app_gw/forms.py | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/passbook/app_gw/forms.py b/passbook/app_gw/forms.py index 3f673eb87..928e0f7d5 100644 --- a/passbook/app_gw/forms.py +++ b/passbook/app_gw/forms.py @@ -2,6 +2,7 @@ from django import forms from django.contrib.admin.widgets import FilteredSelectMultiple +from django.forms import ValidationError from django.utils.translation import gettext as _ from passbook.app_gw.models import ApplicationGatewayProvider, RewriteRule @@ -11,6 +12,16 @@ from passbook.lib.fields import DynamicArrayField class ApplicationGatewayProviderForm(forms.ModelForm): """Security Gateway Provider form""" + def clean_server_name(self): + """Check if server_name is in DB already, since + Postgres ArrayField doesn't suppport keys.""" + current = self.cleaned_data.get('server_name') + if ApplicationGatewayProvider.objects \ + .filter(server_name__overlap=current) \ + .exclude(pk=self.instance.pk).exists(): + raise ValidationError("Server Name already in use.") + return current + class Meta: model = ApplicationGatewayProvider