Skip to content
Snippets Groups Projects
Commit 805e5018 authored by Jan Mach's avatar Jan Mach
Browse files

Moved validators to common library.

(Redmine issue: #3443)
parent f65e15f3
No related branches found
No related tags found
No related merge requests found
......@@ -17,15 +17,13 @@ __author__ = "Jan Mach <jan.mach@cesnet.cz>"
__credits__ = "Pavel Kácha <pavel.kacha@cesnet.cz>, Andrea Kropáčová <andrea.kropacova@cesnet.cz>"
import re
import ipranges
import wtforms
from wtforms.ext.sqlalchemy.fields import QuerySelectField
#
# Flask related modules.
#
from flask_babel import gettext, lazy_gettext
from flask_babel import lazy_gettext
#
# Custom modules.
......@@ -36,10 +34,6 @@ import hawat.forms
from mentat.datatype.sqldb import GroupModel
EMAIL_RE = re.compile(hawat.const.HAWAT_EMAIL_RE)
"""Compiled regular expression for email address format validation."""
def get_available_groups():
"""
Query the database for list of all available groups.
......@@ -47,41 +41,6 @@ def get_available_groups():
return hawat.db.db_query(GroupModel).order_by(GroupModel.name).all()
def check_network_record(form, field):
"""
Callback for validating network records.
"""
# Valid value is an IPv(4|6) address/range/network:
try:
ipranges.from_str(field.data)
return
except ValueError:
pass
raise wtforms.validators.ValidationError(
gettext(
'The "%(val)s" value does not look like valid IPv4/IPv6 address/range/network.',
val = str(field.data)
)
)
def check_email_list(form, field):
"""
Callback for validating list of strings.
"""
for data in field.data:
if EMAIL_RE.match(data):
continue
else:
raise wtforms.validators.ValidationError(
gettext(
'The "%(val)s" value does not look like valid email adress.',
val = str(data)
)
)
class BaseNetworkForm(hawat.forms.BaseItemForm):
"""
Class representing base network record form.
......@@ -104,7 +63,7 @@ class BaseNetworkForm(hawat.forms.BaseItemForm):
lazy_gettext('Network:'),
validators = [
wtforms.validators.DataRequired(),
check_network_record
hawat.forms.check_network_record
]
)
description = wtforms.TextAreaField(
......
......@@ -103,6 +103,8 @@ def flask_redirect(default_url = None, exclude_url = None):
#-------------------------------------------------------------------------------
RE_LOGIN = re.compile('^[-_@.a-zA-Z0-9]+$')
"""Compiled regular expression for login validation."""
def check_login(form, field): # pylint: disable=locally-disabled,unused-argument
"""
Callback for validating user account logins (usernames).
......@@ -116,6 +118,24 @@ def check_login(form, field): # pylint: disable=locally-disabled,unused-argumen
)
)
RE_EMAIL = re.compile(hawat.const.HAWAT_EMAIL_RE)
"""Compiled regular expression for email address format validation."""
def check_email_list(form, field):
"""
Callback for validating list of strings.
"""
for data in field.data:
if RE_EMAIL.match(data):
continue
else:
raise wtforms.validators.ValidationError(
gettext(
'The "%(val)s" value does not look like valid email adress.',
val = str(data)
)
)
def check_ip_record(form, field): # pylint: disable=locally-disabled,unused-argument
"""
Callback for validating IP addresses.
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment