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
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
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")
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'
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")
class CreateForm(Form): """ /projects/create 用のフォームクラス 入力値チェックも担う """ title = TextField(u'タイトル', [validators.Length(min=1, max=25)]) description = TextField(u'説明', [validators.Length(min=1, max=100)])
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'輸入錯誤,請再試一遍')])
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'专业名称')
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")
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)
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()
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?'))
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()])
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"这个链接已经有人提交了"
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'))
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')
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") ])
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()
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()])
class JqGridForm(Form): search = JqSearchField('') page = IntegerField('') rows = IntegerField('') page = IntegerField('') sidx = TextField('') sord = TextField('') filters = JsonField('')
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()])
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'女人')])
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()
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))
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')
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')
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")
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)
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)
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()