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)