コード例 #1
0
 def get(self):
     form = self.get_form(f.register_form)
     form_error_message = f.FormContainer()
     args = {
         'form': form,
         'form_error_message': form_error_message,
     }
     self.jinja_render('dev_register.html', **args)
コード例 #2
0
    def validate(self, form, form_define):
        form_error_message = f.FormContainer()
        error = False
        for field, validator in form_define.iteritems():
            if error:  #fail fast
                break
            if field == '_form':
                continue
            form_error_message[field] = validator(form[field])
            error = error or bool(form_error_message[field])

        if not error and '_form' in form_define:
            form_error_message['form'] = form_define['_form'](form)
            error = error or bool(form_error_message['form'])
        return error, form_error_message
コード例 #3
0
 def get(self, bid, cid):
     chapter = db.query(m.Chapter).\
             filter_by(id=cid, book_id=bid).first()
     if chapter is None:
         raise tornado.web.HTTPError(404)
     book = db.query(m.Book).filter_by(id=bid).first()
     args = dict(chapter=chapter, book=book)
     paging = f.FormContainer()
     index = book.chapters.index(chapter)
     if index > 0:
         paging.pre = book.chapters[index - 1]
     if index < len(book.chapters) - 1:
         paging.post = book.chapters[index + 1]
     args['paging'] = paging
     self.jinja_render("dev_chapter.html", **args)
コード例 #4
0
 def get(self, bid):
     book = db.query(m.Book).filter_by(id=bid).first()
     if book is None:
         raise tornado.web.HTTPError(404)
     cid = self.get_safe_argument('cid', int)
     if cid is not None:
         chapter = db.query(m.Chapter).\
                 filter_by(id=cid, book_id=bid).first()
         if chapter is None:
             raise tornado.web.HTTPError(404)
         form = self.get_form(f.chapter_form, chapter)
         form.cid = cid
     else:
         form = self.get_form(f.chapter_form)
     form_error_message = f.FormContainer()
     args = dict(bid=bid, form=form, form_error_message=form_error_message)
     self.jinja_render('dev_edit_chapter', **args)
コード例 #5
0
    def get(self):
        """
        添加新的书或者修改存在的书的信息 
        """
        bid = self.get_safe_argument('bid', int)
        if bid is None:
            form = self.get_form(f.edit_book_form)
        else:
            #TODO handler exception. bid maybe illegal
            book = db.query(m.Book).filter_by(id=bid).first()
            if not book:
                raise tornado.web.HTTPError(404)

            form = self.get_form(f.edit_book_form, book)
            form.bid = bid
        args = {'form': form, 'form_error_message ': f.FormContainer()}
        self.jinja_render("dev_edit_book.html", **args)
コード例 #6
0
    def get_form(self, form_define, instance=None):
        """
        如果没有instance这个参数
        则通过get_argument 方法
        从handler.request.argument 获取

        如果有instance则从instance获取
        instance是一个模型实例

        如果想获取一个空form 直接生成一个
        FormContainer实例
        """
        form = f.FormContainer()
        if instance is not None:
            get = lambda field: getattr(instance, field, '')
        else:
            get = lambda field: self.get_argument(field, '')

        for field in form_define.keys():
            if field == '_form':
                continue
            form[field] = get(field)
        return form