Source code for debianmemberportfolio.forms

# -*- python -*-
# -*- coding: utf-8 -*-
#
# Debian Member Portfolio Service views
#
# Copyright © 2015-2020 Jan Dittberner <jan@dittberner.info>
#
# This file is part of the Debian Member Portfolio Service.
#
# Debian Member Portfolio Service is free software: you can redistribute it
# and/or modify it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the License,
# or (at your option) any later version.
#
# Debian Member Portfolio Service is distributed in the hope that it will be
# useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Affero
# General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program.  If not, see <https://www.gnu.org/licenses/>.
#
from __future__ import unicode_literals

from flask_babel import gettext as _
from flask_wtf import FlaskForm
from wtforms import IntegerField, StringField, RadioField
from wtforms.validators import (
    AnyOf, DataRequired, Email, Length, Optional, Regexp
)
from string import hexdigits


[docs]class FingerPrint(Regexp): def __init__(self, **kwargs): super(FingerPrint, self).__init__(r'^[a-fA-F0-9]*$', **kwargs)
[docs]class PlainText(Regexp): def __init__(self): super(PlainText, self).__init__(r'^[a-zA-Z\-0-9]*$')
def gpg_fingerprint(data): if data is not None: return "".join([ char for char in str(data) if char.lower() in hexdigits]) return data
[docs]class DeveloperData(FlaskForm): email = StringField('email', validators=[DataRequired(), Email()]) name = StringField('name', validators=[Optional(), DataRequired()]) gpgfp = StringField('gpgfp', filters=[gpg_fingerprint], validators=[ Optional(), FingerPrint(), Length(min=32, max=40) ]) username = StringField('username', validators=[Optional(), PlainText()]) nonddemail = StringField('nonddemail', validators=[Optional(), Email()]) salsausername = StringField('salsausername', validators=[ Optional(), PlainText() ]) mode = RadioField( 'mode', default='html', choices=[ ('json', _('JSON')), ('html', _('HTML')) ], validators=[AnyOf(['json', 'html'])] ) forumsid = IntegerField('forumsid', default=None, validators=[Optional()]) wikihomepage = StringField('wikihomepage', default=None, validators=[ Optional()])
[docs]class DeveloperDataRequest(FlaskForm): email = StringField('email', validators=[DataRequired(), Email()])