class TicketForm(Form): def bind_runtime_fields(self, g, ticket=None): self.product.queryset = Product.get_all_products(g.organization._id) self.owner.queryset = User.get_all_users(g.organization._id) if ticket is not None: self.tid.data = ticket.id else: self.owner.default = unicode(g.user.id) tid = HiddenField('id', validators=[Length(max=24)]) title = TextField('Title') body = TextAreaField('Body') priority = SelectField('Priority', choices=[(x, PRIORITIES[x]) for x in\ xrange(len(PRIORITIES))], coerce=int) product = QSSelectField('Product', label_attr='name') tags = TagsField('Tags', description='Comma separated (e.g., auth,crash,login)') owner = QSSelectField('Owner', label_attr=('name.first', 'name.last')) new_comment = TextAreaField('Comment') status = SelectField('Status', choices=[(x, STATUSES[x]) for x in xrange(len(STATUSES))], coerce=int, default=0) submit = SubmitField('Submit')
class EntryForm(Form): title = TextField(u"标题", validators=[required(message=u"必填")]) brief = TextAreaField(u"简介", validators=[required(message=u"必填")]) desc = TextAreaField(u"描述", validators=[required(message=u"必填")]) tags = TextField(u"标签", validators=[required(message=u"必填")]) address = TextField(u"地址", validators=[required(message=u"必填")]) worktime = TextField(u"服务时间", validators=[required(message=u"必填")]) serviceitems = TextField(u"服务项目", validators=[required(message=u"必填")]) serviceareas = TextField(u"服务地区", validators=[required(message=u"必填")]) contracts = TextField(u"联系号码", validators=[required(message=u"必填")]) linkman = TextField(u"联系人", validators=[required(message=u"必填")]) location = TextField(u"经纬度", validators=[required(message=u"必填")]) submit = SubmitField(u"提交") next = HiddenField()
class QuestionForm(Form): category = SelectField("Category", validators=[Required(), check_if_category_exists]) author = TextField("Author", validators=[check_if_user_does_not_exist, Optional()]) text = TextAreaField( "Text", validators=[ Length(min=1, max=140, message="Question must be between 2 and 256 characters"), Required() ]) def __init__(self, *args, **kwargs): super(QuestionForm, self).__init__(*args, **kwargs) cat_choices = [(str(c.id), c.name) for c in cdw.categories.all()] self.category.choices = cat_choices def to_question(self): try: user = cdw.users.with_id(self.author.data) except: user = None return Question(category=cdw.categories.with_id(self.category.data), author=user, text=self.text.data)
class CommentForm(Form): title = TextField("title", [validators.Required()]) text = TextAreaField("text") post_id = HiddenField("post_id") comment_id = HiddenField("comment_id") delete = BooleanField("delete comment") recaptcha = RecaptchaField()
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 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 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 CommentForm(Form): comment = TextAreaField(validators=[ required(message=_("Comment is required"))]) submit = SubmitField(_("Save")) cancel = SubmitField(_("Cancel"))
class TemplateForm(Form): html = TextAreaField(_("HTML"), validators=[required(message=_("HTML required"))]) submit = SubmitField(_("Save")) cancel = SubmitField(_("Cancel"))
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 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 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 ThreadCrudForm(Form): question_id = HiddenField(validators=[Required(), valid_question]) author_id = SelectMultipleField("Author", validators=[check_if_user_does_not_exist]) yesno = SelectField("Yes or No?", validators=[AnyOf(["1", "0"]), Required()], choices=[("1", 'Yes'), ("0", 'No')]) text = TextAreaField( "Opinion", validators=[ Length(min=1, max=140, message="Post must be between 2 and 140 characters"), Required(), does_not_have_bad_words ]) likes = IntegerField("Likes", validators=[Optional()]) def __init__(self, question_id=None, *args, **kwargs): super(ThreadCrudForm, self).__init__(*args, **kwargs) if question_id: self.question_id.data = question_id self.author_id.choices = [(str(u.id),'%s (%s)' % (u.username, u.origin)) \ for u in cdw.users.with_fields(isAdmin=True).order_by("+username")]
class TopicForm(Form): body = TextAreaField('Body', [Required()]) excerpt = TextAreaField('Excerpt', [Required()]) meta_description = TextAreaField('Meta Description') category = TextField('Category', [Required()]) name = TextField('Name', [Required()]) published = BooleanField('Published') login_required = BooleanField('Login Required') system = HiddenField() def __init__(self, *args, **kwargs): kwargs['csrf_enabled'] = False super(TopicForm, self).__init__(*args, **kwargs) def validate_category(form, field): return slugify(field.data)
class GistForm(Form): code_type = SelectField( _("Language"), validators=[required(message=_("Language required"))], choices=langs) desc = TextAreaField(_("Brief"), validators=[ required(message=_("Description required")), length(max=140, message=_("Pls. less than 140 charactaer")) ]) content = TextAreaField(_("Code"), validators=[required(message=_("Code required"))]) tags = TextField(_("Tags"), validators=[required(message=_("Tags required"))]) submit = SubmitField(_("Commit"))
class ReplyForm(Form): content = TextAreaField(_("Reply"), validators=[ required(message=_("Content required")), length( max=140, message=_("Pls. less than 140 characater")) ]) submit = SubmitField(_("Commit"))
class CommentAbuseForm(Form): complaint = TextAreaField("Complaint", validators=[ required(message=\ _("You must enter the details" " of the complaint"))]) submit = SubmitField(_("Send"))
class MessageForm(Form): subject = TextField(_("Subject"), validators=[required(message=_("Subject required"))]) message = TextAreaField( _("Message"), validators=[required(message=_("Message required"))]) submit = SubmitField(_("Send"))
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 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 SolutionForm(Form): description = TextAreaField( 'Description/Notes', [validators.Optional(), validators.Length(max=255)]) youtube = TextField('YouTube Link', [ validators.Optional(), validators.Length(max=255), validators.Regexp('^(http://)?(www\.)?youtu\.?be[\./]', message='Not a valid YouTube URL') ]) submit = SubmitField('Update')
class SystemForm(Form): name = TextField('Name', [Required()]) description = TextAreaField('Description', [Required()]) meta_description = TextAreaField('Meta Description', [Required(), Length(min=90, max=170)]) icon_url = TextField('Icon URL') def __init__(self, *args, **kwargs): kwargs['csrf_enabled'] = False super(SystemForm, self).__init__(*args, **kwargs) # def validate_icon_url(form, field): # if field.data: # print 'herefasdfasd' # import urllib2 # try: # req = urllib2.Request(field.data, None, None) # urllib2.urlopen(req) # except Exception, e: # logging.info("exception %s" % e) # raise ValidationError('Invalid URL')
class ReplyMessageForm(Form): subject = TextField(u'标题', validators=[ validators.required(message=u"标题不能为空"), validators.Length(min=4, max=100) ]) content = TextAreaField(u'内容', validators=[ validators.required(message=u"内容不能为空"), validators.Length(min=6, max=2000) ]) submit = SubmitField(u'发送')
class UpdateProfileForm(Form): blog = TextField(_("Blog"), validators=[optional()]) github = TextField(_("Github"), validators=[optional()]) brief = TextAreaField(_("Brief"), validators=[ optional(), length( max=140, message=_("Pls. less than 140 characater")) ]) next = HiddenField() submit = SubmitField(_("Update profile")) delete = SubmitField(_("Delete"))
class RegisterForm(Form): fullname = TextField('Full name', validators=[Required()]) email = TextField('Email address', validators=[Required(), Email()]) company = TextField('Company name (or school/college)', validators=[Required()]) jobtitle = TextField('Job title', validators=[]) twitter = TextField('Twitter id (optional)') referrer = SelectField('How did you hear about this event?', validators=[Required()], choices=REFERRERS) reason = TextAreaField( 'Reasons we should pick you', validators=[Required()], default="Specifics would be good!", )
class EntryForm(Form): title = TextField('Title', [validators.Length(min=1, max=255, message="You must provide a title")]) body = TextAreaField('Body', [validators.Length(min=4, max=1048576, message="The body is required")]) time = DateTimeField('Time', display_format="%H:%M") date = DateTimeField('Date', display_format="%m/%d/%Y") tags = TextField('Tags') is_draft = BooleanField('Draft?') is_deleted = BooleanField('Delete?') post_id = IntegerField('id', widget=HiddenInput())
class PostForm(Form): title = TextField('Titulo:', [ validators.Length(min=5, max=60, message="O Titulo deve ter entre 5 a 60 caracteres.") ]) text = TextAreaField('Texto:', [ validators.Length(min=5, message="O Texto deve ter no minimo 5 caracteres.") ]) tags = TextField('Tags:',[ validators.required(message="Informe uma tag.") ]) def __init__(self, model_instance = None, *args, **kwargs): """Método construtor da classe, preenche model ao criar form.""" kwargs['csrf_enabled'] = False super(PostForm, self).__init__(*args, **kwargs) self.model = None if model_instance: self.title.data = model_instance.title self.text.data = model_instance.text self.tags.data = self.get_tags( model_instance.tags ) self.model = model_instance def save(self): """Método responsável em salvar post no bigtable.""" if self.model: self.model.title = self.title.data self.model.text = self.text.data self.model.tags = self.set_tags(self.tags.data) else: self.model = Post( title = self.title.data, text = self.text.data, tags = self.set_tags(self.tags.data) ) self.model.put() return self.model def get_tags(self, tags): """Metodo que recupera valor do atributo tags.""" tstr = "" for tag in tags: tstr += "%s," % tag return tstr[:-1] def set_tags(self, tags): """Método que define valor para o atributo tags.""" tag = TagCategory() return tag.string_to_category( tags )
class PostCrudForm(Form): yesno = SelectField("Yes or No?", validators=[AnyOf(["1", "0"]), Required()], choices=[("1", 'Yes'), ("0", 'No')]) debate_id = HiddenField(validators=[check_if_thread_exists]) text = TextAreaField(validators=[ Length(min=1, max=140, message="Post must be between 2 and 140 characters"), Required(), does_not_have_bad_words ]) author_id = SelectMultipleField("Author", validators=[check_if_user_does_not_exist]) origin = SelectField(validators=[ Required(), AnyOf(["web", "kiosk", "cell"]), ], choices=[("web", 'Web'), ("kiosk", 'Kiosk'), ("cel", "Cell")]) likes = IntegerField("Likes", validators=[Optional()]) def __init__(self, debate_id=None, *args, **kwargs): super(PostCrudForm, self).__init__(*args, **kwargs) if debate_id: self.debate_id.data = debate_id self.author_id.choices = [(str(u.id),'%s (%s)' % (u.username, u.origin)) \ for u in cdw.users.with_fields(isAdmin=True).order_by("+username")] def to_post(self): try: responseTo = cdw.posts.with_id(self.responseto.data) except: responseTo = None return Post(yesNo=int(self.yesno.data), text=self.text.data, author=User.objects.with_id(self.author_id.data[0]), origin=self.origin.data, likes=self.likes.data, responseTo=responseTo)