mirror of
https://github.com/GSA/notifications-admin.git
synced 2026-02-05 10:53:28 -05:00
50 lines
1.6 KiB
Python
50 lines
1.6 KiB
Python
import re
|
||
from wtforms import ValidationError
|
||
from notifications_utils.template import Template
|
||
|
||
|
||
class Blacklist(object):
|
||
def __init__(self, message=None):
|
||
if not message:
|
||
message = 'Password is blacklisted.'
|
||
self.message = message
|
||
|
||
def __call__(self, form, field):
|
||
if field.data in ['password1234', 'passw0rd1234']:
|
||
raise ValidationError(self.message)
|
||
|
||
|
||
class CsvFileValidator(object):
|
||
|
||
def __init__(self, message='Not a csv file'):
|
||
self.message = message
|
||
|
||
def __call__(self, form, field):
|
||
if not form.file.data.mimetype == 'text/csv':
|
||
raise ValidationError(self.message)
|
||
|
||
|
||
class ValidEmailDomainRegex(object):
|
||
|
||
def __call__(self, form, field):
|
||
from flask import (current_app, url_for)
|
||
message = (
|
||
'Enter a central government email address.'
|
||
' If you think you should have access'
|
||
' <a href="{}">contact us</a>').format(
|
||
"https://docs.google.com/forms/d/1AL8U-xJX_HAFEiQiJszGQw0PcEaEUnYATSntEghNDGo/viewform")
|
||
valid_domains = current_app.config.get('EMAIL_DOMAIN_REGEXES', [])
|
||
email_regex = "[^\@^\s]+@([^@^\\.^\\s]+\.)*({})$".format("|".join(valid_domains))
|
||
if not re.match(email_regex, field.data.lower()):
|
||
raise ValidationError(message)
|
||
|
||
|
||
class NoCommasInPlaceHolders():
|
||
|
||
def __init__(self, message='You can’t have commas in your fields'):
|
||
self.message = message
|
||
|
||
def __call__(self, form, field):
|
||
if ',' in ''.join(Template({'content': field.data}).placeholders):
|
||
raise ValidationError(self.message)
|