class SummaryForm(FlaskForm): title = StringField('title') text = StringField('text', widget=TextArea()) url = StringField('url') count = IntegerField('count', widget=Input('number'), validators=[ Required(), NumberRange(min=0)], default=4) k_count = IntegerField('count', widget=Input('number'), validators=[ Required(), NumberRange(min=0)], default=20) def is_text(self): return self.text.data or self.url.data
class ReviewEditForm(FlaskForm): state = StringField(widget=HiddenInput(), default='draft', validators=[validators.DataRequired()]) text = TextAreaField(lazy_gettext("Text"), [ validators.Optional(), StateAndLength(min=MIN_REVIEW_LENGTH, max=MAX_REVIEW_LENGTH, message=lazy_gettext("Text length needs to be between %(min)d and %(max)d characters.", min=MIN_REVIEW_LENGTH, max=MAX_REVIEW_LENGTH))]) license_choice = RadioField( choices=[ ('CC BY-SA 3.0', lazy_gettext('Allow commercial use of this review(<a href="https://creativecommons.org/licenses/by-sa/3.0/" target="_blank">CC BY-SA 3.0 license</a>)')), # noqa: E501 ('CC BY-NC-SA 3.0', lazy_gettext('Do not allow commercial use of this review, unless approved by MetaBrainz Foundation (<a href="https://creativecommons.org/licenses/by-nc-sa/3.0/" target="_blank">CC BY-NC-SA 3.0 license</a>)')), # noqa: E501 ], validators=[validators.DataRequired(message=lazy_gettext("You need to choose a license!"))]) remember_license = BooleanField(lazy_gettext("Remember this license choice for further preference")) language = SelectField(lazy_gettext("You need to accept the license agreement!"), choices=languages) rating = IntegerField(lazy_gettext("Rating"), widget=Input(input_type='number'), validators=[validators.Optional()]) def __init__(self, default_license_id='CC BY-SA 3.0', default_language='en', **kwargs): kwargs.setdefault('license_choice', default_license_id) kwargs.setdefault('language', default_language) FlaskForm.__init__(self, **kwargs) def validate(self): if not super(ReviewEditForm, self).validate(): return False if not self.text.data and not self.rating.data: self.text.errors.append("You must provide some text or a rating to complete this review.") return False return True
def user_profiling_stories_edit(sid): s = ProfileStory.objects.get_or_404(id=sid, account=g.current_account) form = model_form( ProfileStory, exclude=['order', 'content'], field_args={'title': { 'widget': Input(input_type='text') }}) form = form(request.form, obj=s) if form.validate_on_submit(): form.save() return redirect(url_for('.user_profiling_stories')) return render_template('user_profiling/profile_stories_edit.html', story=s, fragment=ProfileStoryFragment, text_form=model_form( ProfileStoryFragment, exclude=['url', 'type', 'story'])(), form=form, action_label='Save', attributes=g.current_account.chat_user_attributes, action_url=url_for('.user_profiling_stories_edit', sid=sid), account_id=g.current_account.id)
def __call__(self, field, **kwargs): attrs = dict(kwargs) btn_attrs = attrs.pop('btn_attrs', {}) data_attrs = attrs.pop('data_attrs', {}) btn_container_attrs = attrs.pop('btn_container_attrs', {}) data_container_attrs = attrs.pop('data_container_attrs', {}) btn_container = [] data_container = [] output = [] for (option_value, option_label, selected) in field.iter_choices(): btn = ButtonWidget() rendered_btn = btn(field, text=option_label, value=option_value, **btn_attrs) btn_container.append(rendered_btn) rb = Input('checkbox' if self.multiple else 'radio') if selected: rb_attrs = dict(data_attrs, value=option_value, checked='checked') else: rb_attrs = dict(data_attrs, value=option_value) rendered_rb = rb(field, id='{}_{}'.format(field.id, option_value), **rb_attrs) data_container.append(rendered_rb) btn = '<div %s>%s</div>' % (html_params(**btn_container_attrs), ' '.join(btn_container)) data = '<div %s>%s</div>' % (html_params(**data_container_attrs), ' '.join(data_container)) output.append(btn) output.append(data) return '\n'.join(output)
class PredictionForm(FlaskForm): from src.server.server import data_service brand = SelectField('Марка', [validators.InputRequired()], choices=data_service.get_brands(), default = data_service.DEFAULT_VALUE) model = SelectField('Модель',[validators.InputRequired()], choices=[]) year = IntegerField('Год выпуска', [validators.InputRequired()], widget=Input('number')) mileage = IntegerField('Пробег', [validators.InputRequired()], widget=Input('number')) capacity = FloatField('Объем', [validators.InputRequired()], widget=Input('number')) wheel = SelectField('Руль', choices=data_service.get_wheel_types(), default = 'левый') fuel = SelectField('Тип топлива', choices=data_service.get_fuel_types(), default = 'бензин') color = SelectField('Цвет', choices=data_service.get_colors(), default = 'белый') carcass = SelectField('Тип кузова ', choices=data_service.get_carcass_types()) drive = SelectField('Привод ', choices=data_service.get_drive_types()) transmission = SelectField('Коробка передач ', choices=data_service.get_transmission_types())
def render_custom_option(self, field, value, label, selected, label_class): cb = Input( 'checkbox' if self.multiple else 'radio' ) # NOTE: CheckboxInput() is always checked if field.data is present rendered_cb = cb(field, checked=selected, value=value, id='{}_{}'.format(field.id, value)) label_class_final = ' class="%s"' % (label_class, ) return '<label%s>%s %s</label>' % (label_class_final, rendered_cb, label)
def render_custom_option(self, field, value, label, selected, label_class): categories = dict(orm.select( (c.id, c.color) for c in Category)) # NOTE: Pony ORM caches this label_attrs = ' style="background-color: %s;"' % categories[value] cb = Input( 'checkbox' if self.multiple else 'radio' ) # NOTE: CheckboxInput() is always checked if field.data is present rendered_cb = cb(field, checked=selected, value=value, id='{}_{}'.format(field.id, value)) label_class_final = ' class="%s"' % (label_class, ) return '<label%s%s>%s %s</label>' % (label_class_final, label_attrs, rendered_cb, label)
def render_custom_option(self, field, value, label, selected, **kwargs): container_attrs = kwargs['container_attrs'] data_attrs = kwargs['data_attrs'] img_url = self.get_img_url(field, value) img_class = 'ui-selected' if selected else '' item_image = '<img class="%s" src="%s" alt="%s" title="%s" />' % ( img_class, img_url, label, label) cb = Input('checkbox' if self.multiple else 'radio') rendered_cb = cb(field, id=False, value=value, checked=selected, **data_attrs) return '<span %s>%s%s</span>' % (html_params(**container_attrs), rendered_cb, item_image)
class AddSpareForm(Form): # Required — это валидатор, функция, которая может быть прикреплена к полю, # для выполнения валидации данных отправленных пользователем. # Валидатор Required просто проверяет, что поле не было отправлено пустым. #NumberRange(min=0) - минимальное значение поля 0 #validators=[optional(), length(max=600)] - количество символов 600 name = StringField('name', validators=[DataRequired()]) type = SelectField(choices=types_spares_list) #ограничим длинну comment = StringField('comment', widget=TextArea(), validators=[optional(), length(max=600)]) count = IntegerField('count', widget=Input(input_type='number'), validators=[ NumberRange(min=0, message='Только положительные числа'), DataRequired() ]) location = StringField('location', validators=[DataRequired()]) image = FileField('image_file') barcode = IntegerField('barcode')
class RegisterForm(FlaskForm): first_name = StringField('First name', validators=[InputRequired(), Length(max=128)]) last_name = StringField('Last name', validators=[InputRequired(), Length(max=128)]) phone = StringField('Phone', validators=[Length(max=128)], widget=Input(input_type='tel')) email = EmailField( 'E-mail', validators=[InputRequired(), Length(max=128), Email(), unique_email]) confirm_email = EmailField('Confirm e-mail', validators=[ InputRequired(), EqualTo('email', message='E-mails must match!') ]) company = StringField('Company', validators=[Length(max=128)]) password = PasswordField('Password', validators=[InputRequired()]) submit = SubmitField('Register')
def test_input_type(self): a = Input() self.assertRaises(AttributeError, getattr, a, 'input_type') b = Input(input_type='test') self.assertEqual(b.input_type, 'test')
def __new__(mcs, entity: Entity, skip_attrs=None, custom_validators=None, skip_pk=True, hide_attrs=None): if skip_attrs is None: skip_attrs = set() if custom_validators is None: custom_validators = dict() if hide_attrs is None: hide_attrs = set() class Form(FlaskForm): pass for colum in entity.__table__.columns: if colum.name in skip_attrs: continue if skip_pk and colum.primary_key: continue kwargs = dict() if colum.name in hide_attrs: kwargs = dict(widget=Input(input_type='hidden')) if not colum.foreign_keys: vals = [] required = not colum.nullable if colum.name in custom_validators: vals.extend(custom_validators[colum.name]) if required and colum.name not in hide_attrs: vals.append(validators.DataRequired()) if colum.primary_key and type(colum.type) == String: # Just use things that wont mess the uri: Issue: pallets/flask#900 vals.append(simple_str_validator) t = None if isinstance(colum.type, Enum): label = colum.name[0].upper() + colum.name[1:] t = SelectField( " ".join(label.split('_')), validators=vals, choices=colum.type.enum_class.choices(), coerce=colum.type.enum_class.coerce, **kwargs ) elif isinstance(colum.type, Boolean): t = BooleanField(validators=vals, **kwargs) elif isinstance(colum.type, Integer): t = IntegerField(validators=vals if required else [validators.Optional()], **kwargs) elif isinstance(colum.type, Date): t = DateField(validators=vals if required else [validators.Optional()], **kwargs) elif isinstance(colum.type, String) and colum.type.length: t = StringField(validators=vals, render_kw=dict(maxlength=colum.type.length), **kwargs) elif isinstance(colum.type, String): t = TextAreaField(validators=vals, **kwargs) elif isinstance(colum.type, Float): t = FloatField(validators=vals, **kwargs) if t is not None: setattr(Form, colum.name, t) return Form
class TimesheetForm(FlaskForm): # def out_time_validator(in_time): # message = "Out time must be after in time!" # def _out_time_validator(form, field): # print(in_time) # out_time = time.strptime(field, '%H:%M') name = TextField('Name:', validators=[validators.required()]) mcgill_id = IntegerField( 'McGill ID:', validators=[ validators.required(), validators.NumberRange( min=260000000, max=260999999, message="Are you sure that looks like a McGill ID number?") ]) hourly_rate = DecimalField('Hourly rate:', validators=[validators.required()]) fund_number = IntegerField('Fund number:', validators=[validators.optional()]) timesheet_template = SelectField( 'Timesheet template:', validators=[validators.required()], default='1', choices=constants.timesheet_template_choices) default_date = datetime.datetime.now() default_date_montreal = pytz.timezone('America/Toronto').localize( default_date) week_of_year = SelectField('Week of:', validators=[validators.required()], default=str(default_date_montreal.year), choices=constants.week_of_year_choices) week_of_month = SelectField('Week of:', validators=[validators.required()], default=str(default_date_montreal.month), choices=constants.week_of_month_choices) week_of_day = SelectField('Week of:', validators=[validators.required()], default=str(default_date_montreal.day), choices=constants.week_of_day_choices) sunday_in = TimeField( validators=[validators.optional(), InTimeValidator('sunday_out')], widget=Input(input_type='time')) sunday_out = TimeField( validators=[validators.optional(), OutTimeValidator('sunday_in')], widget=Input(input_type='time')) monday_in = TimeField( validators=[validators.optional(), InTimeValidator('monday_out')], widget=Input(input_type='time')) monday_out = TimeField( validators=[validators.optional(), OutTimeValidator('monday_in')], widget=Input(input_type='time')) tuesday_in = TimeField( validators=[validators.optional(), InTimeValidator('tuesday_out')], widget=Input(input_type='time')) tuesday_out = TimeField( validators=[validators.optional(), OutTimeValidator('tuesday_in')], widget=Input(input_type='time')) wednesday_in = TimeField( validators=[validators.optional(), InTimeValidator('wednesday_out')], widget=Input(input_type='time')) wednesday_out = TimeField( validators=[validators.optional(), OutTimeValidator('wednesday_in')], widget=Input(input_type='time')) thursday_in = TimeField( validators=[validators.optional(), InTimeValidator('thursday_out')], widget=Input(input_type='time')) thursday_out = TimeField( validators=[validators.optional(), OutTimeValidator('thursday_in')], widget=Input(input_type='time')) friday_in = TimeField( validators=[validators.optional(), InTimeValidator('friday_out')], widget=Input(input_type='time')) friday_out = TimeField( validators=[validators.optional(), OutTimeValidator('friday_in')], widget=Input(input_type='time')) saturday_in = TimeField( validators=[validators.optional(), InTimeValidator('saturday_out')], widget=Input(input_type='time')) saturday_out = TimeField( validators=[validators.optional(), OutTimeValidator('saturday_in')], widget=Input(input_type='time'))