Beispiel #1
0
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
Beispiel #2
0
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
Beispiel #3
0
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)
Beispiel #4
0
 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)
Beispiel #5
0
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())


        
    
Beispiel #6
0
 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)
Beispiel #7
0
 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)
Beispiel #8
0
 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)
Beispiel #9
0
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')
Beispiel #10
0
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')
Beispiel #11
0
 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')
Beispiel #12
0
    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
Beispiel #13
0
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'))