Exemple #1
0
class PostForm(Form):

    title = TextField(_("Title"),
                      validators=[required(message=_("Title required"))])

    slug = TextField(_("Slug"))

    content = TextAreaField(_("Content"))

    tags = TextField(_("Tags"),
                     validators=[required(message=_("Tags required"))])

    submit = SubmitField(_("Save"))

    def __init__(self, *args, **kwargs):
        self.post = kwargs.get('obj', None)
        super(PostForm, self).__init__(*args, **kwargs)

    def validate_slug(self, field):
        if len(field.data) > 50:
            raise ValidationError, gettext(
                "Slug must be less than 50 characters")
        slug = slugify(field.data) if field.data else slugify(
            self.title.data)[:50]
        posts = Post.query.filter_by(slug=slug)
        if self.post:
            posts = posts.filter(db.not_(Post.id == self.post.id))
        if posts.count():
            error = gettext("This slug is taken") if field.data else gettext(
                "Slug is required")
            raise ValidationError, error
Exemple #2
0
class BookmarkForm(AjaxForm):
    id = HiddenField(u'Id')
    link = URLField(u'Link', validators=[validators.required(),
        validators.url(), ])
    title = TextField(u'Title', validators=[validators.required(), ])
    description = TextAreaField(u'Description')
    tags = TextField(u'Tags')
    submit = SubmitField(u'Add')

    def __init__(self, formdata=None, *args, **kwargs):
        self.create = kwargs.get('create', False)
        super(BookmarkForm, self).__init__(formdata, *args, **kwargs)

    def validate(self):
        rv = Form.validate(self)
        if not rv:
            return False

        link = self.link.data
        title = self.title.data
        description = self.description.data
        tags = map(lambda x: {'name': x.strip()}, self.tags.data.split(','))

        # TODO : add id control if create is False (modification mode need a
        # valid bookmark id)
        self.bookmark = ItemBookmark(ptags=tags, plink=link, ptitle=title,
            pdescription=description, json=True)
        return True
Exemple #3
0
class EmailForm(Form):
    """Simple email form."""
    name = TextField("Your Name", validators=[Required()])
    recipient = TextField("Recipient's Email", validators=[Email()])
    email = TextField("Your Email", validators=[Email()])
    message = TextAreaField("Message", validators=[Required()])
    submit = SubmitField("Send Email")
Exemple #4
0
class RegistrationForm(Form):
    username = TextField('Username', [
        validators.Required(),
        validators.Length(
            min=3, max=30, message='Username must be %(min)d - %(max)d chars'),
        validators.Regexp(
            '^[A-Za-z0-9\-_]+$',
            message=
            'Username may only contain letters, numbers, dashes and underscores'
        )
    ])
    email = TextField('Email', [
        validators.Required(),
        validators.Email(),
        validators.Length(max=255)
    ])
    password = PasswordField('Password', [
        validators.Required(),
        validators.EqualTo('password_confirm',
                           message='Passwords did not match')
    ])
    password_confirm = PasswordField('Confirm Password')
    submit = SubmitField('Register')

    def validate_username(form, field):
        user = models.User.query.filter_by(username=field.data).all()
        if user:
            raise ValidationError, 'Username already exists'
Exemple #5
0
class PostForm(Form):

    title = TextField(_("Title of your post"),
                      validators=[required(message=_("Title required"))])

    link = TextField(
        _("Link"),
        validators=[optional(),
                    url(message=_("This is not a valid URL"))])

    description = TextAreaField(_("Description"))

    tags = TextField(_("Tags"))

    access = RadioField(_("Who can see this post ?"),
                        default=Post.PUBLIC,
                        coerce=int,
                        choices=((Post.PUBLIC, _("Everyone")),
                                 (Post.FRIENDS, _("Friends only")),
                                 (Post.PRIVATE, _("Just myself"))))

    submit = SubmitField(_("Save"))

    def __init__(self, *args, **kwargs):
        self.post = kwargs.get('obj', None)
        super(PostForm, self).__init__(*args, **kwargs)

    def validate_link(self, field):
        posts = Post.query.public().filter_by(link=field.data)
        if self.post:
            posts = posts.filter(db.not_(Post.id == self.post.id))
        if posts.count():
            raise ValidationError, gettext("This link has already been posted")
Exemple #6
0
class CreateForm(Form):
    """
    /projects/create 用のフォームクラス
    入力値チェックも担う
    """
    title = TextField(u'タイトル', [validators.Length(min=1, max=25)])
    description = TextField(u'説明', [validators.Length(min=1, max=100)])
Exemple #7
0
class SignUpForm(Form):
    ID = TextField(u'身份證字號', validators=[check_ID, NoneOf(ExistingUsersID(), u'此身份證字號已存在,請確認是否已註冊')])
    mobile_phone = TextField(u'行動電話', validators=[Regexp(r'^09\d{8}$', message=u'行動電話號碼格式不正確')])
    email = TextField(u'電子郵件', validators=[Email(u'電子郵件位址格式不正確')])
    password = PasswordField(u'密碼', validators=[Required(u'請設定密碼')])
    chk_password = PasswordField(u'確認密碼', validators=[EqualTo('password', u'兩次輸入的密碼不相符')])
    recaptcha = RecaptchaField(u'圖形驗證', validators=[check_recaptcha_filled, Recaptcha(u'輸入錯誤,請再試一遍')])
Exemple #8
0
class EducationForm(Form):
    degree = TextField(u'学历', validators=[required(message=u'必填')])
    study_date = HiddenField(validators=[required(message=u'必填')])
    school = TextField(u'学校', validators=[required(message=u'必填')])
    speciality_type = HiddenField(u'专业类别',
                                  validators=[required(message=u'必填')])
    speciality = TextField(u'专业名称')
Exemple #9
0
class SignupForm(Form):

    next = HiddenField()

    username = TextField(_("Username"), validators=[
                         required(message=_("Username required")), 
                         is_username])

    password = PasswordField(_("Password"), validators=[
                             required(message=_("Password required"))])

    password_again = PasswordField(_("Password again"), validators=[
                                   equal_to("password", message=\
                                            _("Passwords don't match"))])

    email = TextField(_("Email address"), validators=[
                      required(message=_("Email address required")), 
                      email(message=_("A valid email address is required"))])

    recaptcha = RecaptchaField(_("Copy the words appearing below"))

    submit = SubmitField(_("Signup"))

    def validate_username(self, field):
        user = User.query.filter(User.username.like(field.data)).first()
        if user:
            raise ValidationError, gettext("This username is taken")

    def validate_email(self, field):
        user = User.query.filter(User.email.like(field.data)).first()
        if user:
            raise ValidationError, gettext("This email is taken")
Exemple #10
0
class BulkTaskEpiCollectPlusImportForm(BulkTaskImportForm):
    msg_required = lazy_gettext("You must provide an EpiCollect Plus "
                                "project name")
    msg_form_required = lazy_gettext("You must provide a Form name "
                                     "for the project")
    epicollect_project = TextField(lazy_gettext('Project Name'),
                                   [validators.Required(message=msg_required)])
    epicollect_form = TextField(lazy_gettext('Form name'),
                                [validators.Required(message=msg_required)])
    template_id = "epicollect"
    form_id = "epiform"
    form_detector = "epicollect_project"

    def import_epicollect_tasks(self, data):
        for d in data:
            yield {"info": d}

    def get_data_url(self, form):
        return 'http://plus.epicollect.net/%s/%s.json' % \
            (form.epicollect_project.data, form.epicollect_form.data)

    def get_epicollect_data_from_request(self, r):
        if r.status_code == 403:
            msg = "Oops! It looks like you don't have permission to access" \
                " the EpiCollect Plus project"
            raise BulkImportException(gettext(msg), 'error')
        if not 'application/json' in r.headers['content-type']:
            msg = "Oops! That project and form do not look like the right one."
            raise BulkImportException(gettext(msg), 'error')
        return self.import_epicollect_tasks(json.loads(r.text))

    def tasks(self, form):
        dataurl = self.get_data_url(form)
        r = requests.get(dataurl)
        return self.get_epicollect_data_from_request(r)
Exemple #11
0
class CityForm(Form):
    name = TextField(u"城市名称", validators=[required(message=u"必填")])
    label = TextField(u"label", validators=[required(message=u"必填")])
    no = TextField(u"序号", validators=[required(message=u"必填")])

    submit = SubmitField(u"提交")
    next = HiddenField()
Exemple #12
0
class AppForm(Form):
    id = IntegerField(label=None, widget=HiddenInput())
    name = TextField(lazy_gettext('Name'), [
        validators.Required(),
        pb_validator.Unique(db.session,
                            model.App,
                            model.App.name,
                            message="Name is already taken.")
    ])
    short_name = TextField(lazy_gettext('Short Name'), [
        validators.Required(),
        pb_validator.NotAllowedChars(),
        pb_validator.Unique(
            db.session,
            model.App,
            model.App.short_name,
            message=lazy_gettext("Short Name is already taken."))
    ])
    description = TextField(lazy_gettext('Description'), [
        validators.Required(
            message=lazy_gettext("You must provide a description."))
    ])
    thumbnail = TextField(lazy_gettext('Icon Link'))
    allow_anonymous_contributors = SelectField(
        lazy_gettext('Allow Anonymous Contributors'),
        choices=[('True', lazy_gettext('Yes')), ('False', lazy_gettext('No'))])
    long_description = TextAreaField(lazy_gettext('Long Description'))
    sched = SelectField(
        lazy_gettext('Task Scheduler'),
        choices=[('default', lazy_gettext('Default')),
                 ('breadth_first', lazy_gettext('Breadth First')),
                 ('depth_first', lazy_gettext('Depth First')),
                 ('random', lazy_gettext('Random'))],
    )
    hidden = BooleanField(lazy_gettext('Hide?'))
Exemple #13
0
class EditProfileForm(Form):
    username = TextField(
        "Username",
        validators=[
            Regexp('^[a-zA-Z0-9_.-]+$',
                   message="Username contains invalid characters"),
            Length(min=2,
                   max=16,
                   message="Username must be between 2 and 16 characters"),
            username_same_or_exists, does_not_have_bad_words
        ])

    email = TextField("Email Address",
                      validators=[
                          Required(message='Email required'),
                          Email(message="Invalid email address")
                      ])

    password = PasswordField(
        "Change Password",
        validators=[
            Length(min=4,
                   max=32,
                   message="Username must be between 2 and 16 characters"),
            EqualTo('password2', message='Passwords must match'),
            Optional()
        ])

    password2 = PasswordField("Repeat password", validators=[Optional()])
Exemple #14
0
class PostForm(Form):
    title = TextField(u"标题",
                      validators=[required(message=u"标题不能为空")],
                      id="post_title")

    link = TextField(u"链接",
                     default="http://",
                     validators=[optional(),
                                 url(message=u"必须是个有效的链接")],
                     id="post_link")
    description = TextAreaField(u"描述", id="post_description")
    tags = TextField(u"标签(用逗号分隔)", id="post_tags")
    access = RadioField(u"谁可以查看?",
                        default=Post.PUBLIC,
                        coerce=int,
                        choices=((Post.PUBLIC, u"任何人"), (Post.FRIENDS, u"好友"),
                                 (Post.PRIVATE, u"只有自己")))
    submit = SubmitField(u"提交")

    def __init__(self, *args, **kwargs):
        self.post = kwargs.get('obj', None)
        super(PostForm, self).__init__(*args, **kwargs)

    def validate_link(self, field):
        posts = Post.query.public().filter_by(link=field.data)
        if self.post:
            posts = posts.filter(db.not_(Post.id == self.post.id))
        if posts.count():
            raise ValidationError, u"这个链接已经有人提交了"
Exemple #15
0
class RegisterForm(Form):
    err_msg = lazy_gettext(
        "Full name must be between 3 and 35 characters long")
    fullname = TextField(lazy_gettext('Full name'),
                         [validators.Length(min=3, max=35, message=err_msg)])

    err_msg = lazy_gettext(
        "User name must be between 3 and 35 characters long")
    err_msg_2 = lazy_gettext("The user name is already taken")
    username = TextField(lazy_gettext('User name'), [
        validators.Length(min=3, max=35, message=err_msg),
        pb_validator.NotAllowedChars(),
        pb_validator.Unique(db.session, model.User, model.User.name, err_msg_2)
    ])

    err_msg = lazy_gettext("Email must be between 3 and 35 characters long")
    err_msg_2 = lazy_gettext("Email is already taken")
    email_addr = TextField(lazy_gettext('Email Address'), [
        validators.Length(min=3, max=35, message=err_msg),
        validators.Email(),
        pb_validator.Unique(db.session, model.User, model.User.email_addr,
                            err_msg_2)
    ])

    err_msg = lazy_gettext("Password cannot be empty")
    err_msg_2 = lazy_gettext("Passwords must match")
    password = PasswordField(lazy_gettext('New Password'), [
        validators.Required(err_msg),
        validators.EqualTo('confirm', err_msg_2)
    ])

    confirm = PasswordField(lazy_gettext('Repeat Password'))
Exemple #16
0
class RegisterForm(Form):
    fullname = TextField('Full name', [
        validators.Length(
            min=3,
            max=35,
            message="Full name must be between 3 and 35 characters long")
    ])
    username = TextField('User name', [
        validators.Length(
            min=3,
            max=35,
            message="User name must be between 3 and 35 characters long"),
        Unique(model.Session,
               model.User,
               model.User.name,
               message="The user name is already taken")
    ])
    email_addr = TextField('Email Address', [
        validators.Length(
            min=3,
            max=35,
            message="Email must be between 3 and 35 characters long"),
        validators.Email(),
        Unique(model.Session,
               model.User,
               model.User.email_addr,
               message="Email is already taken")
    ])
    password = PasswordField('New Password', [
        validators.Required(message="Password cannot be empty"),
        validators.EqualTo('confirm', message='Passwords must match')
    ])
    confirm = PasswordField('Repeat Password')
Exemple #17
0
class UpdateProfileForm(Form):
    id = IntegerField(label=None, widget=HiddenInput())
    fullname = TextField('Full name', [
        validators.Length(
            min=3,
            max=35,
            message="Full name must be between 3 and 35 characters long")
    ])
    name = TextField('User name', [
        validators.Length(
            min=3,
            max=35,
            message="User name must be between 3 and 35 characters long"),
        Unique(model.Session,
               model.User,
               model.User.name,
               message="The user name is already taken")
    ])
    email_addr = TextField('Email Address', [
        validators.Length(
            min=3,
            max=35,
            message="Email must be between 3 and 35 characters long"),
        validators.Email(),
        Unique(model.Session,
               model.User,
               model.User.email_addr,
               message="Email is already taken")
    ])
Exemple #18
0
class CateForm(Form):
    name = TextField(u"分类名称", validators=[required(message=u"必填")])
    label = TextField(u"label", validators=[required(message=u"必填")])
    logo = TextField(u"图标css类", validators=[required(message=u"必填")])
    no = TextField(u"序号", validators=[required(message=u"必填")])

    submit = SubmitField(u"提交")
    next = HiddenField()
Exemple #19
0
class RegisterForm(Form):
    nickname = TextField(u'昵称', [Required(), Length(min=3, max=12)])
    email = TextField(u'邮件地址', [Length(min=6, max=30), Email(), email_unique])
    password = PasswordField(u'密码', [Length(min=6, max=12), Required()])
    password_confirm = PasswordField(
        u'密码确认',
        [Required(), EqualTo('password', message=u'密码必须相同')])
    captcha = TextField(u'验证码', [Required()])
Exemple #20
0
class JqGridForm(Form):
    search = JqSearchField('')
    page = IntegerField('')
    rows = IntegerField('')
    page = IntegerField('')
    sidx = TextField('')
    sord = TextField('')
    filters = JsonField('')
Exemple #21
0
class CategoryForm(Form):
    id = IntegerField(label=None, widget=HiddenInput())
    name = TextField(lazy_gettext('Name'),
                     [validators.Required(),
                      pb_validator.Unique(db.session, model.Category, model.Category.name,
                                          message="Name is already taken.")])
    description = TextField(lazy_gettext('Description'),
                            [validators.Required()])
Exemple #22
0
class ProfileForm(Form):
    photo_img = FileField(u'头像', validators=[])
    email = TextField(u'邮箱地址*', validators=[Required(), Email()])
    nickname = TextField(u'昵称*',
                         validators=[Required(),
                                     Regexp('[\w\d-]{2,20}')])
    title = TextField(u'签名*', validators=[Required(), Regexp('.{0,128}')])
    sex = RadioField(u'性别*', coerce=int, choices=[(0, u'男人'), (1, u'女人')])
Exemple #23
0
class EntryCommentForm(Form):
    body = TextAreaField("Comment",
                         [Length(min=4, max=1024, message="Required")])
    posted_by_name = TextField("Name",
                               [Length(min=4, max=128, message="Required")])
    posted_by_email = EmailField(
        "E-Mail", [Email("Invalid e-mail address"),
                   Required("Required")])
    return_to = TextField()
    recaptcha = RecaptchaField()
Exemple #24
0
class MemberForm(Form):
    given_name = TextField("Given name", validators=[Required()])
    family_name = TextField("Family name", validators=[Required()])
    email = TextField("Email address", validators=[Required()])

    def save(self):
        create_member(None, self.given_name.data, self.family_name.data,
                      self.email.data)
        flash("%s %s have been added" %
              (self.given_name.data, self.family_name.data))
Exemple #25
0
class EventForm(Form):
    name = TextField("Name",
                     validators=[Required(), validate_unique_event_name])
    description = TextField("Description")
    registration_opens = DateTimeField('Registration opens',
                                       validators=[Required()],
                                       format='%d.%m.%Y %H:%M:%S')
    registration_closes = DateTimeField('Registration closes',
                                        validators=[Required()],
                                        format='%d.%m.%Y %H:%M:%S')
Exemple #26
0
class UploadForm(Form):
    """A simple form for uploading files to Open Data Boston."""
    name = TextField('Name', validators=[Required()])
    email = TextField('Email', validators=[Email()])
    phone = TextField('Phone Number')
    file = FileField()
    title = TextField('Title')
    url = TextField('Dataset URL')
    description = TextAreaField('Description', validators=[Required()])
    submit = SubmitField('Submit')
Exemple #27
0
class ContactForm(Form):
    name = TextField("Name", [validators.Required("Please, enter your name.")])
    email = TextField("Email", [
        validators.Required("Please enter your email address."),
        validators.Email("Please enter valid email address.")
    ])
    subject = TextField("Subject",
                        [validators.Required("Please enter a subject.")])
    message = TextAreaField("Message",
                            [validators.Required("Please enter a message.")])
    submit = SubmitField("Send")
Exemple #28
0
class ContactForm(Form):
    firstname = TextField(validators=[
        Length(min=2,
               max=16,
               message="First name must be between 2 and 16 characters"),
        Required(message='First name is required')
    ])

    lastname = TextField(validators=[
        Length(min=2,
               max=16,
               message="Last name must be between 2 and 16 characters"),
        Required(message='Last name is required')
    ])

    email = TextField("Email Address",
                      validators=[
                          Required(message='Email is required'),
                          Email(message="Invalid email address")
                      ])

    feedback = SelectField(validators=[
        Required("A feedback type is required"),
        AnyOf(["question", "comment", "bug"]),
        Required()
    ],
                           choices=[("question", 'Question'),
                                    ("comment", 'Comment'), ("bug", 'Bug')])

    comment = TextAreaField(validators=[
        Length(min=1, max=300, message="Please provide some feedback"),
        Required("A comment is required")
    ])

    def __init__(self, *args, **kwargs):
        super(ContactForm, self).__init__(*args, **kwargs)
        if self.firstname.data and \
           'first' == self.firstname.data.lower():
            self.firstname.data = ''

        if self.lastname.data and \
           'last' == self.lastname.data.lower():
            self.lastname.data = ''

        if self.email.data and \
           'i.e. ' in self.email.data:
            self.email.data = ''

    def to_dict(self):
        return dict(firstname=self.firstname.data,
                    lastname=self.firstname.data,
                    email=self.email.data,
                    feedback=self.feedback.data,
                    comment=self.comment.data)
Exemple #29
0
class RegisterForm(Form):
    fullname = TextField('Full name',
                         validators=[Required("Your name is required")])
    email = TextField('Email address',
                      validators=[Required("Your email address is required"),
                      Email()])
    company = TextField('Company name')
    jobtitle = TextField('Job title')
    twitter = TextField('Twitter id')
    referrer = SelectField('How did you hear about this event?',
                           choices=REFERRERS)
Exemple #30
0
class RegistrationForm(Form):
    email = TextField("email",
                      [validators.Email(message="Not a valid email address")])
    username = TextField(
        "username", [validators.Length(min=6),
                     Unique(User, User.username)])
    password = PasswordField("Password", [
        validators.Required(),
        validators.EqualTo("Confirm", message="Passwords must match")
    ])
    confirm = PasswordField("Repeat Password")
    recaptcha = RecaptchaField()