From 2bb2eefa7747ef1fa30860b2a5d08d736fa6f22b Mon Sep 17 00:00:00 2001 From: Benjamin Bertrand <benjamin.bertrand@esss.se> Date: Tue, 19 Dec 2017 22:36:26 +0100 Subject: [PATCH] Code cleaning Move regex to validators.py --- app/admin/views.py | 3 +-- app/inventory/forms.py | 4 ++-- app/models.py | 5 +---- app/network/forms.py | 8 ++++---- app/validators.py | 3 +++ 5 files changed, 11 insertions(+), 12 deletions(-) diff --git a/app/admin/views.py b/app/admin/views.py index 8ab0a16..96f75ed 100644 --- a/app/admin/views.py +++ b/app/admin/views.py @@ -13,8 +13,7 @@ from wtforms import validators, fields from flask_admin.contrib import sqla from flask_admin.model.form import converts from flask_login import current_user -from ..validators import IPNetwork -from ..models import ICS_ID_RE +from ..validators import IPNetwork, ICS_ID_RE # Monkey patch flask-admin Unique validator to disable it diff --git a/app/inventory/forms.py b/app/inventory/forms.py index 90163be..e07a02f 100644 --- a/app/inventory/forms.py +++ b/app/inventory/forms.py @@ -11,7 +11,7 @@ This module defines the inventory blueprint forms. """ from wtforms import SelectField, StringField, TextAreaField, validators from ..helpers import CSEntryForm -from ..validators import Unique, RegexpList, MAC_ADDRESS_RE +from ..validators import Unique, RegexpList, ICS_ID_RE, MAC_ADDRESS_RE from .. import utils, models @@ -22,7 +22,7 @@ class AttributeForm(CSEntryForm): class ItemForm(CSEntryForm): ics_id = StringField('ICS id', validators=[validators.InputRequired(), - validators.Regexp(models.ICS_ID_RE), + validators.Regexp(ICS_ID_RE), Unique(models.Item, 'ics_id')]) serial_number = StringField('Serial number', validators=[validators.InputRequired()]) diff --git a/app/models.py b/app/models.py index c32d22e..6577077 100644 --- a/app/models.py +++ b/app/models.py @@ -10,7 +10,6 @@ This module implements the models used in the app. """ import ipaddress -import re import qrcode import sqlalchemy as sa from sqlalchemy.dialects import postgresql @@ -23,12 +22,10 @@ from flask_login import UserMixin from wtforms import ValidationError from .extensions import db, login_manager, ldap_manager from .plugins import FlaskUserPlugin +from .validators import ICS_ID_RE, HOST_NAME_RE, VLAN_NAME_RE from . import utils -ICS_ID_RE = re.compile('[A-Z]{3}[0-9]{3}') -HOST_NAME_RE = re.compile('^[a-z0-9\-]{2,20}$') -VLAN_NAME_RE = re.compile('^[A-Za-z0-9\-]{3,25}$') make_versioned(plugins=[FlaskUserPlugin()]) diff --git a/app/network/forms.py b/app/network/forms.py index c141eb3..7f563fe 100644 --- a/app/network/forms.py +++ b/app/network/forms.py @@ -13,7 +13,7 @@ from flask_login import current_user from wtforms import (SelectField, StringField, TextAreaField, SelectMultipleField, BooleanField, validators) from ..helpers import CSEntryForm -from ..validators import Unique +from ..validators import Unique, HOST_NAME_RE, VLAN_NAME_RE from .. import utils, models @@ -45,7 +45,7 @@ class NetworkForm(CSEntryForm): vlan_name = StringField('Vlan name', description='hostname must be 3-25 characters long and contain only letters, numbers and dash', validators=[validators.InputRequired(), - validators.Regexp(models.VLAN_NAME_RE), + validators.Regexp(VLAN_NAME_RE), Unique(models.Network, column='vlan_name')]) vlan_id = NoValidateSelectField('Vlan id', choices=[]) description = TextAreaField('Description') @@ -64,7 +64,7 @@ class HostForm(CSEntryForm): name = StringField('Hostname', description='hostname must be 2-20 characters long and contain only letters, numbers and dash', validators=[validators.InputRequired(), - validators.Regexp(models.HOST_NAME_RE), + validators.Regexp(HOST_NAME_RE), Unique(models.Host)], filters=[utils.lowercase_field]) type = SelectField('Type', choices=utils.get_choices(('Virtual', 'Physical'))) @@ -86,7 +86,7 @@ class InterfaceForm(CSEntryForm): 'Interface name', description='name must be 2-20 characters long and contain only letters, numbers and dash', validators=[validators.InputRequired(), - validators.Regexp(models.HOST_NAME_RE), + validators.Regexp(HOST_NAME_RE), Unique(models.Interface)], filters=[utils.lowercase_field]) mac_id = SelectField('MAC', coerce=utils.coerce_to_str_or_none) diff --git a/app/validators.py b/app/validators.py index 88f8f9a..004543e 100644 --- a/app/validators.py +++ b/app/validators.py @@ -14,6 +14,9 @@ import re import sqlalchemy as sa from wtforms import ValidationError +ICS_ID_RE = re.compile('[A-Z]{3}[0-9]{3}') +HOST_NAME_RE = re.compile('^[a-z0-9\-]{2,20}$') +VLAN_NAME_RE = re.compile('^[A-Za-z0-9\-]{3,25}$') MAC_ADDRESS_RE = re.compile('^(?:[0-9a-fA-F]{2}[:-]){5}[0-9a-fA-F]{2}$') -- GitLab