Source code for invenio_userprofiles.validators
# -*- coding: utf-8 -*-
#
# This file is part of Invenio.
# Copyright (C) 2015-2018 CERN.
#
# Invenio is free software; you can redistribute it and/or modify it
# under the terms of the MIT License; see LICENSE file for more details.
"""Validators for user profiles."""
from __future__ import absolute_import, print_function
import re
from flask_babelex import lazy_gettext as _
username_regex = re.compile('^[a-zA-Z][a-zA-Z0-9-_]{2}[a-zA-Z0-9-_]*$')
"""Username rules."""
USERNAME_RULES = _(
'Username must start with a letter, be at least three characters long and'
' only contain alphanumeric characters, dashes and underscores.')
"""Description of username validation rules.
.. note:: Used for both form help text and for form validation error."""
[docs]def validate_username(username):
"""Validate the username.
See :data:`~.username_regex` to know which rules are applied.
:param username: A username.
:raises ValueError: If validation fails.
"""
if not username_regex.match(username):
raise ValueError(USERNAME_RULES)