コード例 #1
0
ファイル: forms.py プロジェクト: simple2source/flaskbb
class ChangeUserDetailsForm(Form):
    birthday = BirthdayField(_("Birthday"),
                             format="%d %m %Y",
                             validators=[Optional()],
                             widget=SelectBirthdayWidget())

    gender = SelectField(_("Gender"),
                         default="None",
                         choices=[("None", ""), ("Male", _("Male")),
                                  ("Female", _("Female"))])

    location = StringField(_("Location"), validators=[Optional()])

    website = StringField(_("Website"), validators=[Optional(), URL()])

    avatar = StringField(_("Avatar"), validators=[Optional(), URL()])

    signature = TextAreaField(_("Forum Signature"), validators=[Optional()])

    notes = TextAreaField(_("Notes"),
                          validators=[Optional(),
                                      Length(min=0, max=5000)])

    submit = SubmitField(_("Save"))

    def validate_birthday(self, field):
        if field.data is None:
            return True

    def validate_avatar(self, field):
        if field.data is not None:
            error, status = check_image(field.data)
            if error is not None:
                raise ValidationError(error)
            return status
コード例 #2
0
def test_select_birthday_widget():
    """Test the SelectDateWidget."""

    assert SelectBirthdayWidget.FORMAT_CHOICES['%d'] == [(x, str(x))
                                                         for x in range(1, 32)]
    assert SelectBirthdayWidget.FORMAT_CHOICES['%m'] == [(x, str(x))
                                                         for x in range(1, 13)]

    assert SelectBirthdayWidget.FORMAT_CLASSES == {
        '%d': 'select_date_day',
        '%m': 'select_date_month',
        '%Y': 'select_date_year'
    }

    select_birthday_widget = SelectBirthdayWidget(years=[0, 1])

    assert select_birthday_widget.FORMAT_CHOICES['%Y'] == [(0, '0'), (1, '1')]

    class Field(object):
        id = 'world'
        name = 'helloWorld'
        format = '%d %m %Y'
        data = None

    html = select_birthday_widget(field=Field(), surrounded_div="test-div")
    assert 'world' in html
    assert 'helloWorld' in html
    assert 'class="select_date_day"' in html
    assert 'class="select_date_month"' in html
    assert 'class="select_date_year"' in html
    assert '<div class="test-div">' in html
コード例 #3
0
class UserForm(Form):
    username = StringField(
        _("Username"),
        validators=[
            DataRequired(message=_("A Username is required.")), is_username
        ])

    email = StringField(
        _("E-Mail Address"),
        validators=[
            DataRequired(message=_("A E-Mail Address is required.")),
            Email(message=_("Invalid E-Mail Address."))
        ])

    password = PasswordField("Password", validators=[Optional()])

    birthday = BirthdayField(_("Birthday"),
                             format="%d %m %Y",
                             widget=SelectBirthdayWidget(),
                             validators=[Optional()])

    gender = SelectField(_("Gender"),
                         default="None",
                         choices=[("None", ""), ("Male", _("Male")),
                                  ("Female", _("Female"))])

    location = StringField(_("Location"), validators=[Optional()])

    website = StringField(_("Website"), validators=[Optional(), URL()])

    avatar = StringField(_("Avatar"), validators=[Optional(), URL()])

    signature = TextAreaField(_("Forum Signature"),
                              validators=[Optional(),
                                          Length(min=0, max=250)])

    notes = TextAreaField(_("Notes"),
                          validators=[Optional(),
                                      Length(min=0, max=5000)])

    primary_group = QuerySelectField(_("Primary Group"),
                                     query_factory=select_primary_group,
                                     get_label="name")

    secondary_groups = QuerySelectMultipleField(
        _("Secondary Groups"),
        # TODO: Template rendering errors "NoneType is not callable"
        #       without this, figure out why.
        query_factory=select_primary_group,
        get_label="name")

    submit = SubmitField(_("Save"))

    def validate_username(self, field):
        if hasattr(self, "user"):
            user = User.query.filter(
                db.and_(User.username.like(field.data),
                        db.not_(User.id == self.user.id))).first()
        else:
            user = User.query.filter(User.username.like(field.data)).first()

        if user:
            raise ValidationError(_("This Username is already taken."))

    def validate_email(self, field):
        if hasattr(self, "user"):
            user = User.query.filter(
                db.and_(User.email.like(field.data),
                        db.not_(User.id == self.user.id))).first()
        else:
            user = User.query.filter(User.email.like(field.data)).first()

        if user:
            raise ValidationError(_("This E-Mail Address is already taken."))

    def save(self):
        user = User(**self.data)
        return user.save()