from flask_wtf import FlaskForm
from wtforms import (
    StringField,
    SubmitField,
    SelectMultipleField,
    IntegerField
)
from wtforms.validators import InputRequired, Length


class ContributionBaseForm(FlaskForm):
    title = StringField(
        'Title',
        validators=[InputRequired(), Length(max=64)]
    )
    description = StringField(
        'Description',
        validators=[InputRequired(), Length(max=255)]
    )
    version = StringField(
        'Version',
        validators=[InputRequired(), Length(max=16)]
    )
    publisher = StringField(
        'Publisher',
        validators=[InputRequired(), Length(max=128)]
    )
    publisher_url = StringField(
        'Publisher URL',
        validators=[InputRequired(), Length(max=512)]
    )
    publishing_url = StringField(
        'Publishing URL',
        validators=[InputRequired(), Length(max=512)]
    )
    publishing_year = IntegerField(
        'Publishing year',
        validators=[InputRequired()]
    )
    compatible_service_versions = SelectMultipleField(
        'Compatible service versions'
    )
    submit = SubmitField()


class EditContributionBaseForm(ContributionBaseForm):
    pass
