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')
Exemple #2
0
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()
Exemple #3
0
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)
Exemple #4
0
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()
Exemple #5
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 #6
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 #7
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 #8
0
class CommentForm(Form):

    comment = TextAreaField(validators=[
                            required(message=_("Comment is required"))])

    submit = SubmitField(_("Save"))
    cancel = SubmitField(_("Cancel"))
Exemple #9
0
class TemplateForm(Form):

    html = TextAreaField(_("HTML"),
                         validators=[required(message=_("HTML required"))])

    submit = SubmitField(_("Save"))
    cancel = SubmitField(_("Cancel"))
Exemple #10
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 #11
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 #12
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 #13
0
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")]
Exemple #14
0
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)
Exemple #15
0
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"))
Exemple #16
0
class ReplyForm(Form):
    content = TextAreaField(_("Reply"),
                            validators=[
                                required(message=_("Content required")),
                                length(
                                    max=140,
                                    message=_("Pls. less than 140 characater"))
                            ])
    submit = SubmitField(_("Commit"))
Exemple #17
0
class CommentAbuseForm(Form):

    complaint = TextAreaField("Complaint", validators=[
                              required(message=\
                                       _("You must enter the details"
                                         " of the complaint"))])


    submit = SubmitField(_("Send"))
Exemple #18
0
class MessageForm(Form):

    subject = TextField(_("Subject"),
                        validators=[required(message=_("Subject required"))])

    message = TextAreaField(
        _("Message"), validators=[required(message=_("Message required"))])

    submit = SubmitField(_("Send"))
Exemple #19
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 #20
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 #21
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 #22
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 #23
0
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')
Exemple #24
0
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')
            
Exemple #25
0
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'发送')
Exemple #26
0
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"))
Exemple #27
0
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!",
    )
Exemple #28
0
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())
Exemple #29
0
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 )	
Exemple #30
0
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)