class StreamForm(form.Form): validated = fields.BooleanField('Valider') delivered = fields.BooleanField('Livrer') denied = fields.BooleanField('Refuser') comment = fields.StringField('Commentaire')
class LoginForm(FlaskForm): username = fields.StringField('username') password = fields.PasswordField('password')
class SendForgetMailForm(FlaskForm): email = fields.StringField( validators=[DataRequired(code_msg.EMAIL_EMPTY.get_msg())]) vercode = fields.StringField( validators=[InputRequired(code_msg.VERIFY_CODE_ERROR.get_msg())])
class QuestionForm(form.Form): text = fields.StringField('Question') date = fields.DateTimeField('Date') answer = fields.StringField('Answer')
class AnswerForm(form.Form): key = fields.StringField('key') answer = fields.TextAreaField('Answer')
class UserForwardForm(flask_wtf.FlaskForm): forward_enabled = fields.BooleanField(_('Enable forwarding')) forward_destination = fields.StringField( _('Destination'), [validators.Optional(), validators.Email()]) submit = fields.SubmitField(_('Update'))
class SettingsForm(form.Form): api_key = fields.StringField(validators=[validators.data_required()]) api_secret = fields.StringField(validators=[validators.data_required()]) symbol = fields.StringField(validators=[validators.data_required()]) position_size_buy = fields.StringField( validators=[validators.data_required()]) position_size_sell = fields.StringField( validators=[validators.data_required()]) hedge = fields.BooleanField() hedge_side = fields.StringField() hedge_multiplier = fields.StringField() stop_limit_multiplier = fields.StringField() stop_market_multiplier = fields.StringField() def validate_symbol(self, field): if field.data not in ['XBTUSD', 'ETHUSD']: raise validators.ValidationError( 'symbol not supported. supported: XBTUSD, ETHUSD') def validate_position_size_buy(self, field): try: if int(field.data) == 0: raise validators.ValidationError( 'position size must be a non-zero integer') except ValueError: raise validators.ValidationError( 'position size must be a non-zero integer') def validate_position_size_sell(self, field): try: if int(field.data) == 0: raise validators.ValidationError( 'position size must be a non-zero integer') except ValueError: raise validators.ValidationError( 'position size must be a non-zero integer') def validate_hedge_side(self, field): if self.hedge.data and field.data not in ['Buy', 'Sell']: raise validators.ValidationError( 'hedge side is invalid. valid inputs: Buy, Sell') def validate_hedge_multiplier(self, field): if self.hedge.data: try: if float(field.data) <= 0: raise validators.ValidationError( 'hedge multiplier must be a positive ' 'float value (i.e. 0.5, 1, 2') except ValueError: raise validators.ValidationError( 'hedge multiplier must be a positive float value (i.e. 0.5, 1, 2' ) def validate_stop_limit_multiplier(self, field): try: if float(field.data) < 0: raise validators.ValidationError( 'stop limit multiplier must be in the range [0, 1), with 0 to disable ' '(i.e. 0, 0.015 (1.5%), .99 (99%)') except ValueError: raise validators.ValidationError( 'stop limit multiplier must be a float value in the range [0, 1), ' 'with 0 to disable (i.e. 0, 0.015 (1.5%), .99 (99%)') def validate_stop_market_multiplier(self, field): try: if float(field.data) < 0: raise validators.ValidationError( 'stop market multiplier must be in the range [0, 1), with 0 to disable ' '(i.e. 0, 0.015 (1.5%), .99 (99%)') except: raise validators.ValidationError( 'stop market multiplier must be a float value in the range [0, 1), ' 'with 0 to disable (i.e. 0, 0.015 (1.5%), .99 (99%)')
class AdsForm(form.Form): name = fields.StringField('名称') url = fields.StringField('链接') color = fields.StringField('颜色', default='#5FB878') sort = fields.IntegerField('排序', default=0) form_columns = ('name', 'url')
class FooterLinksForm(form.Form): name = fields.StringField('名称') url = fields.StringField('链接') sort = fields.IntegerField('排序', default=0) form_columns = ('name', 'url')
class CatalogsForm(form.Form): name = fields.StringField('栏目名称') sort_key = fields.IntegerField('排序', default=0) form_columns = ('name', 'sort_key')
class OptionsForm(form.Form): name = fields.StringField('名称') code = fields.StringField('代码', ) val = fields.StringField('值') form_columns = ('name', 'code', 'val')
class PagesForm(form.Form): name = fields.StringField('名称') url = fields.StringField('链接') sort = fields.IntegerField('排序', default=0) icon_code = fields.StringField('图标代码(http://www.layui.com/doc/element/icon.html)') form_columns = ('name', 'url', 'icon_code')
class SiteForm(Form): base_url = fields.StringField(validators=[Required()])
def conv_URL(self, model, field, kwargs): kwargs['validators'].append(validators.URL()) self._string_common(model, field, kwargs) return f.StringField(**kwargs)
class LoginForm(flask_wtf.FlaskForm): email = fields.StringField(_('E-mail'), [validators.Email()]) pw = fields.PasswordField(_('Password'), [validators.DataRequired()]) submit = fields.SubmitField(_('Sign in'))
class IdentityView(ModelView): column_list = [ 'issuer', 'name', 'status', ] list_template = 'admin/identity_list.html' column_formatters = { 'status': macro('render_status'), } form_excluded_columns = [ 'name', 'issues', 'pairs', ] form_extra_fields = { 'subj_cn': fields.StringField('CN', description='Common Name', validators=required), 'subj_c': fields.StringField('C', description='Country'), 'subj_o': fields.StringField('O', description='Organization'), 'subj_ou': fields.StringField('OU', description='Organizational Unit'), 'subj_dnq': fields.StringField('', description='Distinguished name qualifier'), 'subj_st': fields.StringField('ST', description='State or province name'), 'subj_sn': fields.StringField('', description='Serial number'), 'cert_validate_since': fields.DateTimeField('Valid since', description='Not valid before', validators=required, default=default_since), 'cert_validate_till': fields.DateTimeField('Valid till', description='Not valid after', validators=required, default=default_till), 'cert_ca_path_length': fields.IntegerField('CA path length', default=0), 'san_ips': InlineFieldList(fields.StringField('IP', [validators.IPAddress()]), 'IP', description='IP address'), 'san_dns_names': InlineFieldList(fields.StringField('DNS'), 'DNS', description='DNS names'), 'ku_web_server_auth': fields.BooleanField('Web server auth', description='TLS Web Server Authentication'), 'ku_web_client_auth': fields.BooleanField('Web client auth', description='TLS Web Client Authentication'), 'key_size': fields.IntegerField('Size', default=2048), 'key_public_exponent': fields.IntegerField('Public exponent', default=65537), } form_rules = [ rules.Field('issuer'), rules.FieldSet([ 'cert_validate_since', 'cert_validate_till', 'cert_ca_path_length', ], 'Certificate settings'), rules.FieldSet([ 'subj_cn', 'subj_c', 'subj_o', 'subj_ou', 'subj_dnq', 'subj_st', 'subj_sn', ], 'Subject'), rules.FieldSet([ 'san_ips', 'san_dns_names', ], 'Subject Alternative Names'), rules.FieldSet([ 'ku_web_server_auth', 'ku_web_client_auth', ], 'Key Usage'), rules.FieldSet([ 'key_size', 'key_public_exponent', ], 'Key Settings'), ] def create_model(self, *args, **kwargs): with self.session.no_autoflush: return super().create_model(*args, **kwargs) def on_model_change(self, form, model, is_created): data = x509.CertInfo(form.data) if data.issuer: pair = models.Pair( *x509.issue_certificate(data, data.issuer.pair.as_tuple)) else: pair = models.Pair(*x509.issue_certificate(data)) model.pair = pair model.name = data.subj_cn @expose('/reissue/', methods=['POST']) def reissue_view(self): model = self.get_one(request.values.get('id')) info = x509.load_certificate_info(model.pair.as_tuple, reissue=True) if model.issuer: pair = models.Pair( *x509.issue_certificate(info, model.issuer.pair.as_tuple)) else: pair = models.Pair(*x509.issue_certificate(info)) model.pair = pair self.session.commit() return_url = get_redirect_target() or self.get_url('.index_view') flash('The identity certificate was successfully reissued', 'success') return redirect(return_url) def edit_form(self, obj=None): if obj: info = x509.load_certificate_info(obj.pair.as_tuple, reissue=True) for k, v in info.as_dict().items(): if not hasattr(obj, k): setattr(obj, k, v) return super().edit_form(obj) @expose('/details/') def details_view(self): model = self.get_one(request.values.get('id')) return_url = get_redirect_target() or self.get_url('.index_view') return redirect( self.get_url('pair.details_view', id=model.pair.id, url=return_url)) @expose('/import/', methods=['GET', 'POST']) def import_view(self): return_url = get_redirect_target() or self.get_url('.index_view') form = ImportForm(get_form_data()) if self.validate_form(form): pair_tuple = form.data['cert'].encode( 'ascii'), form.data['key'].encode('ascii') info = x509.load_certificate_info(pair_tuple) if not x509.does_keys_match(pair_tuple): flash('Failed to import identity: keys does not match.', 'error') return redirect(return_url) identity = models.Identity() identity.name = info.subj_cn if not info.self_signed: def find_issuer(): for issuer in models.Identity.query.filter_by( name=info.issuer_cn): cert_chain = issuer.get_cert_chain() try: x509.verify_certificate_chain( pair_tuple[0], cert_chain) except x509.InvalidCertificate: pass else: return issuer identity.issuer = find_issuer() if not identity.issuer: flash( 'Failed to import identity: issuer identity not found.', 'error') return redirect(return_url) self.session.add(identity) pair = models.Pair(*pair_tuple) pair.identity = identity self.session.add(pair) try: self.session.commit() except IntegrityError: flash( 'Failed to import identity: identity with same name already exists.', 'error') return redirect(return_url) flash('Identity was successfully imported.', 'success') return redirect(self.get_save_return_url(identity, is_created=True)) return self.render('admin/identity_import.html', form=form, return_url=return_url)
class UserSettingsForm(flask_wtf.FlaskForm): displayed_name = fields.StringField(_('Displayed name')) spam_enabled = fields.BooleanField(_('Enable spam filter')) spam_threshold = fields_.IntegerSliderField(_('Spam filter threshold')) submit = fields.SubmitField(_('Save settings'))
class TestForm(form.Form): __test__ = False test1 = fields.StringField('Test1') test2 = fields.StringField('Test2')
class UserReplyForm(flask_wtf.FlaskForm): reply_enabled = fields.BooleanField(_('Enable automatic reply')) reply_subject = fields.StringField(_('Reply subject')) reply_body = fields.StringField(_('Reply body'), widget=widgets.TextArea()) submit = fields.SubmitField(_('Update'))
class AlternativeForm(flask_wtf.FlaskForm): name = fields.StringField(_('Alternative name'), [validators.DataRequired()]) submit = fields.SubmitField(_('Create'))
class UserForm(form.Form): name = fields.StringField('Name') email = fields.StringField('Email') password = fields.PasswordField('Password')
class RelayForm(flask_wtf.FlaskForm): name = fields.StringField(_('Relayed domain name'), [validators.DataRequired()]) smtp = fields.StringField(_('Remote host')) comment = fields.StringField(_('Comment')) submit = fields.SubmitField(_('Create'))
class TrainingsetForm(form.Form): question = fields.StringField('Question') answer = fields.StringField('Answer')
class GameForm(form.Form): name = fields.StringField(u'游戏名', [validators.Required()]) url = fields.StringField(u'Android下载链接', [validators.Optional()]) url_ios = fields.StringField(u'IOS跳转链接', [validators.Optional()]) description = fields.TextAreaField(u'描述', [validators.Required()]) intro = fields.StringField(u'简介', [validators.Optional()]) slogan = fields.StringField(u'标语', [validators.Optional()]) developer = fields.StringField(u'开发者', [validators.Required()]) package_id = fields.StringField(u'软件包ID', [validators.Required()]) package_segment = fields.StringField(u'主播工具匹配包名特征', [validators.Optional()]) bid = fields.StringField(u'咪咕平台游戏ID', [validators.Optional()]) bcode = fields.StringField(u'咪咕平台CODE', [validators.Optional()]) version = fields.StringField(u'版本号', [validators.Required()]) size = fields.FloatField(u'包大小(M)', [validators.Required()], default=0.0) contain_sdk = fields.BooleanField(u'是否包含SDK', default=False) cover = fields.StringField(u'封面图片', [validators.Required()]) icon = fields.StringField(u'图标', [validators.Required()]) big_icon = fields.StringField(u'大图标', [validators.Required()]) status = fields.SelectField(u'状态', [validators.InputRequired()], coerce=int, choices=[(const.ONLINE, u'上架'), (const.OFFLINE, u'下线'), (const.UNDER_TEST, u'测试'), (const.OFFSHELF, u'非上架')]) migu = JsonField(u'咪咕信息', [validators.Optional()]) is_download = fields.BooleanField(u'是否可下载(Android)', default=False) is_subscribe = fields.BooleanField(u'是否可订阅(Android)', default=False) is_download_ios = fields.BooleanField(u'是否可下载(IOS)', default=False) is_subscribe_ios = fields.BooleanField(u'是否可订阅(IOS)', default=False) on_assistant = fields.BooleanField(u'是否在游玩助手上架', default=True) categories = fields.SelectMultipleField(u'分类', [validators.Optional()], coerce=ObjectId)
class AddFixedRequest(FlaskForm): # object data request_id = fields.HiddenField('Hidden') object_id = fields.HiddenField('Hidden') marshal_id = fields.HiddenField('Hidden', default=-1) user_id = fields.HiddenField('Hidden') allocation_id = fields.HiddenField('Hidden') obj_name = fields.StringField('Object Name', [validators.input_required()]) status = fields.SelectField('Status', coerce=str, choices=[('DEFAULT', "--------"), ('EXPIRED', 'EXPIRED'), ('COMPLETED', 'COMPLETED'), ('ACTIVE', 'ACTIVE'), ('CANCELED', 'CANCELED'), ('PENDING', 'PENDING')]) obj_ra = fields.StringField('RA (HH:MM:SS or Degrees)') obj_dec = fields.StringField('DEC (DD:MM:SS or Degrees)') obj_epoch = fields.StringField('EPOCH', default='2000') obj_mag = fields.FloatField('Magnitude') allocation = fields.SelectField('allocation') priority = fields.FloatField('priority', default=.99) filters_op = fields.SelectField('filters', coerce=str, choices=[(' 1, 1, 1, 1}', 'u-g-r-i'), (' 0, 1, 1, 1}', 'g-r-i'), (' 0, 1, 0, 0}', 'g'), (' 0, 0, 1, 0}', 'r'), ('0, 0, 0, 1}', 'i'), ('0, 0, 0, 0}', '-')]) do_r = fields.BooleanField('r') do_g = fields.BooleanField('g') do_i = fields.BooleanField('i') do_u = fields.BooleanField('u') r_exptime = fields.IntegerField('Exptime (seconds)', default=0) g_exptime = fields.IntegerField('Exptime (seconds)', default=0) i_exptime = fields.IntegerField('Exptime (seconds)', default=0) u_exptime = fields.IntegerField('Exptime (seconds)', default=0) r_repeats = fields.IntegerField('# Repeats', default=1) g_repeats = fields.IntegerField('# Repeats', default=1) i_repeats = fields.IntegerField('# Repeats', default=1) u_repeats = fields.IntegerField('# Repeats', default=1) rc_use_mag = fields.BooleanField( 'Use object magnitude to set exposure time') seq_repeats = fields.IntegerField('# of Repeated Sequences', default=1) seq_completed = fields.IntegerField('# of Sequences Already Completed', default=0) ifu = fields.BooleanField('Take IFU Exposure') rc = fields.BooleanField('Take RC Exposure') ifu_use_mag = fields.BooleanField( 'Use object magnitude to set exposure time') ifu_exptime = fields.IntegerField( 'Enter Total IFU Exposure Time in seconds') ab = fields.BooleanField('Select For AB pair') cadence = fields.FloatField('cadence', default=None) min_moon_dist = fields.FloatField( 'minimum moon distance (degrees)', validators=(validators.Optional(), validators.number_range(0., 180.)), default=30) max_moon_illum = fields.FloatField( 'Maximum Moon Illumination (fractional 0 to 1)', validators=(validators.Optional(), validators.number_range(0., 1.)), default=1) maxairmass = fields.FloatField('Maximum Airmass', validators=(validators.Optional(), validators.number_range(1, 5)), default=2.5) max_cloud_cover = fields.FloatField( 'Maximum Cloud Cover (fractional)', validators=(validators.Optional(), validators.number_range(0., 1.)), default=1) max_fwhm = fields.FloatField('Maximum FWHM', validators=(validators.Optional(), validators.number_range(0., 10.)), default=10) phasesamples = fields.FloatField('samples per period', default=None) sampletolerance = fields.FloatField('samples tolerance', default=None) inidate = fields.DateField('start date (Y-m-d)', validators=[validators.input_required()], format='%Y-%m-%d', default=datetime.datetime.utcnow()) enddate = fields.DateField('end date (Y-m-d)', validators=[validators.input_required()], format='%Y-%m-%d', default=(datetime.datetime.utcnow() + datetime.timedelta(days=3))) creationdate = fields.Label('creationdate', 'Creation Date') lastmodified = fields.Label('lastmodified', 'Last Modified') last_obs_jd = fields.Label('last_obs_jd', 'Last observation') submit_req = fields.SubmitField('Submit Request')
class LoginForm(BaseForm, NextFormMixin): """The default login form""" class Meta: model = User email = fields.StringField( _('flask_unchained.bundles.security:form_field.email')) password = fields.PasswordField( _('flask_unchained.bundles.security:form_field.password')) remember = fields.BooleanField( _('flask_unchained.bundles.security:form_field.remember_me')) submit = fields.SubmitField( _('flask_unchained.bundles.security:form_submit.login')) def __init__(self, *args, security_service: SecurityService = injectable, security_utils_service: SecurityUtilsService = injectable, **kwargs): super().__init__(*args, **kwargs) self.security_service = security_service self.security_utils_service = security_utils_service self.user = None if not self.next.data: self.next.data = request.args.get('next', '') self.remember.default = app.config.get('SECURITY_DEFAULT_REMEMBER_ME') def validate(self): if not super().validate(): # FIXME-identity if (set(self.errors.keys()) - set( self.security_utils_service.get_identity_attributes())): return False self.user = self.security_utils_service.user_loader(self.email.data) if self.user is None: self.email.errors.append( _('flask_unchained.bundles.security:error.user_does_not_exist') ) return False if not self.user.password: self.password.errors.append( _('flask_unchained.bundles.security:error.password_not_set')) return False if not self.security_utils_service.verify_and_update_password( self.password.data, self.user): self.password.errors.append( _('flask_unchained.bundles.security:error.invalid_password')) return False if (not self.security_service.security.login_without_confirmation and self.security_service.security.confirmable and self.user.confirmed_at is None): self.email.errors.append( _('flask_unchained.bundles.security:error.confirmation_required' )) return False if not self.user.active: self.email.errors.append( _('flask_unchained.bundles.security:error.disabled_account')) return False return True
class UserForm(form.Form): name = fields.StringField('name') password = fields.PasswordField('password') created_at = fields.DateTimeField('created_at') updated_at = fields.DateTimeField('updated_at') sys_info = fields.StringField('sys_info')
class SessionRecordingDeleteForm(Form): name = fields.StringField('Session Recording Name')
class REDU_FileURL(BaseForm): url = fields.StringField( _('Full URL'), [validators.url(require_tld=True, message=_('Invalid URL.'))]) pass
def conv_PGUuid(self, column, field_args, **extra): self._nullable_required(column=column, field_args=field_args, **extra) field_args.setdefault('label', 'UUID') field_args['validators'].append(validators.UUID()) return wtforms_fields.StringField(**field_args)