Skip to content
Snippets Groups Projects
Commit 2bb2eefa authored by Benjamin Bertrand's avatar Benjamin Bertrand
Browse files

Code cleaning

Move regex to validators.py
parent f57d9789
No related branches found
No related tags found
No related merge requests found
......@@ -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
......
......@@ -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()])
......
......@@ -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()])
......
......@@ -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)
......
......@@ -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}$')
......
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