Ejemplo n.º 1
0
class ExitSurvey2Form(wtf.Form):
    book_format = MultiCheckboxField(
        "Which book format(s) did you use?<br>Check all that apply.",
        choices=(
            ('book-7th', 'Hard copy of Popham (Seventh Edition)'),
            ('book-6th', 'Hard copy of Popham (Sixth Edition)'),
            ('book-5th', 'Hard copy of Popham (Fifth Edition)'),
            ('ebook', 'E-text of Popham'),
            ('other-online', 'Other Online Resources (please explain)'),
            ('no-book', 'I did not use the book (please explain)'),
        ),
        validators=[wtf.validators.required()])
    book_format_explain = wtf.StringField(
        validators=[wtf.validators.optional()])

    required_to_take = wtf.RadioField(
        "Were you required by someone to complete this course?  If so, please explain.",
        choices=(
            ('yes', 'Yes'),
            ('no', 'No'),
        ),
        widget=HorizontalWidget('div'),
        validators=[wtf.validators.required()])
    required_to_take_explain = wtf.StringField(
        validators=[wtf.validators.optional()])

    professional_development = wtf.RadioField(
        """Did this course count towards a professional development 
            requirement for your job?  If so, please explain.""",
        choices=(
            ('yes', 'Yes'),
            ('no', 'No'),
        ),
        widget=HorizontalWidget('div'),
        validators=[wtf.validators.required()])
    professional_development_explain = wtf.StringField(
        validators=[wtf.validators.optional()])

    # TODO professional role

    shared_any_badges = wtf.RadioField(
        """Did you share any digital badges from this course?  If so, describe your experience.""",
        choices=(
            ('yes', 'Yes'),
            ('no', 'No'),
        ),
        widget=HorizontalWidget('div'),
        validators=[wtf.validators.required()])
    shared_badges_experience = wtf.TextAreaField(
        validators=[wtf.validators.optional()])

    claimed_badges_mozilla = wtf.RadioField(
        """Did you claim any badges on Mozilla OBI from this course?""",
        choices=(
            ('yes', 'Yes'),
            ('no', 'No'),
        ),
        widget=HorizontalWidget('div'),
        validators=[wtf.validators.required()])

    course_badges_price = wtf.StringField(
        """Now that you have taken the course, how much do you think you
            might have paid to take the course and earn digital badges?""",
        validators=[wtf.validators.required()])
    certificate_price = wtf.StringField(
        """Now that you have taken the course, how much do you think you
            might have paid to earn the instructor verified Certificate?""",
        validators=[wtf.validators.required()])
Ejemplo n.º 2
0
class ServiceForm(wtforms.Form):
    # adds some more fields to Contact form
    name = wtforms.StringField('Name', validators = [InputRequired()])
    email = wtforms.StringField('Email', validators = [Email(), InputRequired()])
    phone = wtforms.StringField('Phone Number')
    overview = wtforms.TextField('Project Overview', validators=[InputRequired()])
Ejemplo n.º 3
0
class CMSNameForm(BaseForm):
    name = wtforms.StringField(validators=[
        wtforms.validators.Length(min=1, max=20),
        wtforms.validators.InputRequired(message=u'名称不能为空!')
    ])
Ejemplo n.º 4
0
class NameForm(FlaskForm):
    name = wtforms.StringField('what is your name?', validators = [DataRequired()])
    submit = wtforms.SubmitField('Submit')
Ejemplo n.º 5
0
class AuthUpdateForm(flask_wtf.FlaskForm):
    bitbucket_key = wtforms.StringField(
        model.Config.bitbucket_key._verbose_name, filters=[util.strip_filter])
    bitbucket_secret = wtforms.StringField(
        model.Config.bitbucket_secret._verbose_name,
        filters=[util.strip_filter])
    facebook_app_id = wtforms.StringField(
        model.Config.facebook_app_id._verbose_name,
        filters=[util.strip_filter])
    facebook_app_secret = wtforms.StringField(
        model.Config.facebook_app_secret._verbose_name,
        filters=[util.strip_filter])
    github_client_id = wtforms.StringField(
        model.Config.github_client_id._verbose_name,
        filters=[util.strip_filter])
    github_client_secret = wtforms.StringField(
        model.Config.github_client_secret._verbose_name,
        filters=[util.strip_filter])
    google_client_id = wtforms.StringField(
        model.Config.google_client_id._verbose_name,
        filters=[util.strip_filter])
    google_client_secret = wtforms.StringField(
        model.Config.google_client_secret._verbose_name,
        filters=[util.strip_filter])
    microsoft_client_id = wtforms.StringField(
        model.Config.microsoft_client_id._verbose_name,
        filters=[util.strip_filter])
    microsoft_client_secret = wtforms.StringField(
        model.Config.microsoft_client_secret._verbose_name,
        filters=[util.strip_filter])
    twitter_consumer_key = wtforms.StringField(
        model.Config.twitter_consumer_key._verbose_name,
        filters=[util.strip_filter])
    twitter_consumer_secret = wtforms.StringField(
        model.Config.twitter_consumer_secret._verbose_name,
        filters=[util.strip_filter])
Ejemplo n.º 6
0
class CommentForm(BaseForm):
    post_id = wtforms.IntegerField(validators=[validators.InputRequired(message=u'请填入帖子信息!')])
    content = wtforms.StringField(validators=[validators.InputRequired(message=u'请填入帖子内容!')])
    comment_id = wtforms.IntegerField()
Ejemplo n.º 7
0
class Register(flask_wtf.FlaskForm):
    username = wtforms.StringField(
        label="Username",
        validators=[
            validators.Regexp(
                regex="^\w+$",  # noqa
                message="Username contains invalid characters.",
            ),
            validators.InputRequired(message="Please enter a username."),
            validators.Length(
                min=4,
                max=64,
                message="Username must between 4 and 64 characters long.",
            ),
            custom_validators.IUnique(
                model=models.Account,
                field=models.Account.username,
                message="This username already exists.",
            ),
        ],
    )
    display = wtforms.StringField(
        label="Display name",
        validators=[
            validators.Length(
                max=100,
                message="Display name must be less than 100 characters long.",
            ),
        ],
    )
    email = wtforms.StringField(
        label="Email",
        validators=[
            validators.InputRequired(message="Please enter an email address."),
            validators.Email(message="Please enter a valid email address."),
            validators.Length(
                min=4,
                max=120,
                message="Email must be between 4 and 120 characters long.",
            ),
            custom_validators.IUnique(
                model=models.Account,
                field=models.Account.email,
                message="This email already exists.",
            ),
        ],
    )
    password = wtforms.PasswordField(
        label="Password",
        validators=[
            validators.InputRequired(message="Please enter your password."),
            validators.Length(
                min=8,
                max=255,
                message="Password must be between 8 and 255 characters long.",
            ),
        ],
    )
    confirm_password = wtforms.PasswordField(
        label="Confirm password",
        validators=[
            validators.InputRequired(message="Please re-enter your password."),
            validators.EqualTo(
                fieldname="password", message="Passwords do not match."
            ),
        ],
    )
    submit = wtforms.SubmitField(label="Submit")
Ejemplo n.º 8
0
class AuthTokenCreateForm(ReactorForm):
    description = wtforms.StringField(_('Token description'))
    expires = wtforms.SelectField('Expires',
                                  coerce=lambda x: x,
                                  choices=time_choices,
                                  validators=[wtforms.validators.Optional()])
Ejemplo n.º 9
0
import wtforms 
import flask_wtf

def AddContactForm(flask_wtf.FlaskForm):

    name = wtforms.StringField("name")
    phone = wtforms.StringField("Phone:")
    submit = wtforms.SubmitField("Add contact")
Ejemplo n.º 10
0
class WebAuthnCredentialMixin:

    credential = wtforms.StringField(wtforms.validators.DataRequired())
Ejemplo n.º 11
0
class RecoveryCodeValueMixin:

    recovery_code_value = wtforms.StringField(
        validators=[wtforms.validators.DataRequired()])
Ejemplo n.º 12
0
class LostPwdForm(flask_wtf.FlaskForm):

    email = wtf.StringField('Email')

    submit = wtf.SubmitField('Send a password recovery email')
Ejemplo n.º 13
0
class UrlForm(FlaskForm):
    content = wtforms.StringField('Url', validators=[DataRequired(), URL()])
Ejemplo n.º 14
0
class LikertItemForm(wtf.Form):
    rating = wtf.RadioField(**likert_kwargs)
    comment = wtf.StringField(**comment_kwargs)
Ejemplo n.º 15
0
class AddSlotForm(flask_wtf.FlaskForm):
    #Login required
    t_start = wtforms.StringField("Lecture Start Time (in HH:MM:SS)", validators=[DataRequired()])
    t_end = wtforms.StringField("Lecture End Time (in HH:MM:SS)", validators=[DataRequired()])
    day = wtforms.StringField("Day", validators=[DataRequired()])
    submit = wtforms.SubmitField("Register")
Ejemplo n.º 16
0
class UserResetForm(flask_wtf.FlaskForm):
  new_password = wtforms.StringField(
    'New Password',
    [wtforms.validators.required(), wtforms.validators.length(min=6)],
  )
Ejemplo n.º 17
0
class AddLectureForm(flask_wtf.FlaskForm):
    #Login required
    lnum = wtforms.IntegerField("Lecture Number", validators=[DataRequired()])
    quota = wtforms.IntegerField("Quota", validators=[DataRequired()])
    deadline = wtforms.StringField("Deadline (in YYYY-MM-DD HH:MM:SS)", validators=[DataRequired()])
    submit = wtforms.SubmitField("Register")
Ejemplo n.º 18
0
class NewUserForm(FlaskForm):
    name = wtf.StringField("Name")
    age = wtf.IntegerField("Age")

    submit = wtf.SubmitField("Create user")
Ejemplo n.º 19
0
class AuthUpdateForm(wtf.Form):
    bitbucket_key = wtforms.StringField(
        model.Config.bitbucket_key._verbose_name, filters=[util.strip_filter])
    bitbucket_secret = wtforms.StringField(
        model.Config.bitbucket_secret._verbose_name,
        filters=[util.strip_filter])
    dropbox_app_key = wtforms.StringField(
        model.Config.dropbox_app_key._verbose_name,
        filters=[util.strip_filter])
    dropbox_app_secret = wtforms.StringField(
        model.Config.dropbox_app_secret._verbose_name,
        filters=[util.strip_filter])
    facebook_app_id = wtforms.StringField(
        model.Config.facebook_app_id._verbose_name,
        filters=[util.strip_filter])
    facebook_app_secret = wtforms.StringField(
        model.Config.facebook_app_secret._verbose_name,
        filters=[util.strip_filter])
    github_client_id = wtforms.StringField(
        model.Config.github_client_id._verbose_name,
        filters=[util.strip_filter])
    github_client_secret = wtforms.StringField(
        model.Config.github_client_secret._verbose_name,
        filters=[util.strip_filter])
    google_client_id = wtforms.StringField(
        model.Config.google_client_id._verbose_name,
        filters=[util.strip_filter])
    google_client_secret = wtforms.StringField(
        model.Config.google_client_secret._verbose_name,
        filters=[util.strip_filter])
    instagram_client_id = wtforms.StringField(
        model.Config.instagram_client_id._verbose_name,
        filters=[util.strip_filter])
    instagram_client_secret = wtforms.StringField(
        model.Config.instagram_client_secret._verbose_name,
        filters=[util.strip_filter])
    linkedin_api_key = wtforms.StringField(
        model.Config.linkedin_api_key._verbose_name,
        filters=[util.strip_filter])
    linkedin_secret_key = wtforms.StringField(
        model.Config.linkedin_secret_key._verbose_name,
        filters=[util.strip_filter])
    microsoft_client_id = wtforms.StringField(
        model.Config.microsoft_client_id._verbose_name,
        filters=[util.strip_filter])
    microsoft_client_secret = wtforms.StringField(
        model.Config.microsoft_client_secret._verbose_name,
        filters=[util.strip_filter])
    reddit_client_id = wtforms.StringField(
        model.Config.reddit_client_id._verbose_name,
        filters=[util.strip_filter])
    reddit_client_secret = wtforms.StringField(
        model.Config.reddit_client_secret._verbose_name,
        filters=[util.strip_filter])
    twitter_consumer_key = wtforms.StringField(
        model.Config.twitter_consumer_key._verbose_name,
        filters=[util.strip_filter])
    twitter_consumer_secret = wtforms.StringField(
        model.Config.twitter_consumer_secret._verbose_name,
        filters=[util.strip_filter])
    vk_app_id = wtforms.StringField(model.Config.vk_app_id._verbose_name,
                                    filters=[util.strip_filter])
    vk_app_secret = wtforms.StringField(
        model.Config.vk_app_secret._verbose_name, filters=[util.strip_filter])
    yahoo_consumer_key = wtforms.StringField(
        model.Config.yahoo_consumer_key._verbose_name,
        filters=[util.strip_filter])
    yahoo_consumer_secret = wtforms.StringField(
        model.Config.yahoo_consumer_secret._verbose_name,
        filters=[util.strip_filter])
Ejemplo n.º 20
0
class LoginForm(FlaskForm):
    username = wtforms.StringField(
        'Username', validators=[wtforms.validators.DataRequired()])
    password = wtforms.PasswordField(
        'Password', validators=[wtforms.validators.DataRequired()])
    submit = wtforms.SubmitField('Login')
Ejemplo n.º 21
0
class SearchInput(FlaskForm):
    name = wtforms.StringField('name_label')
    number = wtforms.StringField('phone_label')
    submit = wtforms.SubmitField('search_label')
Ejemplo n.º 22
0
class ModelForm(Form):

    ### Methods

    def selection_exists_in_choices(form, field):
        found = False
        for choice in field.choices:
            if choice[0] == field.data:
                found = True
        if not found:
            raise validators.ValidationError("Selected job doesn't exist. Maybe it was deleted by another user.")

    def validate_NetParameter(form, field):
        pb = caffe_pb2.NetParameter()
        try:
            text_format.Merge(field.data, pb)
        except text_format.ParseError as e:
            raise validators.ValidationError('Not a valid NetParameter: %s' % e)

    ### Fields

    # The options for this get set in the view (since they are dynamic)
    dataset = utils.forms.SelectField('Select Dataset', choices=[],
                tooltip = "Choose the dataset to use for this model."
            )

    train_epochs = utils.forms.IntegerField('Training epochs',
            validators = [
                validators.NumberRange(min=1)
                ],
            default=30,
            tooltip = "How many passes through the training data?"
            )

    snapshot_interval = utils.forms.FloatField('Snapshot interval (in epochs)',
            default = 1,
            validators = [
                validators.NumberRange(min=0),
                ],
            tooltip = "How many epochs of training between taking a snapshot?"
            )

    val_interval = utils.forms.FloatField('Validation interval (in epochs)',
            default = 1,
            validators = [
                validators.NumberRange(min=0)
                ],
            tooltip = "How many epochs of training between running through one pass of the validation data?"
            )

    random_seed = utils.forms.IntegerField('Random seed',
            validators = [
                validators.NumberRange(min=0),
                validators.Optional(),
                ],
            tooltip = "If you provide a random seed, then back-to-back runs with the same model and dataset should give identical results."
            )

    batch_size = utils.forms.IntegerField('Batch size',
            validators = [
                validators.NumberRange(min=1),
                validators.Optional(),
                ],
            tooltip = "How many images to process at once. If blank, values are used from the network definition."
            )

    ### Solver types

    solver_type = utils.forms.SelectField('Solver type',
        choices = [
                ('SGD', 'Stochastic gradient descent (SGD)'),
                ('ADAGRAD', 'Adaptive gradient (AdaGrad)'),
                ('NESTEROV', "Nesterov's accelerated gradient (NAG)"),
                ],
            default = 'SGD',
            tooltip = "What type of solver will be used??"
            )

    ### Learning rate

    learning_rate = utils.forms.FloatField('Base Learning Rate',
            default = 0.01,
            validators = [
                validators.NumberRange(min=0),
                ],
            tooltip = "Affects how quickly the network learns. If you are getting NaN for your loss, you probably need to lower this value."
            )

    lr_policy = wtforms.SelectField('Policy',
            choices = [
                ('fixed', 'Fixed'),
                ('step', 'Step Down'),
                ('multistep', 'Step Down (arbitrary steps)'),
                ('exp', 'Exponential Decay'),
                ('inv', 'Inverse Decay'),
                ('poly', 'Polynomial Decay'),
                ('sigmoid', 'Sigmoid Decay'),
                ],
            default = 'step'
            )

    lr_step_size = wtforms.FloatField('Step Size',
            default = 33
            )
    lr_step_gamma = wtforms.FloatField('Gamma',
            default = 0.1
            )
    lr_multistep_values = wtforms.StringField('Step Values',
            default = "50,85"
            )
    def validate_lr_multistep_values(form, field):
        if form.lr_policy.data == 'multistep':
            for value in field.data.split(','):
                try:
                    float(value)
                except ValueError:
                    raise validators.ValidationError('invalid value')
    lr_multistep_gamma = wtforms.FloatField('Gamma',
            default = 0.5
            )
    lr_exp_gamma = wtforms.FloatField('Gamma',
            default = 0.95
            )
    lr_inv_gamma = wtforms.FloatField('Gamma',
            default = 0.1
            )
    lr_inv_power = wtforms.FloatField('Power',
            default = 0.5
            )
    lr_poly_power = wtforms.FloatField('Power',
            default = 3
            )
    lr_sigmoid_step = wtforms.FloatField('Step',
            default = 50
            )
    lr_sigmoid_gamma = wtforms.FloatField('Gamma',
            default = 0.1
            )

    ### Network

    # Use a SelectField instead of a HiddenField so that the default value
    # is used when nothing is provided (through the REST API)
    method = wtforms.SelectField(u'Network type',
            choices = [
                ('standard', 'Standard network'),
                ('previous', 'Previous network'),
                ('custom', 'Custom network'),
                ],
            default='standard',
            )

    # The options for this get set in the view (since they are dependent on the data type)
    standard_networks = wtforms.RadioField('Standard Networks',
            validators = [
                validate_required_iff(method='standard'),
                ],
            )

    previous_networks = wtforms.RadioField('Previous Networks',
            choices = [],
            validators = [
                validate_required_iff(method='previous'),
                selection_exists_in_choices,
                ],
            )

    custom_network = utils.forms.TextAreaField('Custom Network',
            validators = [
                validate_required_iff(method='custom'),
                validate_NetParameter,
                ],
            )

    custom_network_snapshot = utils.forms.TextField('Pretrained model',
                tooltip = "Path to pretrained model file. Only edit this field if you understand how fine-tuning works in caffe"
            )

    def validate_custom_network_snapshot(form, field):
        if form.method.data == 'custom':
            snapshot = field.data.strip()
            if snapshot:
                if not os.path.exists(snapshot):
                    raise validators.ValidationError('File does not exist')

    # Select one of several GPUs
    select_gpu = wtforms.RadioField('Select which GPU you would like to use',
            choices = [('next', 'Next available')] + [(
                index,
                '#%s - %s%s' % (
                    index,
                    get_device(index).name,
                    ' (%s memory)' % sizeof_fmt(get_nvml_info(index)['memory']['total'])
                        if get_nvml_info(index) and 'memory' in get_nvml_info(index) else '',
                    ),
                ) for index in config_value('gpu_list').split(',') if index],
            default = 'next',
            )

    # Select N of several GPUs
    select_gpus = utils.forms.SelectMultipleField('Select which GPU[s] you would like to use',
            choices = [(
                index,
                '#%s - %s%s' % (
                    index,
                    get_device(index).name,
                    ' (%s memory)' % sizeof_fmt(get_nvml_info(index)['memory']['total'])
                        if get_nvml_info(index) and 'memory' in get_nvml_info(index) else '',
                    ),
                ) for index in config_value('gpu_list').split(',') if index],
            tooltip = "The job won't start until all of the chosen GPUs are available."
            )

    # XXX For testing
    # The Flask test framework can't handle SelectMultipleFields correctly
    select_gpus_list = wtforms.StringField('Select which GPU[s] you would like to use (comma separated)')

    def validate_select_gpus(form, field):
        if form.select_gpus_list.data:
            field.data = form.select_gpus_list.data.split(',')

    # Use next available N GPUs
    select_gpu_count = wtforms.IntegerField('Use this many GPUs (next available)',
            validators = [
                validators.NumberRange(min=1, max=len(config_value('gpu_list').split(',')))
                ],
            default = 1,
            )

    def validate_select_gpu_count(form, field):
        if field.data is None:
            if form.select_gpus.data:
                # Make this field optional
                field.errors[:] = []
                raise validators.StopValidation()

    model_name = utils.forms.StringField('Model Name',
            validators = [
                validators.DataRequired()
                ],
            tooltip = "An identifier, later used to refer to this model in the Application."
            )
Ejemplo n.º 23
0
class CookbookForm(flask_wtf.FlaskForm):
    name = wtforms.StringField("Cookbook name",
                               validators=[wtforms.validators.DataRequired()])
    recipes = wtforms.SelectMultipleField(
        "Recipes", validators=[wtforms.validators.DataRequired()])
    submit = wtforms.SubmitField("Create")
Ejemplo n.º 24
0
class MetadataForm(forms.Form):

    # Metadata version
    metadata_version = wtforms.StringField(
        description="Metadata-Version",
        validators=[
            wtforms.validators.DataRequired(),
            wtforms.validators.AnyOf(
                # Note: This isn't really Metadata 2.0, however bdist_wheel
                #       claims it is producing a Metadata 2.0 metadata when in
                #       reality it's more like 1.2 with some extensions.
                ["1.0", "1.1", "1.2", "2.0", "2.1"],
                message="Unknown Metadata Version",
            ),
        ],
    )

    # Identity Project and Release
    name = wtforms.StringField(
        description="Name",
        validators=[
            wtforms.validators.DataRequired(),
            wtforms.validators.Regexp(
                _project_name_re,
                re.IGNORECASE,
                message=(
                    "Must start and end with a letter or numeral and contain "
                    "only ascii numeric and '.', '_' and '-'."),
            ),
        ],
    )
    version = wtforms.StringField(
        description="Version",
        validators=[
            wtforms.validators.DataRequired(),
            wtforms.validators.Regexp(
                r"^(?!\s).*(?<!\s)$",
                message="Cannot have leading or trailing whitespace.",
            ),
            _validate_pep440_version,
        ],
    )

    # Additional Release metadata
    summary = wtforms.StringField(
        description="Summary",
        validators=[
            wtforms.validators.Optional(),
            wtforms.validators.Length(max=512),
            wtforms.validators.Regexp(
                r"^.+$",  # Rely on the fact that . doesn't match a newline.
                message="Multiple lines are not allowed.",
            )
        ],
    )
    description = wtforms.StringField(
        description="Description",
        validators=[wtforms.validators.Optional()],
    )
    author = wtforms.StringField(
        description="Author",
        validators=[wtforms.validators.Optional()],
    )
    description_content_type = wtforms.StringField(
        description="Description-Content-Type",
        validators=[
            wtforms.validators.Optional(),
            _validate_description_content_type,
        ],
    )
    author_email = wtforms.StringField(
        description="Author-email",
        validators=[
            wtforms.validators.Optional(),
            _validate_rfc822_email_field,
        ],
    )
    maintainer = wtforms.StringField(
        description="Maintainer",
        validators=[wtforms.validators.Optional()],
    )
    maintainer_email = wtforms.StringField(
        description="Maintainer-email",
        validators=[
            wtforms.validators.Optional(),
            _validate_rfc822_email_field,
        ],
    )
    license = wtforms.StringField(
        description="License",
        validators=[wtforms.validators.Optional()],
    )
    keywords = wtforms.StringField(
        description="Keywords",
        validators=[wtforms.validators.Optional()],
    )
    classifiers = wtforms.fields.SelectMultipleField(
        description="Classifier", )
    platform = wtforms.StringField(
        description="Platform",
        validators=[wtforms.validators.Optional()],
    )

    # URLs
    home_page = wtforms.StringField(
        description="Home-Page",
        validators=[
            wtforms.validators.Optional(),
            forms.URIValidator(),
        ],
    )
    download_url = wtforms.StringField(
        description="Download-URL",
        validators=[
            wtforms.validators.Optional(),
            forms.URIValidator(),
        ],
    )

    # Dependency Information
    requires_python = wtforms.StringField(
        description="Requires-Python",
        validators=[
            wtforms.validators.Optional(),
            _validate_pep440_specifier_field,
        ],
    )

    # File information
    pyversion = wtforms.StringField(validators=[wtforms.validators.Optional()
                                                ], )
    filetype = wtforms.StringField(validators=[
        wtforms.validators.DataRequired(),
        wtforms.validators.AnyOf(
            [
                "bdist_dmg",
                "bdist_dumb",
                "bdist_egg",
                "bdist_msi",
                "bdist_rpm",
                "bdist_wheel",
                "bdist_wininst",
                "sdist",
            ],
            message="Unknown type of file.",
        ),
    ])
    comment = wtforms.StringField(validators=[wtforms.validators.Optional()], )
    md5_digest = wtforms.StringField(validators=[
        wtforms.validators.Optional(),
    ], )
    sha256_digest = wtforms.StringField(validators=[
        wtforms.validators.Optional(),
        wtforms.validators.Regexp(
            r"^[A-F0-9]{64}$",
            re.IGNORECASE,
            message="Must be a valid, hex encoded, SHA256 message digest.",
        ),
    ], )
    blake2_256_digest = wtforms.StringField(validators=[
        wtforms.validators.Optional(),
        wtforms.validators.Regexp(
            r"^[A-F0-9]{64}$",
            re.IGNORECASE,
            message="Must be a valid, hex encoded, blake2 message digest.",
        ),
    ], )

    # Legacy dependency information
    requires = ListField(validators=[
        wtforms.validators.Optional(),
        _validate_legacy_non_dist_req_list,
    ], )
    provides = ListField(validators=[
        wtforms.validators.Optional(),
        _validate_legacy_non_dist_req_list,
    ], )
    obsoletes = ListField(validators=[
        wtforms.validators.Optional(),
        _validate_legacy_non_dist_req_list,
    ], )

    # Newer dependency information
    requires_dist = ListField(
        description="Requires-Dist",
        validators=[
            wtforms.validators.Optional(),
            _validate_legacy_dist_req_list,
        ],
    )
    provides_dist = ListField(
        description="Provides-Dist",
        validators=[
            wtforms.validators.Optional(),
            _validate_legacy_dist_req_list,
        ],
    )
    obsoletes_dist = ListField(
        description="Obsoletes-Dist",
        validators=[
            wtforms.validators.Optional(),
            _validate_legacy_dist_req_list,
        ],
    )
    requires_external = ListField(
        description="Requires-External",
        validators=[
            wtforms.validators.Optional(),
            _validate_requires_external_list,
        ],
    )

    # Newer metadata information
    project_urls = ListField(
        description="Project-URL",
        validators=[
            wtforms.validators.Optional(),
            _validate_project_url_list,
        ],
    )

    def full_validate(self):
        # All non source releases *must* have a pyversion
        if (self.filetype.data and self.filetype.data != "sdist"
                and not self.pyversion.data):
            raise wtforms.validators.ValidationError(
                "Python version is required for binary distribution uploads.")

        # All source releases *must* have a pyversion of "source"
        if self.filetype.data == "sdist":
            if not self.pyversion.data:
                self.pyversion.data = "source"
            elif self.pyversion.data != "source":
                raise wtforms.validators.ValidationError(
                    "The only valid Python version for a sdist is 'source'.")

        # We *must* have at least one digest to verify against.
        if not self.md5_digest.data and not self.sha256_digest.data:
            raise wtforms.validators.ValidationError(
                "Must include at least one message digest.", )
Ejemplo n.º 25
0
class ContactForm(wtforms.Form):
    name = wtforms.StringField('Name', validators = [InputRequired()])
    email = wtforms.StringField('Email', validators = [Email(), InputRequired()])
    phone = wtforms.StringField('Phone Number')
    message = wtforms.TextField('Message', validators=[InputRequired(), Length(min=20)])
Ejemplo n.º 26
0
class HoneypotMixin:
    """ A mixin to catch spammers. This field should always be blank """

    confirm_form = wtforms.StringField()
Ejemplo n.º 27
0
class CMSAddBoardForm(BaseForm):
    name = wtforms.StringField(validators=[
        wtforms.validators.Length(min=1, max=20),
        wtforms.validators.InputRequired()
    ])
Ejemplo n.º 28
0
class LoginForm(FlaskForm):
    login = wtforms.StringField('login', validators=[wtforms.validators.DataRequired()])
    password = wtforms.PasswordField('password', validators=[wtforms.validators.DataRequired()])
Ejemplo n.º 29
0
class CMSStringIdForm(BaseForm):
    id = wtforms.StringField(
        validators=[wtforms.validators.InputRequired(message=u'id不能为空!')])
Ejemplo n.º 30
0
class SignupForm(flask_wtf.FlaskForm):
    username = wtforms.StringField("Name:", validators=[vld.DataRequired()])
    password = wtforms.PasswordField("Password:"******"Sign up")