class PostForm(Form): title = TextField('Title', [validators.length(min=3, max=140)]) body = TextField('Text', [validators.length(max=5000)])
class ReusableForm(Form): name = TextField('https://www.', validators=[validators.required()])
class ReusableForm(Form): email = TextField('Email:', validators=[validators.required(), validators.Length(min=6, max=35)])
class ContactForm(FlaskForm): name = TextField('Name', [validators.Required("(Required)")]) email = TextField('E-mail', [validators.Required("(Required)")]) subject = TextField('Subject', [validators.Required("(Required)")]) message = TextAreaField('Message', [validators.Required("(Required)")])
class LoginForm(FlaskForm): username = TextField('Username', validators=[DataRequired()]) password = PasswordField('Password', validators=[DataRequired()])
class DynastyForm(Form): """Form for add & edit dynasty""" name = TextField('朝代', [DataRequired('朝代不能为空')]) intro = TextAreaField('简介', [DataRequired('简介不能为空')]) start_year = IntegerField('起始年', [DataRequired('起始年不能为空')]) end_year = IntegerField('结束年', [DataRequired('结束年不能为空')])
class RegisterAgentForm(FlaskForm): name = TextField(validators=[Required()]) phone_number = TextField() email = TextField(validators=[Email()]) agency = QuerySelectField(query_factory=enabled_agencies, allow_blank=True)
class ReusableForm(Form): name = TextField('Percent of value lost')
class CustomerCreateForm(Form): external_id = TextField('External ID', [ validators.Optional(), ])
class ReusableForm(Form): deparature = TextField('deparature', validators=[validators.required()]) destination = TextField('destination', validators=[validators.required()]) search_term = TextField('search_term', validators=[validators.required()])
class EditURLForm(FlaskForm): short_url = StringField("Short URL", validators=[Required()]) element_text = TextField("Message") created = DateTimeField("Created", render_kw={"readonly": True}) clicks = StringField("Clicks", render_kw={"readonly": True}) submit = SubmitField("Save")
class MatrixNotificationForm(Form): legend = ( "<div style=\"font-size: 16px;\">" "Matrix.org is a free open source distributed network that supports end-to-end encryption.<br/>" "TODO: Add ability to generate the <b>Room ID</b> and <b>Token</b> using a User ID and Pass<br/>" "Notes: Create an account and a room on Riot.im that allows posts. You can get the room key from the Riot.im web client.<br/>" "See: <a href=\"https://gist.github.com/RickCogley/69f430d4418ae5498e8febab44d241c9\" target=\"_blank\">https://gist.github.com/RickCogley/69f430d4418ae5498e8febab44d241c9</a> for curl commands to generate a <b>Token</b>.<br/>" "See: <a href=\"https://matrix.org/\" target=\"_blank\">https://matrix.org</a> for more info on [Matrix]<br/>" "See: <a href=\"https://riot.im/\" target=\"_blank\">https://riot.im</a> for an open source client for web and phone to create, manage and use [Matrix] and create rooms.<br/>" "</div>") type = HiddenField() description = TextField( u'Description', [Required(), Length(max=255)], description=u'Brief description of this notification') time_field = FormField(TimeSettingsInternalForm) subscriptions = MultiCheckboxField( u'Notification Events', choices=[(str(k), v) for k, v in SUBSCRIPTIONS.iteritems()]) form_field = FormField(MatrixNotificationInternalForm) submit = SubmitField(u'Next') cancel = ButtonField(u'Cancel', onclick="location.href='/settings/notifications'") def populate_settings(self, settings, id=None): settings['subscriptions'] = self.populate_setting( 'subscriptions', json.dumps({str(k): True for k in self.subscriptions.data})) settings['starttime'] = self.populate_setting( 'starttime', self.time_field.starttime.data or '00:00:00') settings['endtime'] = self.populate_setting( 'endtime', self.time_field.endtime.data or '23:59:59') settings['delay'] = self.populate_setting( 'delay', self.time_field.delaytime.data) settings['suppress'] = self.populate_setting( 'suppress', self.time_field.suppress.data) settings['domain'] = self.populate_setting('domain', self.form_field.domain.data) settings['room_id'] = self.populate_setting( 'room_id', self.form_field.room_id.data) settings['token'] = self.populate_setting('token', self.form_field.token.data) settings['custom_values'] = self.populate_setting( 'custom_values', self.form_field.custom_values.data) def populate_from_settings(self, id): subscriptions = self.populate_from_setting(id, 'subscriptions') if subscriptions: self.subscriptions.data = [ k if v == True else False for k, v in json.loads(subscriptions).iteritems() ] self.form_field.domain.data = self.populate_from_setting(id, 'domain') self.form_field.room_id.data = self.populate_from_setting( id, 'room_id') self.form_field.token.data = self.populate_from_setting(id, 'token') custom = self.populate_from_setting(id, 'custom_values') if custom is not None: custom = ast.literal_eval(custom) custom = dict( (str(i['custom_key']), i['custom_value']) for i in custom) for key, value in custom.iteritems(): CVForm = CustomValueForm() CVForm.custom_key = key CVForm.custom_value = value self.form_field.custom_values.append_entry(CVForm) def populate_setting(self, name, value, id=None): if id is not None: setting = NotificationSetting.query.filter_by(notification_id=id, name=name).first() else: setting = NotificationSetting(name=name) setting.value = value return setting def populate_from_setting(self, id, name, default=None): ret = default setting = NotificationSetting.query.filter_by(notification_id=id, name=name).first() if setting is not None: ret = setting.value return ret
class EditNotificationForm(Form): type = HiddenField() description = TextField( u'Description', [Required(), Length(max=255)], description=u'Brief description of this notification') suppress_timestamp = BooleanField( u'Suppress Timestamp?', [Optional()], description=u'Removes Timestamp from Message Body and Subject') time_field = FormField(TimeSettingsInternalForm) subscriptions = MultiCheckboxField( u'Notification Events', choices=[(str(k), v) for k, v in SUBSCRIPTIONS.iteritems()]) def populate_settings(self, settings, id=None): settings['subscriptions'] = self.populate_setting( 'subscriptions', json.dumps({str(k): True for k in self.subscriptions.data})) settings['starttime'] = self.populate_setting( 'starttime', self.time_field.starttime.data or '00:00:00') settings['endtime'] = self.populate_setting( 'endtime', self.time_field.endtime.data or '23:59:59') settings['delay'] = self.populate_setting( 'delay', self.time_field.delaytime.data) settings['suppress'] = self.populate_setting( 'suppress', self.time_field.suppress.data) settings['suppress_timestamp'] = self.populate_setting( 'suppress_timestamp', self.suppress_timestamp.data) def populate_from_settings(self, id): subscriptions = self.populate_from_setting(id, 'subscriptions') if subscriptions: self.subscriptions.data = [ k if v == True else False for k, v in json.loads(subscriptions).iteritems() ] self.time_field.starttime.data = self.populate_from_setting( id, 'starttime', default='00:00:00') self.time_field.endtime.data = self.populate_from_setting( id, 'endtime', default='23:59:59') self.time_field.delaytime.data = self.populate_from_setting(id, 'delay', default=0) # HACK: workaround for bad form that was pushed up. if self.time_field.delaytime.data is None or self.time_field.delaytime.data == '': self.time_field.delaytime.data = 0 self.time_field.suppress.data = self.populate_from_setting( id, 'suppress', default=False) self.suppress_timestamp.data = self.populate_from_setting( id, 'suppress_timestamp', default=False) def populate_setting(self, name, value, id=None): if id is not None: setting = NotificationSetting.query.filter_by(notification_id=id, name=name).first() else: setting = NotificationSetting(name=name) setting.value = value return setting def populate_from_setting(self, id, name, default=None): ret = default setting = NotificationSetting.query.filter_by(notification_id=id, name=name).first() if setting is not None: ret = setting.value return ret
class SecurityQuestionForm(FlaskForm): """ Create security question """ question = TextField('Question', validators=[DataRequired()]) answer = TextField('Answer', validators=[DataRequired()])
class AuthorQuoteForm(Form): """Form for add & edit author quote""" quote = TextField('摘录', [DataRequired('摘录不能为空')]) work_id = IntegerField('出处', [DataRequired('出处不能为空')])
class LoginForm(FlaskForm): email = TextField('Почта', validators=[DataRequired(), Email()]) password = PasswordField('Пароль', validators=[DataRequired()]) remember_me = BooleanField('Запомнить меня') submit = SubmitField('Войти')
class WorkQuoteForm(Form): """Form for add & edit quote for work""" quote = TextField('摘录', [DataRequired('摘录不能为空')])
class ReusableForm(Form): name = TextField('Name:', validators=[validators.required()])
class AddDetailsForm(FlaskForm): add = TextField('Specification', validators=[DataRequired()]) submit = SubmitField('Save Changes')
class StudentForm(FlaskForm): email = StringField('Email', validators=[DataRequired(), Email()]) password = PasswordField('Password', validators=[DataRequired()]) students = TextField('Students') submit = SubmitField('Submit')
class TopicForm(Form): content = TextField( 'content', validators=[validators.Required(), validators.Length(min=4, max=255)])
class QuestionaryForm(FlaskForm): questionMD = "Which sequences do you see in the image?" question_mod = RadioField('', choices=[('T1w','T1 weighted'), ('T2w','T2 weighted'), ('acq-gre_T2w','Gradient echo T2 weighted '), ('T1rho','T1 Rho map'), ('T1map','T1 map'), ('T2map','T2 map'), ('T2star','T2*'), ('FLAIR','FLAIR'), ('FLASH','FLASH'), ('PD','Proton density'), ('PDmap','Proton density map'), ('PDT2','Combined PD/T2'), ('inplaneT1','Inplane T1'), ('inplaneT2','Inplane T2'), ('angio','Angiography'), ('dwi','dwi'), ('pwi','pwi'), ('swi','swi'), ('minIP','minIP'), ('fieldmap','Fieldmap'), ('asl','asl'), ('unknown', 'Unknown'), ('other','Other')]) other = TextField('Name:') observation_text = "Other observations" contrast = BooleanField("With contrast") noise_text = "Noise type if apreciable" coverage = BooleanField("A) Coverage Artifact") ringing = BooleanField("B) Ringing/Blurring") ghosting = BooleanField("C) Ghosting") radio = BooleanField("D) Radio Frequency Noise") submit = SubmitField('Send') def to_dict(self): dict={} dict["modality"]=self.question_mod.data dict["other_modality"]=self.other.data dict["contrast"]=self.contrast.data dict["coverage"]=self.coverage.data dict["ringing/blurring"]=self.ringing.data dict["ghosting"]=self.ghosting.data dict["radio"]=self.radio.data return dict def get_header(): return ["modality", "other_modality", "contrast", "coverage", "ringing/blurring", "ghosting", "radio"]
class LoginForm(Form): username = TextField('Username', [InputRequired()]) password = PasswordField('Password', [InputRequired()])
class OpenIDForm(Form): openid = TextField(u'Your OpenID', [Required()]) submit = SubmitField(u'Log in with OpenID')
class LoginForm(FlaskForm): userName = TextField('userName', validators=[validators.Required()]) password = PasswordField('Password', validators=[validators.Required()]) submit = SubmitField('ログイン')
class LoginForm(Form): username = TextField( 'Username', [validators.Length(min=3, max=20), validators.DataRequired()]) password = PasswordField('Password', [validators.DataRequired()])
from flask import Flask, render_template, flash, request from wtforms import Form, TextField, TextAreaField, validators, StringField, SubmitField # App config. DEBUG = True app = Flask(__name__) app.config.from_object(__name__) class ReusableForm(Form): email = TextField('Email:', validators=[validators.required(), validators.Length(min=6, max=35)]) password = TextField('Password:'******'GET', 'POST']) def hello(): form = ReusableForm(request.form) print form.errors if request.method == 'POST': password=request.form['password'] email=request.form['email'] print email, " ", password if form.validate(): # Save the comment here. flash('Thank you for login ') else: flash('Error: All the form fields are required. ')
class URLShortenerForm(Form): url = TextField('URL', [validators.Required(), validators.URL()]) alias = TextField( 'Alias', [validators.Optional(), validators.Length(min=2, max=50)])
class UploadForm(FlaskForm): class Meta: csrf = False torrent_file = FileField('Torrent file', [FileRequired()]) display_name = TextField('Display name (optional)', [ Optional(), Length( min=3, max=255, message= 'Torrent name must be at least %(min)d characters long and %(max)d at most.' ) ]) # category = SelectField('Category') category = DisabledSelectField('Category') def validate_category(form, field): cat_match = re.match(r'^(\d+)_(\d+)$', field.data) if not cat_match: raise ValidationError('You must select a category') main_cat_id = int(cat_match.group(1)) sub_cat_id = int(cat_match.group(2)) cat = models.SubCategory.by_category_ids(main_cat_id, sub_cat_id) if not cat: raise ValidationError('You must select a proper category') field.parsed_data = cat is_hidden = BooleanField('Hidden') is_remake = BooleanField('Remake') is_anonymous = BooleanField('Anonymous') is_complete = BooleanField('Complete') information = TextField('Information', [ Length(max=255, message='Information must be at most %(max)d characters long.') ]) description = TextAreaField('Description (markdown supported)', [ Length(max=10 * 1024, message='Description must be at most %(max)d characters long.') ]) def validate_torrent_file(form, field): # Decode and ensure data is bencoded data try: torrent_dict = bencode.decode(field.data) #field.data.close() except (bencode.MalformedBencodeException, UnicodeError): raise ValidationError('Malformed torrent file') # Uncomment for debug print of the torrent # _debug_print_torrent_metadata(torrent_dict) try: _validate_torrent_metadata(torrent_dict) except AssertionError as e: raise ValidationError('Malformed torrent metadata ({})'.format( e.args[0])) try: _validate_trackers(torrent_dict) except AssertionError as e: raise ValidationError('Malformed torrent trackers ({})'.format( e.args[0])) if app.config.get('ENFORCE_MAIN_ANNOUNCE_URL'): main_announce_url = app.config.get('MAIN_ANNOUNCE_URL') if not main_announce_url: raise Exception('Config MAIN_ANNOUNCE_URL not set!') announce = torrent_dict.get('announce', b'').decode('utf-8') if announce != main_announce_url: raise ValidationError( 'Please set {} as the first tracker in the torrent'.format( main_announce_url)) # Note! bencode will sort dict keys, as per the spec # This may result in a different hash if the uploaded torrent does not match the # spec, but it's their own fault for using broken software! Right? bencoded_info_dict = bencode.encode(torrent_dict['info']) info_hash = utils.sha1_hash(bencoded_info_dict) # Check if the info_hash exists already in the database existing_torrent = models.Torrent.by_info_hash(info_hash) if existing_torrent: raise ValidationError('That torrent already exists (#{})'.format( existing_torrent.id)) # Torrent is legit, pass original filename and dict along field.parsed_data = TorrentFileData( filename=os.path.basename(field.data.filename), torrent_dict=torrent_dict, info_hash=info_hash, bencoded_info_dict=bencoded_info_dict)
class ReplyForm(Form): body = TextField('Reply', [validators.length(min=1, max=5000)])