from flask_wtf import FlaskForm from flask_wtf.file import FileField, FileAllowed, FileRequired, FileSize from wtforms import validators from wtforms.validators import Length, NumberRange, DataRequired from wtforms import ( SubmitField, StringField, IntegerField, SelectField, ) class UploadForm(FlaskForm): """File upload class for a new site in distribusi-verse""" sitename = StringField( "Name of your website:", validators=[validators.InputRequired(), Length(2, 100)], ) academicyear = StringField( "Academic year:", validators=[validators.InputRequired(), Length(9, 10)], ) term = IntegerField( "Term:", [validators.InputRequired(), NumberRange(min=1, max=4)] ) tags = StringField( "Add search tags, comma-separated:", validators=[validators.InputRequired(), Length(2, 500)], ) course = SelectField( u'Course:', validate_choice=True, coerce=str, choices=[ ('hacking', u'Autonomous - Hacking'), ('digitalcraft', u'Autonomous - Digital Craft'), ('criticalstudies', u'Autonomous - Critical Studies'), ('publicprivate', u'Autonomous - Public&Private'), ], option_widget=None, validators=[DataRequired()] ) zipfile = FileField( "Upload your zip file with content here:", validators=[ FileAllowed(["zip"], "Zip archives only!"), FileRequired(), FileSize( max_size=104857600, message="Zipfile size must be smaller than 100MB", ), ], ) submit = SubmitField("Upload")