예제 #1
0
    def update(self, slug):
        '''
        Update the page.
        :param slug:
        :return:
        '''

        if self.__could_edit(slug):
            pass
        else:
            return False
        post_data = self.get_post_data()

        post_data['user_name'] = self.userinfo.user_name

        pageinfo = MWiki.get_by_uid(slug)

        cnt_old = tornado.escape.xhtml_unescape(pageinfo.cnt_md).strip()
        cnt_new = post_data['cnt_md'].strip()
        if cnt_old == cnt_new:
            pass
        else:
            MWikiHist.create_wiki_history(MWiki.get_by_uid(slug))

        MWiki.update(slug, post_data)
        tornado.ioloop.IOLoop.instance().add_callback(self.cele_gen_whoosh)

        self.redirect('/page/{0}.html'.format(post_data['slug']))
예제 #2
0
    def update(self, uid):
        '''
        Update the wiki.
        '''
        postinfo = MWiki.get_by_uid(uid)
        if self.check_post_role(
        )['EDIT'] or postinfo.user_name == self.get_current_user():
            pass
        else:
            return False
        post_data = self.get_post_data()
        post_data['user_name'] = self.userinfo.user_name

        cnt_old = tornado.escape.xhtml_unescape(postinfo.cnt_md).strip()
        cnt_new = post_data['cnt_md'].strip()

        if cnt_old == cnt_new:
            pass
        else:
            MWikiHist.create_wiki_history(postinfo)

        MWiki.update(uid, post_data)

        # cele_gen_whoosh.delay()
        tornado.ioloop.IOLoop.instance().add_callback(self.cele_gen_whoosh)

        self.redirect('/wiki/{0}'.format(
            tornado.escape.url_escape(post_data['title'])))
예제 #3
0
 def test_upate(self):
     self.add_mess()
     rec = MWiki.get_by_wiki(self.wiki_title)
     p_d = {
         'title': 'bibibobo',
         'cnt_md': 'dd25d5fd6d',
         }
     MWiki.update(self.uid,p_d)
     now=MWiki.get_by_wiki(p_d['title'])
     assert rec.uid==now.uid
     assert now.uid==self.uid
     self.tearDown()
예제 #4
0
class WikiHandler(BaseHandler):
    def initialize(self):
        self.init()
        self.mwiki = MWiki()
        self.mwiki_hist = MWikiHist()

    def get(self, url_str=''):
        url_arr = self.parse_url(url_str)

        if url_str == 'recent':
            self.recent()
        elif url_arr[0] == 'ajax_count_plus':
            self.ajax_count_plus(url_arr[1])
        elif url_str == 'refresh':
            self.refresh()
        elif url_arr[0] == 'edit':
            self.to_modify(url_arr[1])
        elif len(url_arr) == 1:
            self.wiki(url_str)
        else:
            kwd = {
                'info': '页面未找到',
            }
            self.render('html/404.html', kwd=kwd)

    def post(self, url_str=''):
        url_arr = self.parse_url(url_str)
        if url_arr[0] == 'edit':
            self.update(url_arr[1])
        elif url_arr[0] == 'add':
            self.wikinsert()
        else:
            self.redirect('html/404.html')

    def recent(self):
        kwd = {
            'pager': '',
            'unescape': tornado.escape.xhtml_unescape,
            'title': '最近文档',
        }
        self.render(
            'doc/wiki/wiki_list.html',
            view=self.mwiki.query_recent(),
            format_date=tools.format_date,
            cfg=config.cfg,
            kwd=kwd,
            userinfo=self.userinfo,
        )

    def refresh(self):
        kwd = {
            'pager': '',
            'unescape': tornado.escape.xhtml_unescape,
            'title': '最近文档',
        }
        self.render(
            'doc/wiki/wiki_list.html',
            view=self.mwiki.query_dated(16),
            format_date=tools.format_date,
            kwd=kwd,
            cfg=config.cfg,
            userinfo=self.userinfo,
        )

    def wiki(self, title):
        dbdate = self.mwiki.get_by_wiki(title)
        if dbdate:
            self.viewit(dbdate)
        else:
            self.to_add(title)

    @tornado.web.authenticated
    def to_add(self, title):
        if self.check_doc_priv(self.userinfo)['ADD']:
            pass
        else:
            return False

        kwd = {
            'title': title,
            'pager': '',
        }
        self.render(
            'doc/wiki/wiki_add.html',
            kwd=kwd,
            cfg=config.cfg,
            userinfo=self.userinfo,
        )

    @tornado.web.authenticated
    def update(self, uid):

        raw_data = self.mwiki.get_by_id(uid)
        if self.check_doc_priv(
                self.userinfo
        )['EDIT'] or raw_data.user_name == self.get_current_user():
            pass
        else:
            return False
        post_data = {}
        for key in self.request.arguments:
            post_data[key] = self.get_arguments(key)
        post_data['user_name'] = self.get_current_user()
        self.mwiki.update(uid, post_data)
        self.mwiki_hist.insert_data(raw_data)
        self.redirect('/wiki/{0}'.format(
            tornado.escape.url_escape(post_data['title'][0])))

    @tornado.web.authenticated
    def to_modify(self, id_rec):
        wiki_rec = self.mwiki.get_by_id(id_rec)
        # 用户具有管理权限,或文章是用户自己发布的。
        if self.check_doc_priv(
                self.userinfo
        )['EDIT'] or wiki_rec.user_name == self.get_current_user():
            pass
        else:
            return False

        kwd = {
            'pager': '',
        }
        self.render(
            'doc/wiki/wiki_edit.html',
            kwd=kwd,
            unescape=tornado.escape.xhtml_unescape,
            dbrec=wiki_rec,
            cfg=config.cfg,
            userinfo=self.userinfo,
        )

    def viewit(self, view):
        kwd = {
            'pager': '',
            'editable': self.editable(),
        }
        self.render(
            'doc/wiki/wiki_view.html',
            view=view,
            unescape=tornado.escape.xhtml_unescape,
            kwd=kwd,
            userinfo=self.userinfo,
            cfg=config.cfg,
        )

    def ajax_count_plus(self, slug):
        output = {
            'status': 1 if self.mwiki.update_view_count(slug) else 0,
        }

        return json.dump(output, self)

    @tornado.web.authenticated
    def wikinsert(self):
        if self.check_doc_priv(self.userinfo)['ADD']:
            pass
        else:
            return False
        post_data = {}
        for key in self.request.arguments:
            post_data[key] = self.get_arguments(key)

        post_data['user_name'] = self.get_current_user()
        if self.mwiki.get_by_wiki(post_data['title'][0]):
            pass
        else:
            self.mwiki.insert_data(post_data)

        self.redirect('/wiki/{0}'.format(
            tornado.escape.url_escape(post_data['title'][0])))
예제 #5
0
class TestMWiki():
    def setup(self):
        print('setup 方法执行于本类中每条用例之前')
        self.uu = MWiki()
        self.title = 'tyyyitle'
        self.uid = '6985'

    def add_page(self, **kwargs):
        post_data = {
            'title': kwargs.get('title', self.title),
            'user_name': kwargs.get('user_name', 'Tome'),
            'cnt_md': kwargs.get('cnt_md', '## adslkfjasdf\n lasdfkjsadf'),
        }
        self.uu.create_page(self.uid, post_data)

    def test_insert(self):
        raw_count = self.uu.get_counts()
        post_data = {
            'title': 'tyyyitle',
            'user_name': 'Tome',
            'cnt_md': '## adslkfjasdf\n lasdfkjsadf',
        }
        self.add_page(**post_data)
        new_count = self.uu.get_counts()

        tt = self.uu.get_by_uid(self.uid)

        assert tt.title == post_data['title']
        assert tt.cnt_md == tornado.escape.xhtml_unescape(post_data['cnt_md'])
        assert raw_count + 1 <= new_count

        self.tearDown()

    # def test_insert_2(self):
    #     self.tearDown()
    #     '''Wiki insert: Test invalid title'''
    #     post_data = {
    #         'title': '',
    #         'user_name': 'Tome',
    #         'cnt_md': '## adslkfjasdf\n lasdfkjsadf',
    #
    #     }
    #     aa=self.uu.create_page(self.uid, post_data)
    #     assert aa==False
    #
    #     self.tearDown()

    def test_query_all(self):
        self.add_page()
        p = {'kind': '2'}
        aa = self.uu.query_all(**p)
        tf = False
        for i in aa:
            if i.uid == self.uid:
                tf = True
        self.tearDown()
        assert tf

    def test_get_by_slug(self):
        self.add_page()
        aa = self.uu.get_by_uid(self.uid)
        assert aa.title == self.title
        self.tearDown()

    def test_update_cnt(self):
        self.add_page()
        post_data = {
            'user_name': 'name',
            'cnt_md': '## adslkfjgggfdffasdf\n lasdfkjsadf',
        }
        self.uu.update_cnt(self.uid, post_data)
        tt = self.uu.get_by_uid(self.uid)
        assert tt.user_name == post_data['user_name']
        assert tt.cnt_md == tornado.escape.xhtml_unescape(post_data['cnt_md'])
        self.tearDown()

    def test_update(self):
        self.add_page()
        post_data = {
            'title': 'ti',
            'user_name': 'Tome',
            'cnt_md': '## adslkfjasdf\n lasdfkjsadf',
        }
        aa = self.uu.update(self.uid, post_data)
        assert aa == None
        post_data2 = {
            'title': 'tgrgri',
            'cnt_md': '## adslkfjasdf\n lasdfkjsadf',
        }
        self.uu.update(self.uid, post_data2)
        aa = self.uu.get_by_uid(self.uid)
        assert aa.title == post_data2['title']
        self.tearDown()

    def test_query_recent_edited(self):
        timstamp = tools.timestamp()
        time.sleep(1)
        self.add_page()
        aa = self.uu.query_recent_edited(timstamp, kind='2')
        tf = False
        for i in aa:
            if i.uid == self.uid:
                tf = True
        self.tearDown()
        assert tf

    def tearDown(self):
        print("function teardown")
        self.uu.delete(self.uid)
예제 #6
0
class TestMWiki():
    def setup(self):
        print('setup 方法执行于本类中每条用例之前')
        self.uu = MWiki()
        self.raw_count = self.uu.get_counts()
        self.page_slug = 'aaa'
        self.uid = tools.get_uuid()

    def test_insert(self):
        raw_count = self.uu.get_counts()
        post_data = {
            'title': 'title',
            'slug': 'sadfsadf',
            'id_user': '******',
            'cnt_md': '## adslkfjasdf\n lasdfkjsadf',
            'view_count': 1,
        }
        self.uu.create_page('sadfsadf', post_data)
        new_count = self.uu.get_counts()

        tt = self.uu.get_by_uid(self.page_slug)

        # assert tt.title == post_data['title'][0]
        # assert tt.cnt_md == tornado.escape.xhtml_unescape(post_data['cnt_md'][0])
        # assert raw_count + 1 == new_count

    def test_insert_2(self):
        '''Wiki insert: Test invalid title'''
        post_data = {
            'title': '',
            'id_user': '******',
            'cnt_md': '## adslkfjasdf\n lasdfkjsadf',
            'view_count': 1,
        }
        uu = self.uu.create_page('abcd', post_data)
        assert uu == False

        post_data = {
            'title': '1',
            'id_user': '******',
            'cnt_md': '## adslkfjasdf\n lasdfkjsadf',
            'view_count': 1,
        }
        uu = self.uu.create_page('bdef', post_data)
        assert uu == False

        post_data = {
            'title': '天',
            'id_user': '******',
            'cnt_md': '## adslkfjasdf\n lasdfkjsadf',
            'view_count': 1,
        }
        uu = self.uu.create_page('aaaa', post_data)
        assert uu == False

    def test_query_all(self):
        self.uu.query_all()
        assert True

    def test_get_by_slug(self):
        self.uu.get_by_uid('aa')
        assert True

    def test_update_cnt(self):
        post_data = {
            'user_name': 'name',
            'cnt_md': '## adslkfjasdf\n lasdfkjsadf',
        }
        self.uu.update_cnt(self.uid, post_data)
        assert True

    def test_update(self):
        post_data = {
            'title': 'title',
            'user_name': 'Tome',
            'cnt_md': '## adslkfjasdf\n lasdfkjsadf',
        }
        self.uu.update(self.uid, post_data)
        assert True

    def test_query_recent_edited(self):
        timstamp = tools.timestamp()
        self.uu.query_recent_edited(timstamp)
        assert True

    def tearDown(self):
        print("function teardown")
        tt = self.uu.get_by_uid(self.page_slug)
        if tt:
            self.uu.delete(tt.uid)
예제 #7
0
class WikiHandler(BaseHandler):
    def initialize(self):
        self.init()
        self.mwiki = MWiki()
        self.mwiki_hist = MWikiHist()
        self.kind = '1'

    def get(self, url_str=''):
        url_arr = self.parse_url(url_str)

        if url_str == 'recent':
            self.recent()
        elif url_arr[0] == 'ajax_count_plus':
            self.ajax_count_plus(url_arr[1])
        elif url_str == 'refresh':
            self.refresh()
        elif url_arr[0] == 'edit':
            self.to_modify(url_arr[1])
        elif len(url_arr) == 1:
            self.wiki(url_str)
        else:
            kwd = {
                'info': '页面未找到',
            }
            self.render('html/404.html', kwd=kwd)

    def post(self, url_str=''):
        url_arr = self.parse_url(url_str)
        if url_arr[0] == 'edit':
            self.update(url_arr[1])
        elif url_arr[0] == 'add':
            self.wikinsert()
        else:
            self.redirect('html/404.html')

    def recent(self):
        kwd = {
            'pager': '',
            'unescape': tornado.escape.xhtml_unescape,
            'title': '最近文档',
        }
        self.render(
            'doc/wiki/wiki_list.html',
            view=self.mwiki.query_recent(),
            format_date=tools.format_date,
            # cfg=cfg, # Todo: Should delete.
            kwd=kwd,
            userinfo=self.userinfo,
        )

    def refresh(self):
        kwd = {
            'pager': '',
            'unescape': tornado.escape.xhtml_unescape,
            'title': '最近文档',
        }
        self.render(
            'doc/wiki/wiki_list.html',
            view=self.mwiki.query_dated(16),
            format_date=tools.format_date,
            kwd=kwd,
            # cfg=cfg, # Todo: Should delete
            userinfo=self.userinfo,
        )

    def wiki(self, title):
        postinfo = self.mwiki.get_by_wiki(title)
        if postinfo:
            if postinfo.kind == self.kind:
                self.viewit(postinfo)
            else:
                return False
        else:
            self.to_add(title)

    @tornado.web.authenticated
    def update(self, uid):

        raw_data = self.mwiki.get_by_id(uid)
        if self.check_post_role(
                self.userinfo
        )['EDIT'] or raw_data.user_name == self.get_current_user():
            pass
        else:
            return False
        post_data = self.get_post_data()

        post_data['user_name'] = self.get_current_user()
        self.mwiki.update(uid, post_data)
        self.mwiki_hist.insert_data(raw_data)
        self.redirect('/wiki/{0}'.format(
            tornado.escape.url_escape(post_data['title'])))

    @tornado.web.authenticated
    def to_modify(self, id_rec):
        wiki_rec = self.mwiki.get_by_id(id_rec)
        # 用户具有管理权限,或文章是用户自己发布的。
        if self.check_post_role(
                self.userinfo
        )['EDIT'] or wiki_rec.user_name == self.get_current_user():
            pass
        else:
            return False

        kwd = {
            'pager': '',
        }
        self.render(
            'doc/wiki/wiki_edit.html',
            kwd=kwd,
            unescape=tornado.escape.xhtml_unescape,
            dbrec=wiki_rec,  # Deprecated.
            postinfo=wiki_rec,
            # cfg=cfg, # Todo: Should delete
            userinfo=self.userinfo,
        )

    def viewit(self, view):
        kwd = {
            'pager': '',
            'editable': self.editable(),
        }
        self.render(
            'doc/wiki/wiki_view.html',
            view=view,  # Deprecated
            postinfo=view,
            unescape=tornado.escape.xhtml_unescape,
            kwd=kwd,
            userinfo=self.userinfo,
            # cfg=cfg, # Todo: Should delete
        )

    def ajax_count_plus(self, slug):
        output = {
            'status': 1 if self.mwiki.update_view_count(slug) else 0,
        }

        return json.dump(output, self)

    def to_add(self, title):
        kwd = {
            'title': title,
            'pager': '',
        }
        if self.userinfo and self.userinfo.role[0] > '0':
            tmpl = 'doc/wiki/wiki_add.html'
        else:
            tmpl = 'doc/wiki/wiki_login.html'

        self.render(
            tmpl,
            kwd=kwd,
            # cfg= cfg, # Todo: should delete
            userinfo=self.userinfo,
        )

    @tornado.web.authenticated
    def wikinsert(self):
        if self.userinfo.role[0] > '0':
            pass
        else:
            return False

        post_data = self.get_post_data()

        post_data['user_name'] = self.get_current_user()
        if self.mwiki.get_by_wiki(post_data['title']):
            pass
        else:
            self.mwiki.insert_data(post_data)

        self.redirect('/wiki/{0}'.format(
            tornado.escape.url_escape(post_data['title'])))