class PaymentRequestForm(Form): sid = sid_field pid = pid_field amount = DecimalField('Amount', [validators.required(), validators.NumberRange(min=0)], places=2) checksum = checksum_field success_url = StringField('Success URL', [validators.required(), validators.URL(require_tld=False)]) cancel_url = StringField('Cancel URL', [validators.required(), validators.URL(require_tld=False)]) error_url = StringField('Error URL', [validators.required(), validators.URL(require_tld=False)]) def validate(self): if not super().validate(): return False # Validate checksum test = get_checksum(self, ('pid', 'sid', 'amount'), getter=lambda o, k: getattr(o, k).raw_data[0]) if not compare_digest(test, self.checksum.data): # Check https://docs.python.org/3/library/hmac.html#hmac.compare_digest for reason why this is used in place of a != b self.checksum.errors.append("The checksum does not match the data") return False # Validate unique pid old_payment = PaymentRecord.from_session(self.sid.data, self.pid.data) if old_payment: self.pid.errors.append( "A payment with this pid has already been processed. " "Time: {}, Result: {}, Ref: {}".format( old_payment.datestr, old_payment.result, old_payment.ref)) self._old_payment = old_payment return False return True def get_payment(self): obj = PaymentRequest() self.populate_obj(obj) obj.old = self._old_payment if hasattr(self, '_old_payment') else None obj.message = self.errors_as_string return obj
class ApplicationForm(Form): name = StringField(gettext('Application name'), [ validators.DataRequired( message=gettext("Application name field is empty.")), validators.Length( min=3, message=gettext( "Application name needs to be at least 3 characters long.")), validators.Length( max=64, message=gettext( "Application name needs to be at most 64 characters long.")) ]) desc = StringField(gettext('Description'), [ validators.DataRequired( message=gettext("Client description field is empty.")), validators.Length( min=3, message=gettext( "Client description needs to be at least 3 characters long.")), validators.Length( max=512, message=gettext( "Client description needs to be at most 512 characters long.")) ]) website = StringField(gettext('Homepage'), [ validators.DataRequired(message=gettext("Homepage field is empty.")), validators.URL(message=gettext("Homepage is not a valid URI.")) ]) redirect_uri = StringField(gettext('Authorization callback URL'), [ validators.DataRequired( message=gettext("Authorization callback URL field is empty.")), validators.URL( message=gettext("Authorization callback URL is invalid.")) ])
class CreateAppForm(Form): unit = TextAreaField('Unit', [validators.Length(10), validators.DataRequired()]) image = FileField('App Icon') privacy_policy_url = StringField('Privacy policy url', [validators.URL()]) url = StringField('URL', [validators.URL()]) webhook_url = StringField('Webhook URL', [validators.URL()]) submit = SubmitField("SUBMIT")
class PageForm(form.Form): name = fields.TextField('Name', [validators.required(), validators.length(max=500)]) url = fields.TextField('URL', [validators.required(), validators.URL(require_tld=False), validators.length(max=1024)]) preview_urls = fields.FieldList(fields.TextField('Additional preview URLs', [validators.URL(require_tld=False), validators.length(max=1024)])) def validate(self): self.url.data = add_protocol(self.url.data) for ix in range(len(self.preview_urls)): self.preview_urls[ix].data = add_protocol(self.preview_urls[ix].data) return form.Form.validate(self)
class RestaurantForm(Form): title = StringField('Restaurant Name and location', [validators.NoneOf(listOfRestNames, message = 'Restaurant identifier is already taken'), validators.Length(min =1, max = 100)]) yelp_url = StringField('Yelp URL', [ validators.Optional(), validators.URL(message='Invalid url, leave blank if none exists.')] ) open_table_url = StringField('Open Table URL', [ validators.Optional(), validators.URL(message='Invalid url, leave blank if none exists.')] ) google_url = StringField('Google URL', [ validators.Optional(), validators.URL(message='Invalid url, leave blank if none exists.')] )
class MFWForm(Form): name = StringField( "Name", [validators.InputRequired(), validators.Length(min=2, max=20)]) description = StringField( "Description", [validators.InputRequired(), validators.Length(min=2, max=100)]) id = IntegerField("MFW_ID") image_url = StringField("Image URL", [validators.URL()]) reference_url = StringField("Reference URL", [validators.URL()])
class UpcomingForm(Form): title = StringField('Title', [validators.length(min=1, max=50)]) image_url = StringField('ImageUrl', [validators.URL(require_tld=False, message=None)]) venue = StringField('Venue', [validators.length(min=5, max=50)]) time = StringField('Time', [validators.length(min=2, max=10)]) date = DateField('Date', format='%Y-%m-%d') level = StringField('Level', [validators.length(min=5, max=15)]) event_url = StringField('EventUrl', [validators.URL(require_tld=False, message=None)])
class UserEditForm(wtf.Form): """ Admin edits freelancer's profile """ employment_contract = wtf.BooleanField(_(u"Employment contract"), validators=[]) is_active = wtf.BooleanField(_(u"Is active"), validators=[]) avatar = wtf.HiddenField() roles = wtf.SelectMultipleField(_(u'Role'), validators=[], choices=User.ROLES) start_work = wtf.DateField(_(u"Start work"), format='%d/%m/%Y', validators=[]) start_full_time_work = wtf.DateField(_(u"Start full time work"), format='%d/%m/%Y', validators=[validators.Optional()]) stop_work = wtf.DateField(_(u"Stop work"), format='%d/%m/%Y', validators=[validators.Optional()]) description = wtf.TextField(_(u"Description"), validators=[validators.Optional()]) date_of_birth = wtf.DateField(_(u"Date of birth"), format='%d/%m/%Y', validators=[validators.Optional()]) location = wtf.SelectField(_(u"Office location"), choices=[('', u'--None--')] + [(k, v[0]) for k, v in User.LOCATIONS.items()]) availability_link = wtf.TextField( _(u"Availability calendar link"), validators=[validators.Optional(), validators.URL()]) tasks_link = wtf.TextField( _(u"Tasks calendar link"), validators=[validators.Optional(), validators.URL()]) skype = wtf.TextField(_(u"Skype"), validators=[validators.Optional()]) phone = wtf.TextField(_(u"Phone"), validators=[validators.Optional()]) phone_on_desk = wtf.TextField(_(u"Deskphone"), validators=[validators.Optional()]) irc = wtf.TextField(_(u"IRC"), validators=[validators.Optional()]) groups = wtf.SelectMultipleField(_(u'Groups'), validators=[], choices=(('freelancer', 'freelancer'), ('user', 'user'), ('admin', 'admin'), ('scrum', 'scrum')))
class UserEditForm(wtf.Form): """ Admin edits freelancer's profile """ def process(self, formdata=None, obj=None, **kwargs): if isinstance(obj, User): kwargs['level'] = obj.levels_list super(UserEditForm, self).process(formdata, obj, **kwargs) is_active = wtf.BooleanField(_(u"Is active"), validators=[]) is_programmer = wtf.BooleanField(_(u"Is programmer"), validators=[]) is_frontend_developer = wtf.BooleanField(_(u"Is frontend developer"), validators=[]) is_graphic_designer = wtf.BooleanField(_(u"Is graphic designer"), validators=[]) avatar = wtf.HiddenField() level = wtf.SelectMultipleField(_(u'Role'), validators=[], choices=levels) start_work = wtf.DateField(_(u"Start work"), format='%d/%m/%Y', validators=[]) start_full_time_work = wtf.DateField(_(u"Start full time work"), format='%d/%m/%Y', validators=[validators.Optional()]) description = wtf.TextField(_(u"Description"), validators=[validators.Optional()]) location = wtf.SelectField(_(u"Office location"), choices=[('', u'--None--')] + [(k, v[0]) for k, v in User.LOCATIONS.items()]) availability_link = wtf.TextField( _(u"Availability calendar link"), validators=[validators.Optional(), validators.URL()]) tasks_link = wtf.TextField( _(u"Tasks calendar link"), validators=[validators.Optional(), validators.URL()]) skype = wtf.TextField(_(u"Skype"), validators=[validators.Optional()]) phone = wtf.TextField(_(u"Phone"), validators=[validators.Optional()]) phone_on_desk = wtf.TextField(_(u"Deskphone"), validators=[validators.Optional()]) irc = wtf.TextField(_(u"IRC"), validators=[validators.Optional()]) groups = wtf.SelectMultipleField(_(u'Groups'), validators=[], choices=( ('freelancer', 'freelancer'), ('user', 'user'), ('admin', 'admin'), ))
class MarkForm(Form): referrer = HiddenField([validators.URL(require_tld=False)]) title = StringField('Title', [validators.Length(min=0, max=255)], filters=[strip_filter]) url = StringField('URL', [ validators.Length(min=4, max=512), validators.URL(require_tld=False, message='Not a valid URL') ], filters=[strip_filter]) type = RadioField('Type', coerce=str, choices=[('bookmark', 'Bookmark'), ('feed', 'Feed')], default='bookmark') tags = StringField('Tags', [validators.Length(min=0, max=255)], filters=[strip_filter])
class CommitLinksForm(FlaskForm): repo_url = StringField( "Git Repo URL", validators=[validators.Optional(), validators.URL()]) commit_hash = StringField("Commit Hash", validators=[]) # Commit data is optional -> otherwise use: validators.DataRequired(), commit_link = StringField( "Main commit link", validators=[validators.Optional(), validators.URL()]) repo_name = StringField("Repository Name", validators=[]) class Meta: csrf = False
class CommentForm(wtforms.Form): name = wtforms.StringField('Name', validators=[validators.DataRequired()]) email = wtforms.StringField( 'Email', validators=[validators.DataRequired(), validators.Email()]) url = wtforms.StringField( 'URL', validators=[validators.Optional(), validators.URL()]) body = wtforms.TextAreaField('Comment', validators=[ validators.DataRequired(), validators.Length(min=10, max=3000) ]) entry_id = wtforms.HiddenField(validators=[validators.DataRequired()]) def validate(self): if not super(CommentForm, self).validate(): return False entry = Entry.query.filter((Entry.status == Entry.STATUS_PUBLIC) & (Entry.id == self.entry_id.data)).first() if not entry: return False return True
class AddRecord(FlaskForm): # hidden fields id_field = HiddenField() updated_at = HiddenField() # form entry fields name = StringField('Recipe name', [ InputRequired(), Regexp(r'^[1-9A-Za-z\s\-\']+$', message="Invalid recipe name"), Length(min=3, max=100, message="Invalid recipe name length") ]) style = SelectField('Choose the sock style', [InputRequired()], choices=[('foo', 'Foo'), ('bar', 'Bar'), ('snafu', 'Snafu')]) url = StringField('URL for original recipe', validators=(validators.Optional(), validators.URL())) ingredients = StringField('Ingredients', validators=(validators.Optional(), )) instructions = StringField('Instructions', validators=(validators.Optional(), )) notes = StringField('notes', validators=(validators.Optional(), )) keywords = StringField('keywords', validators=(validators.Optional(), )) image = StringField('image', validators=(validators.Optional(), )) rating = IntegerField( 'rating', validators=(validators.Optional(), validators.NumberRange( min=0, max=10, message="Rating must be an integer between 0 and 10"))) submit = SubmitField('Add/Update Record')
class SettingsForm(Form): default_notice = TextAreaField('Default notice', [validators.required()]) titles_enabled = BooleanField('Titles enabled', default=True) logo_url = StringField( 'Logo URL', [validators.optional(), validators.URL()]) domains = TextAreaField('Domains', [validators.optional()])
class AddDomainForm(Form): """Add domain""" name = TextField(_('Domain name'), [validators.Required(), validators.Regexp(DOM_RE, message=_('Invalid Domain name'))]) site_url = TextField(_('Site url'), [validators.Required(), validators.URL()]) status = BooleanField(_('Enabled'), default=True) smtp_callout = BooleanField(_('Enable SMTP callouts'), default=False) ldap_callout = BooleanField(_('Enable LDAP callouts'), default=False) virus_checks = BooleanField(_('Enable Virus checks'), default=True) spam_checks = BooleanField(_('Enable SPAM checks'), default=True) spam_actions = SelectField(_('What to do with probable spam'), choices=list(SPAM_ACTIONS)) highspam_actions = SelectField(_('What to do with definite spam'), choices=list(SPAM_ACTIONS)) low_score = DecimalField(_('Probable spam score'), places=1, default=0) high_score = DecimalField(_('Definite spam score'), places=1, default=0) message_size = TextField(_('Maximum Message Size'), [validators.Regexp(MSGSIZE_RE, message=_('Invalid message size, ' 'only B, K, M accepted'))], default='0') delivery_mode = SelectField(_('Multi destination delivery mode'), choices=DELIVERY_MODES) language = SelectField(_('Language'), choices=LANGUAGES, default='en') timezone = SelectField(_('Default Timezone'), choices=TIMEZONE_TUPLES) report_every = SelectField(_('Report frequency'), choices=REPORT_FREQ, default='3') organizations = QuerySelectMultipleField(_('Organizations'), get_label='name', allow_blank=True)
class CreateForm(FlaskForm): title = fields.StringField('title', validators=[validators.DataRequired()]) email = fields.StringField('email', validators=[validators.Email(), validators.Optional()]) image_url = fields.StringField('image-url', validators=[validators.URL(), validators.Optional()]) description = fields.StringField('description', widget=widgets.TextArea(), validators=[validators.DataRequired()]) private = fields.BooleanField('privat', validators=[validators.Optional()]) submit = fields.SubmitField(label='Create')
class RegisterForm(Form): youtube_url = StringField('', [validators.DataRequired(), validators.URL()]) def reset(self): self.youtube_url.data = ''
class ProjectForm(FlaskForm): name = StringField('Project name', [validators.DataRequired()]) homepage = StringField('Homepage', [validators.DataRequired(), validators.URL()]) backend = SelectField('Backend', [validators.DataRequired()], choices=[(item, item) for item in []]) version_url = StringField('Version URL', [validators.optional()]) version_prefix = StringField('Version prefix', [validators.optional()]) version_scheme = SelectField('Version scheme', [validators.Required()], choices=[(item, item) for item in []]) regex = StringField('Regex', [validators.optional()]) insecure = BooleanField('Use insecure connection', [validators.optional()]) distro = StringField('Distro (optional)', [validators.optional()]) package_name = StringField('Package (optional)', [validators.optional()]) check_release = BooleanField('Check latest release on submit', [validators.optional()]) def __init__(self, *args, **kwargs): """ Calls the default constructor with the normal argument but uses the list of backends provided to fill the choices of the drop-down list. """ super(ProjectForm, self).__init__(*args, **kwargs) if 'backends' in kwargs: self.backend.choices = [(backend, backend) for backend in sorted(kwargs['backends'])] if 'version_schemes' in kwargs: self.version_scheme.choices = [ (version_scheme, version_scheme) for version_scheme in sorted(kwargs['version_schemes']) ]
class VulnerabilityResourcesForm(FlaskForm): link = StringField( "Link", validators=[validators.DataRequired(), validators.URL()]) class Meta: csrf = False
class TestPaymentRequestForm(Form): sid = sid_field token = StringField('Secret Token', [validators.required(), validators.Length(max=64)]) amount = DecimalField('Amount', [validators.required()], places=2) pid = pid_field service = StringField( 'Service URL', [validators.required(), validators.URL(require_tld=False)]) disable_iframe = BooleanField( "Disable iframe and always open in a new window") use_cookies = BooleanField( "Save the request info in a cookie for callback validation and history" ) skip_confirm = BooleanField( 'Skip a confirm page and directly forward to the payment service') def validate_amount(self, field): field.data = field.data.quantize(Decimal('0.01')) def get_post_data(self, **extra): data = OrderedDict() for field in self: data[field.short_name] = str(field.data) data['checksum'] = get_checksum(data, ('pid', 'sid', 'amount', 'token'), token=False) data.update(extra) drop = set(data.keys()) - set(f.name for f in PaymentRequestForm()) for key in drop: del data[key] return data
class MyForm(FlaskForm): name = TextField('姓名', [validators.Required('请输入姓名')]) email = TextField( 'Email', [validators.Required('请输入Email'), validators.email('请输入正确的Email地址')]) ip = TextField('IP', [ validators.Required('请输入IP地址'), validators.IPAddress(message='请输入正确的IP地址') ]) password1 = PasswordField('密码', [validators.Required('请输入密码')]) password2 = PasswordField('确认密码', [ validators.Required('请确认密码'), validators.EqualTo('password1', '两次输入的密码不一致') ]) value = TextField('电子邮件', [validators.Email('Email格式不正确'), validators.optional()]) url = TextField( 'Url', [validators.URL(message='Url格式不正确'), validators.optional()]) regexpValue = TextField('正则表达式', [ validators.Regexp('^[a-z]{3}-[1-9]{3}$', message='格式错误,正确格式:abc-123'), validators.Optional() ]) submit = SubmitField('提交')
class Edit(Form): #uname = TextField("User Name", [validators.Required()]) iam = TextAreaField("I am", [validators.Required()]) ii = TextAreaField("I", [validators.Required()]) trends = TextAreaField("Trends", [validators.Required()]) python = BooleanField("Python", [validators.optional()]) cpp = BooleanField("C++", [validators.optional()]) java = BooleanField("Java", [validators.optional()]) js = BooleanField("JavaScript", [validators.optional()]) iot = BooleanField("InternetOfThings", [validators.optional()]) ml = BooleanField("MachineLearning", [validators.optional()]) vr = BooleanField("VirtualReality", [validators.optional()]) ar = BooleanField("AugmentedReality", [validators.optional()]) cc = BooleanField("CloudComputing", [validators.optional()]) eh = BooleanField("InformationSecurity", [validators.optional()]) proficiency = RadioField('Proficiency', [validators.Required()], choices=[('b', 'Novice'), ('i', 'Intermediate'), ('e', 'Expert')]) uname = HiddenField() p_name = TextAreaField("Project", [validators.Required()]) des = TextAreaField("Description", [validators.Required()]) github = TextAreaField( "GitHub", [validators.Required(), validators.URL("Please enter a valid URL!")]) submit = SubmitField("Save")
class ShelterForm(Form): """Sets definitions and validators for Shelter forms""" name = StringField('name', [ validators.InputRequired(), validators.Length(max=50, message="Limit 50 characters, please try again.") ]) address = StringField('address', [ validators.InputRequired(), validators.Length(max=30, message="Limit 30 characters, please try again.") ]) city = StringField('city', [ validators.InputRequired(), validators.Length(max=20, message="Limit 20 characters, please try again.") ]) state = StringField('state', [ validators.InputRequired(), validators.Length(max=13, message="Limit 13 characters, please try again.") ]) zipCode = StringField('zipCode', [ validators.InputRequired(), validators.Length(max=10, message="xxxxx or xxxxx-xxxx") ]) website = StringField('website', [ validators.InputRequired(), validators.URL( message="Not a valid URL (should contain http://www...)") ]) maximum_capacity = IntegerField('maximum_capacity', [validators.InputRequired()])
class MonitoringForm(FlaskForm): name = StringField(__('Name'), [validators.DataRequired(), validators.length(max=255)]) is_active = BooleanField(__('Active?'), default=False) is_public = BooleanField(__('Public?'), default=False) url = StringField(__('URL to check'), [ validators.DataRequired(), validators.URL(), validators.length(max=255) ]) http_method = SelectField(__('HTTP method to use'), choices=[(method.value, method.name) for method in MonitoringHttpMethod], default=MonitoringHttpMethod.GET.value) http_headers = TextAreaField(__('HTTP headers to send')) http_body_regex = StringField(__('HTTP response body Regex check'), [validators.length(max=255)]) verify_https_cert = BooleanField(__('Verify HTTPS certificate?'), default=True) check_interval = IntegerField(__('Check interval (minutes)'), default=5) timeout = IntegerField(__('Connection timeout (seconds)'), default=10) email_recipients = TextAreaField(__('Recipients of the email alerts')) sms_recipients = TextAreaField(__('Recipients of the SMS alerts')) ignore_http_errors = BooleanField(__('Ignore HTTP errors?'), default=False)
class SettingForm(Form): username = TextField('Username') # readonly email = TextField('Email') # readonly nickname = TextField('Nickname', [ validators.Optional(), validators.Length(min=2, message="昵称长度过短(2-12个字符)"), validators.Length(max=12, message="昵称长度过长(3-12个字符)"), ]) signature = TextField('Signature', [ validators.Optional(), ]) location = TextField('Location', [ validators.Optional(), ]) website = TextField('Website', [ validators.Optional(), validators.URL(message="请填写合法的URL地址(如:http://vvovo.com)") ]) company = TextField('Company', [ validators.Optional(), ]) github = TextField('Github', [ validators.Optional(), ]) twitter = TextField('Twitter', [ validators.Optional(), ]) douban = TextField('Douban', [ validators.Optional(), ]) self_intro = TextField('Self_intro', [ validators.Optional(), ])
class CreateBookmarksForm(FlaskForm): url = StringField( validators=[validators.required(), validators.URL(require_tld=False)]) title = StringField() tags = StringField() description = StringField()
class Addset(Form): country = StringField('Title', [validators.Length(min=1), validators.DataRequired()]) face = StringField('Face', [validators.Length(min=1), validators.URL(), validators.DataRequired()]) address = StringField('Address', [validators.Length(min=1), validators.DataRequired()]) email = StringField('Email', [validators.Length(min=8), validators.Email(), validators.DataRequired()]) telphone = StringField('Telphone', [validators.Length(min=11), validators.DataRequired()]) chart = TextAreaField('Chart', [validators.DataRequired()])
def validate(self): """Custom validation for this form.""" if self.url.data: self.origin.validators = [validators.DataRequired()] if self.origin.data: self.url.validators = [validators.DataRequired(), validators.URL()] return super().validate()
class AccountCreate(FlaskForm): name = StringField(u"Name", [validators.DataRequired()]) recurrence = SelectField( u"Recurrence", choices=[ ("monthly", "Monthly"), ("other", "Other"), ], ) pay_period = SelectField( default="-", choices=[ ("", "-"), (10, "10th"), (25, "25th"), ], ) status = BooleanField( u"Active", default=True, render_kw={"value": "1"}, ) outstanding = DecimalField(u"Outstanding", default=0) tag = StringField(u"Label") apr = DecimalField(u"APR", default=0) url = URLField( u"URL", [ validators.URL(message="URL validation error."), ], )
class SettingForm(Form): username = TextField('Username') # readonly email = TextField('Email') # readonly nickname = TextField('Nickname', [ validators.Optional(), validators.Length(min=2, message="Nickname too short (2-12chars)"), validators.Length(max=12, message="Nickname too long (3-12chars)"), ]) signature = TextField('Signature', [ validators.Optional(), ]) location = TextField('Location', [ validators.Optional(), ]) website = TextField('Website', [ validators.Optional(), validators.URL( message="Please enter valid URL (like:http://yizhang.me)") ]) company = TextField('Company', [ validators.Optional(), ]) github = TextField('Github', [ validators.Optional(), ]) twitter = TextField('Twitter', [ validators.Optional(), ]) douban = TextField('Douban', [ validators.Optional(), ]) self_intro = TextField('Self_intro', [ validators.Optional(), ])