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']))
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'])))
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()
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])))
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)
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)
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'])))