class AdminHandler(tornado.web.RequestHandler): def initialize(self): self.mpost = MPost() self.mcat = MCatalog() self.muser = MUser() self.mpage = MPage() self.mlink = MLink() if self.get_current_user(): self.userinfo = self.muser.get_by_id(self.get_current_user()) else: self.userinfo = None def get_current_user(self): return self.get_secure_cookie("user") def get(self, input=''): if input == '': self.index() else: self.render('html/404.html') @tornado.web.authenticated def index(self): self.render('admin/admin_index.html', user_info=self.muser.get_by_id(self.get_current_user()))
class AdminHandler(tornado.web.RequestHandler): def initialize(self): self.mpost = MPost() self.mcat = MCatalog() self.muser = MUser() self.mpage = MPage() self.mlink = MLink() if self.get_current_user(): self.userinfo = self.muser.get_by_id(self.get_current_user()) else: self.userinfo = None def get_current_user(self): return self.get_secure_cookie("user") def get(self, input=''): if input == '': self.index() else: self.render('html/404.html') @tornado.web.authenticated def index(self): self.render('admin/admin_index.html', user_info=self.muser.get_by_id(self.get_current_user()) )
class IndexHandler(tornado.web.RequestHandler): def initialize(self): self.mpost = MPost() self.mcat = MCatalog() self.muser = MUser() if self.get_current_user(): self.userinfo = self.muser.get_by_id(self.get_current_user()) else: self.userinfo = None def get_current_user(self): return self.get_secure_cookie("user") def get(self, input=''): if input == '': self.index() else: self.render('html/404.html') def index(self): cstr = tools.get_uuid() self.set_cookie('user_pass', cstr) kwd = { 'cookie_str': cstr } self.render('tplite/index/index.html', kwd = kwd, userinfo=self.userinfo, catalog_info = self.mcat.query_all( by_order=True) )
class AppIndexHandler(BaseHandler): def initialize(self): self.mpost = MPost() self.mcat = MCatalog() self.muser = MUser() if self.get_current_user(): self.userinfo = self.muser.get_by_id(self.get_current_user()) else: self.userinfo = None self.tmpl_sig = app_template_name def get(self, input=''): if input == '': self.index() else: self.render('html/404.html') def index(self): cstr = tools.get_uuid() self.set_cookie('user_pass', cstr) kwd = {'cookie_str': cstr} self.render('{0}/index/index.html'.format(self.tmpl_sig), kwd=kwd, userinfo=self.userinfo, catalog_info=self.mcat.query_all(by_order=True))
class ListHandler(BaseHandler): def initialize(self): self.mequa = MApp() self.musage = MUsage() self.muser = MUser() if self.get_current_user(): self.userinfo = self.muser.get_by_id(self.get_current_user()) else: self.userinfo = None def get(self, url_str=''): url_arr = self.parse_url(url_str) if url_str == 'app': self.list_app() def list_app(self): kwd = { 'pager': '', 'title': '最近使用的运算应用', } self.render( 'app_theme/calc/list_app.html', kwd=kwd, userinfo=self.userinfo, )
class BaseHandler(tornado.web.RequestHandler, TemplateRendring): def init(self): self.tmpl_name= config.torlite_template_name self.muser = MUser() if self.get_current_user(): self.userinfo = self.muser.get_by_id(self.get_current_user()) else: self.userinfo = None def parse_url(self, url_str): url_str = url_str.strip() url_arr = [] if len(url_str) == 0 else url_str.split('/') return url_arr def get_current_user(self): return self.get_secure_cookie("user") def editable(self): # Deprecated. if self.get_current_user(): return 1 else: return 0 def render_jinja2(self, template_name, **kwargs): kwargs.update({ 'settings': self.settings, 'STATIC_URL': self.settings.get('static_url_prefix', '/static/'), 'request': self.request, 'current_user': self.current_user, 'xsrf_token': self.xsrf_token, 'xsrf_form_html': self.xsrf_form_html, }) content = self.render_template(template_name, **kwargs) self.write(content)
class ReplyHandler(BaseHandler): def initialize(self): self.init() self.muser = MUser() self.mreply = MReply() self.mreply2user = MReply2User() self.mpost2reply = MPost2Reply() if self.get_current_user(): self.userinfo = self.muser.get_by_id(self.get_current_user()) else: self.userinfo = None def get(self, url_str=''): url_arr = self.parse_url(url_str) if url_arr[0] == 'get': self.get_by_id(url_arr[1]) def get_by_id(self, reply_id): reply = self.mreply.get_reply_by_uid(reply_id) self.render('{0}/reply/show_reply.html'.format(self.tmpl_name), cnt=reply.cnt_html, username=reply.user_name, date=reply.date, vote=reply.vote, uid=reply.uid, userinfo=self.userinfo, unescape=tornado.escape.xhtml_unescape, )
class PycateBaseHandler(tornado.web.RequestHandler): def init_condition(self): self.muser = MUser() userid = self.get_secure_cookie('user') if userid is None: self.user_name = '' else: self.user_name = userid.decode('utf-8') self.city_name = 'changchun' self.minfo = MInfo(self.city_name) self.mcity = MCity() # self.muser_info = MUserInfo(self.user_name) if self.get_current_user(): self.userinfo = self.muser.get_by_id(self.get_current_user()) else: self.userinfo = None def get_current_user(self): return self.get_secure_cookie("user")
class ReplyHandler(BaseHandler): def initialize(self): self.init() self.muser = MUser() self.mreply = MReply() self.mreply2user = MReply2User() self.mpost2reply = MPost2Reply() if self.get_current_user(): self.userinfo = self.muser.get_by_id(self.get_current_user()) else: self.userinfo = None def get(self, url_str=''): if url_str == '': return url_arr = url_str.split(r'/') if url_arr[0] == 'get': self.get_by_id(url_arr[1]) def get_by_id(self, reply_id): reply = self.mreply.get_reply_by_uid(reply_id) self.render('{0}/reply/show_reply.html'.format(self.tmpl_name), cnt=reply.cnt_html, username=reply.user_name, date=reply.date, vote=reply.vote, uid=reply.uid, userinfo=self.userinfo, unescape=tornado.escape.xhtml_unescape, )
class IndexHandler(tornado.web.RequestHandler): def initialize(self): self.mpost = MPost() self.mcat = MCatalog() self.muser = MUser() self.mpage = MPage() self.mlink = MLink() if self.get_current_user(): self.userinfo = self.muser.get_by_id(self.get_current_user()) else: self.userinfo = None def get_current_user(self): return self.get_secure_cookie("user") def get(self, input=''): if input == '': self.index() else: self.render('html/404.html') def index(self): cstr = tools.get_uuid() self.set_cookie('user_pass', cstr) kwd = {'cookie_str': cstr} self.render( 'index/index.html', kwd=kwd, userinfo=self.userinfo, catalog_info=self.mcat.query_all(by_order=True), link=self.mlink.query_all(), unescape=tornado.escape.xhtml_unescape, )
class AppIndexHandler(BaseHandler): def initialize(self): self.mpost = MPost() self.mcat = MCatalog() self.muser = MUser() if self.get_current_user(): self.userinfo = self.muser.get_by_id(self.get_current_user()) else: self.userinfo = None self.tmpl_sig = app_template_name def get(self, input=''): if input == '': self.index() else: self.render('html/404.html') def index(self): cstr = tools.get_uuid() self.set_cookie('user_pass', cstr) kwd = { 'cookie_str': cstr } self.render('{0}/index/index.html'.format(self.tmpl_sig), kwd=kwd, userinfo=self.userinfo, catalog_info=self.mcat.query_all(by_order=True) )
class LabelHandler(BaseHandler): def initialize(self): self.init() self.muser = MUser() self.mequa = MPost() self.mtag = MLabel() self.mapp2tag = MPost2Label() if self.get_current_user(): self.userinfo = self.muser.get_by_id(self.get_current_user()) else: self.userinfo = None def get(self, url_str=''): url_arr = self.parse_url(url_str) if len(url_arr) == 1: self.list(url_str) elif len(url_arr) == 2: self.list(url_arr[0], url_arr[1]) else: return False # def post(self, url_str=''): # if len(url_str) > 0: # url_arr = url_str.split('/') # else: # return False # # if url_arr[0] == 'edit': # self.edit(url_arr[1]) def list(self, tag_slug, cur_p=''): ''' 根据 cat_handler.py 中的 def view_cat_new(self, cat_slug, cur_p = '') :param tag_slug: :return: ''' if cur_p == '': current_page_number = 1 else: current_page_number = int(cur_p) current_page_number = 1 if current_page_number < 1 else current_page_number pager_num = int(self.mapp2tag.total_number(tag_slug) / config.page_num) tag_name = '' kwd = { 'tag_name': tag_name, 'tag_slug': tag_slug, 'title': tag_name, } self.render('{0}/label/list.html'.format(self.tmpl_name), infos=self.mapp2tag.query_pager_by_slug(tag_slug, current_page_number), unescape=tornado.escape.xhtml_unescape, kwd=kwd, userinfo=self.userinfo, pager=tools.gen_pager_bootstrap_url('/label/{0}'.format(tag_slug), pager_num, current_page_number), cfg = config.cfg, )
class IndexHandler(BaseHandler): def initialize(self): self.mpost = MPost() self.mcat = MCatalog() self.muser = MUser() self.mpage = MPage() self.mlink = MLink() if self.get_current_user(): self.userinfo = self.muser.get_by_id(self.get_current_user()) else: self.userinfo = None def get_current_user(self): return self.get_secure_cookie("user") def get(self, input=''): if input == '': self.index() else: self.render('html/404.html') def index(self): cstr = tools.get_uuid() self.set_cookie('user_pass', cstr) kwd = { 'cookie_str': cstr } self.render('index/index.html', userinfo=self.userinfo, catalog_info=self.mcat.query_all(by_order=True), link= self.mlink.query_all(), unescape=tornado.escape.xhtml_unescape, cfg = config.cfg, kwd=kwd,)
class MaintainCategoryAjaxHandler(MaintainCategoryHandler): def initialize(self): self.init() self.muser = MUser() self.mclass = MCatalog() self.tmpl_router = 'category_ajax' if self.get_current_user(): self.userinfo = self.muser.get_by_id(self.get_current_user()) else: self.userinfo = None
class App2ReplyHandler(Post2ReplyHandler): def initialize(self): self.muser = MUser() self.mreply = MReply() self.mreply2user = MReply2User() self.mpost2reply = MApp2Reply() if self.get_current_user(): self.userinfo = self.muser.get_by_id(self.get_current_user()) else: self.userinfo = None
class LinkAjaxHandler(LinkHandler): def initialize(self): self.init() self.muser = MUser() self.user_name = self.get_current_user() self.tmpl_router = 'link_ajax' self.mlink = MLink() if self.get_current_user(): self.userinfo = self.muser.get_by_id(self.get_current_user()) else: self.userinfo = None
class LabelHandler(BaseHandler): def initialize(self): self.init() self.muser = MUser() self.mequa = MPost() self.mtag = MLabel() self.mapp2tag = MPost2Label() if self.get_current_user(): self.userinfo = self.muser.get_by_id(self.get_current_user()) else: self.userinfo = None def get(self, input=''): if len(input) > 0: url_arr = input.split(r'/') if len(url_arr) == 1: self.list(input) elif len(url_arr) == 2: self.list(url_arr[0], url_arr[1]) def post(self, url_str=''): if len(url_str) > 0: url_arr = url_str.split('/') if url_arr[0] == 'edit': self.edit(url_arr[1]) def list(self, tag_slug, cur_p=''): ''' 根据 cat_handler.py 中的 def view_cat_new(self, cat_slug, cur_p = '') :param tag_slug: :return: ''' if cur_p == '': current_page_number = 1 else: current_page_number = int(cur_p) pager_num = int(self.mapp2tag.total_number(tag_slug) / config.page_num) tag_name = '' kwd = { 'tag_name': tag_name, 'tag_slug': tag_slug, 'title': tag_name, } self.render('{0}/label/list.html'.format(self.tmpl_name), infos=self.mapp2tag.query_pager_by_slug(tag_slug, current_page_number), unescape=tornado.escape.xhtml_unescape, kwd=kwd, userinfo=self.userinfo, pager=tools.gen_pager_bootstrap_url('/label/{0}'.format(tag_slug), pager_num, current_page_number), )
class SearchHandler(BaseHandler): def initialize(self): # analyzer = ChineseAnalyzer() # schema = Schema(title=TEXT(stored=True, analyzer = analyzer), path=ID(stored=True), content=TEXT(stored=True, analyzer=analyzer)) # ix = config.ix # self.searcher = config.searcher # self.parser = config.parser # self.parser = QueryParser("content", schema=ix.schema) self.muser = MUser() self.mpost = MPost() self.mcat = MCatalog() self.cats = self.mcat.query_all() self.mspec = SpesubModel() self.specs = self.mspec.get_all() self.mpost_hist = MPostHist() self.mpost2catalog = MPost2Catalog() if self.get_current_user(): self.userinfo = self.muser.get_by_id(self.get_current_user()) else: self.userinfo = None def get(self, url_str=''): if url_str == '': return elif len(url_str) > 0: self.search(url_str) else: kwd = { 'info': '页面未找到', } self.render('html/404.html', kwd=kwd) def post(self, url_str=''): keyword = self.get_argument('keyword') self.search(keyword) def to_find(self, ): kwd = { 'pager': '', } self.render('tplite/post/find.html', topmenu='', kwd=kwd) def search(self, keyword): results = whoosh_search(keyword, 20) # reswhoosh_search.keyworde limit=3limit=30) kwd = {'title': '查找结果'} self.render( 'tplite/search/search.html', kwd=kwd, srecs=results, )
class SearchHandler(BaseHandler): def initialize(self): self.init() self.muser = MUser() self.mpost = MPost() self.mcat = MCatalog() self.cats = self.mcat.query_all() self.mspec = SpesubModel() self.specs = self.mspec.get_all() self.mpost_hist = MPostHist() self.mpost2catalog = MPost2Catalog() self.ysearch = yunsearch() if self.get_current_user(): self.userinfo = self.muser.get_by_id(self.get_current_user()) else: self.userinfo = None def get(self, url_str=''): if len(url_str) > 0: url_arr = url_str.split('/') if url_str == '': return elif len(url_arr) == 1: self.search(url_str) elif len(url_arr) == 2: self.search(url_arr[0], int(url_arr[1])) else: kwd = { 'info': '页面未找到', } self.render('html/404.html', kwd=kwd) def post(self, url_str=''): keyword = self.get_argument('keyword') self.search(keyword) def search(self, keyword, p_index=1): res_all = self.ysearch.get_all_num(keyword) results = self.ysearch.search_pager(keyword, page_index=p_index, doc_per_page=20) page_num = int(res_all / 20) kwd = { 'title': '查找结果', 'pager': '', } self.render( '{0}/search/search.html'.format(self.tmpl_name), kwd=kwd, srecs=results, pager=tools.gen_pager_bootstrap_url('/search/{0}'.format(keyword), page_num, p_index), )
class CategoryHandler(BaseHandler): def initialize(self): self.init() self.muser = MUser() self.mpost = MPost() self.mcat = MCatalog() self.cats = self.mcat.query_all() self.mspec = SpesubModel() self.specs = self.mspec.get_all() self.mpost2catalog = MPost2Catalog() if self.get_current_user(): self.userinfo = self.muser.get_by_id(self.get_current_user()) else: self.userinfo = None def get(self, input=''): if len(input) > 0: ip_arr = input.split(r'/') if input == '': pass elif len(ip_arr) == 1: self.list_catalog(input) elif len(ip_arr) == 2: self.list_catalog(ip_arr[0], ip_arr[1]) else: self.render('html/404.html') def list_catalog(self, cat_slug, cur_p=''): if cur_p == '': current_page_num = 1 else: current_page_num = int(cur_p) cat_rec = self.mcat.get_by_slug(cat_slug) num_of_cat = self.mpost2catalog.catalog_record_number(cat_rec.uid) page_num = int(num_of_cat / config.page_num) + 1 cat_name = cat_rec.name kwd = { 'cat_name': cat_name, 'cat_slug': cat_slug, 'unescape': tornado.escape.xhtml_unescape, 'title': cat_name, } self.render('{0}/catalog/list.html'.format(self.tmpl_name), infos=self.mpost2catalog.query_pager_by_slug(cat_slug, current_page_num), pager=tools.gen_pager_purecss('/category/{0}'.format(cat_slug), page_num, current_page_num), userinfo=self.userinfo, kwd=kwd) def get_random(self): return self.mpost.query_random()
class SearchHandler(BaseHandler): def initialize(self): # analyzer = ChineseAnalyzer() # schema = Schema(title=TEXT(stored=True, analyzer = analyzer), path=ID(stored=True), content=TEXT(stored=True, analyzer=analyzer)) # ix = config.ix # self.searcher = config.searcher # self.parser = config.parser # self.parser = QueryParser("content", schema=ix.schema) self.muser = MUser() self.mpost = MPost() self.mcat = MCatalog() self.cats = self.mcat.query_all() self.mspec = SpesubModel() self.specs = self.mspec.get_all() self.mpost_hist = MPostHist() self.mpost2catalog = MPost2Catalog() if self.get_current_user(): self.userinfo = self.muser.get_by_id(self.get_current_user()) else: self.userinfo = None def get(self, url_str=''): if url_str == '': return elif len(url_str) > 0: self.search(url_str) else: kwd = { 'info': '页面未找到', } self.render('html/404.html', kwd=kwd) def post(self, url_str=''): keyword = self.get_argument('keyword') self.search(keyword) def to_find(self, ): kwd = { 'pager': '', } self.render('tplite/post/find.html', topmenu='', kwd=kwd) def search(self, keyword): results = whoosh_search(keyword, 20) # reswhoosh_search.keyworde limit=3limit=30) kwd = {'title':'查找结果'} self.render('tplite/search/search.html', kwd=kwd, srecs = results, )
class SearchHandler(BaseHandler): def initialize(self): self.init() self.muser = MUser() self.mpost = MPost() self.mcat = MCatalog() self.cats = self.mcat.query_all() self.mspec = SpesubModel() self.specs = self.mspec.get_all() self.mpost_hist = MPostHist() self.mpost2catalog = MPost2Catalog() self.ysearch = yunsearch() if self.get_current_user(): self.userinfo = self.muser.get_by_id(self.get_current_user()) else: self.userinfo = None def get(self, url_str=''): url_arr = self.parse_url(url_str) if url_str == '': return elif len(url_arr) == 1: self.search(url_str) elif len(url_arr) == 2: self.search(url_arr[0], int(url_arr[1])) else: kwd = { 'info': '页面未找到', } self.render('html/404.html', kwd=kwd) def post(self, url_str=''): keyword = self.get_argument('keyword') self.search(keyword) def search(self, keyword, p_index=1): res_all = self.ysearch.get_all_num(keyword) results = self.ysearch.search_pager(keyword, page_index=p_index, doc_per_page=20) page_num = int(res_all / 20) kwd = {'title': '查找结果', 'pager': '', } self.render('{0}/search/search.html'.format(self.tmpl_name), kwd=kwd, srecs=results, pager=tools.gen_pager_bootstrap_url('/search/{0}'.format(keyword), page_num, p_index), cfg = config.cfg )
class MapOverlayHandler(BaseHandler): def initialize(self): self.mequa = MApp() self.muser = MUser() if self.get_current_user(): self.userinfo = self.muser.get_by_id(self.get_current_user()) else: self.userinfo = None def get(self, url_str=''): if len(url_str) > 0: url_arr = url_str.split('/') else: url_arr = [] if len(url_arr) > 1: self.show_overlay(url_arr) else: kwd = { 'title': '', 'info': '', } self.render('html/404.html', kwd=kwd) def show_overlay(self, app_arr): ''' 打开App. ''' app_info_arr = [] for app_rr in app_arr: app_info_arr.append(self.mequa.get_by_uid(app_rr)) kwd = { 'url': 1, "cookie_str": '', } if 'fullscreen' in self.request.arguments: tmpl = 'app_theme/overlay/overlay_full.html' else: tmpl = 'app_theme/overlay/overlay.html' self.render( tmpl, topmenu='', kwd=kwd, userinfo=self.userinfo, unescape=tornado.escape.xhtml_unescape, app_arr=app_info_arr, app_str='/'.join(app_arr), wcs_svr=config.wcs_svr, )
class MapOverlayHandler(BaseHandler): def initialize(self): self.mequa = MApp() self.muser = MUser() if self.get_current_user(): self.userinfo = self.muser.get_by_id(self.get_current_user()) else: self.userinfo = None def get(self, url_str=''): if len(url_str) > 0: url_arr = url_str.split('/') else: url_arr = [] if len(url_arr) > 1: self.show_overlay(url_arr) else: kwd = { 'title': '', 'info': '', } self.render('html/404.html', kwd=kwd) def show_overlay(self, app_arr): ''' 打开App. ''' app_info_arr = [] for app_rr in app_arr: app_info_arr.append(self.mequa.get_by_uid(app_rr)) kwd = {'url': 1, "cookie_str": '', } if 'fullscreen' in self.request.arguments: tmpl = 'app_theme/overlay/overlay_full.html' else: tmpl = 'app_theme/overlay/overlay.html' self.render(tmpl, topmenu='', kwd=kwd, userinfo=self.userinfo, unescape=tornado.escape.xhtml_unescape, app_arr=app_info_arr, app_str='/'.join(app_arr), wcs_svr=config.wcs_svr, )
class ReplyHandler(BaseHandler): def initialize(self): self.muser = MUser() self.mreply = MReply() self.mreply2user = MReply2User() self.mpost2reply = MPost2Reply() if self.get_current_user(): self.userinfo = self.muser.get_by_id(self.get_current_user()) else: self.userinfo = None def get(self, url_str=''): if url_str == '': return url_arr = url_str.split(r'/') if url_arr[0] == 'get': self.get_by_id(url_arr[1]) def get_by_id(self, reply_id): reply = self.mreply.get_reply_by_uid(reply_id) self.render( 'tplite/reply/show_reply.html', cnt = reply.cnt_html, username=reply.user_name, date=reply.date, vote=reply.vote, uid=reply.uid, userinfo=self.userinfo, unescape=tornado.escape.xhtml_unescape, ) def get_zan(self, f_zan): zan = self.mreply.get_by_zan(f_zan) if zan: output = { 'zan': zan.zan, } else: output = { '' }
class PostAjaxHandler(PostHandler): def initialize(self): self.init() self.muser = MUser() self.mpost = MPost() self.mcat = MCatalog() self.cats = self.mcat.query_all() self.mpost_hist = MPostHist() self.mpost2catalog = MPost2Catalog() self.mpost2reply = MPost2Reply() self.mapp2tag = MPost2Label() self.mrel = MRelation() self.tmpl_router = 'post_ajax' if self.get_current_user(): self.userinfo = self.muser.get_by_id(self.get_current_user()) else: self.userinfo = None
class PostAjaxHandler(PostHandler): def initialize(self): self.init() self.muser = MUser() self.mpost = MPost() self.mcat = MCatalog() self.cats = self.mcat.query_all() self.mspec = SpesubModel() self.specs = self.mspec.get_all() self.mpost_hist = MPostHist() self.mpost2catalog = MPost2Catalog() self.mpost2reply = MPost2Reply() self.mapp2tag = MPost2Label() self.mrel = MRelation() self.tmpl_router = 'post_ajax' if self.get_current_user(): self.userinfo = self.muser.get_by_id(self.get_current_user()) else: self.userinfo = None
class BaseHandler(tornado.web.RequestHandler, TemplateRendring): def init(self): self.tmpl_name = config.torlite_template_name self.muser = MUser() if self.get_current_user(): self.userinfo = self.muser.get_by_id(self.get_current_user()) else: self.userinfo = None def parse_url(self, url_str): url_str = url_str.strip() url_arr = [] if len(url_str) == 0 else url_str.split('/') return url_arr def get_current_user(self): return self.get_secure_cookie("user") def editable(self): # Deprecated. if self.get_current_user(): return 1 else: return 0 def render_jinja2(self, template_name, **kwargs): kwargs.update({ 'settings': self.settings, 'STATIC_URL': self.settings.get('static_url_prefix', '/static/'), 'request': self.request, 'current_user': self.current_user, 'xsrf_token': self.xsrf_token, 'xsrf_form_html': self.xsrf_form_html, }) content = self.render_template(template_name, **kwargs) self.write(content)
class EvaluationHandler(BaseHandler): def initialize(self): self.mequa = MApp() self.musage = MUsage() self.muser = MUser() self.mrel = MAppRel() self.mcollect = MEvaluation() if self.get_current_user(): self.userinfo = self.muser.get_by_id(self.get_current_user()) else: self.userinfo = None def get(self, url_str=''): if len(url_str) > 0: url_arr = url_str.split(r'/') else: return False # 形如 /evalucate/0123/1 if len(url_arr) == 2 and len(url_arr[0]) == 4 and ( url_arr[1] in ['0', '1']): if self.get_current_user(): self.add_or_update(url_arr[0], url_arr[1]) else: self.set_status('403') return False return None @tornado.web.authenticated def add_or_update(self, app_id, value): self.mcollect.add_or_update(self.userinfo.uid, app_id, value) out_dic = { 'eval0': self.mcollect.app_evaluation_count(app_id, 0), 'eval1': self.mcollect.app_evaluation_count(app_id, 1) } uu = json.dumps(out_dic) self.write(uu)
class EvaluationHandler(BaseHandler): def initialize(self): self.mequa = MApp() self.musage = MUsage() self.muser = MUser() self.mrel = MAppRel() self.mcollect = MEvaluation() if self.get_current_user(): self.userinfo = self.muser.get_by_id(self.get_current_user()) else: self.userinfo = None def get(self, url_str=''): if len(url_str) > 0: url_arr = url_str.split('/') else: return False # 形如 /evalucate/0123/1 if len(url_arr) == 2 and len(url_arr[0]) == 4 and ( url_arr[1] in ['0', '1']): if self.get_current_user(): self.add_or_update(url_arr[0], url_arr[1]) else: self.set_status('403') return False return None @tornado.web.authenticated def add_or_update(self, app_id, value): self.mcollect.add_or_update(self.userinfo.uid, app_id, value) out_dic = { 'eval0': self.mcollect.app_evaluation_count(app_id, 0), 'eval1': self.mcollect.app_evaluation_count(app_id, 1) } uu = json.dumps(out_dic) self.write(uu)
class LayoutHandler(BaseHandler): def initialize(self): self.mequa = MApp() self.muser = MUser() self.mlayout = MLayout() if self.get_current_user(): self.userinfo = self.muser.get_by_id(self.get_current_user()) else: self.userinfo = None def get(self, url_str): if len(url_str) > 0: url_arr = url_str.split('/') if len(url_arr) == 2: if url_arr[0] == 'delete': self.delete(url_arr[1]) @tornado.web.authenticated def delete(self, uid): self.mlayout.delete_by_uid(uid) def post(self, url_str=''): if url_str == 'save': self.save_layout() @tornado.web.authenticated def save_layout(self): post_data = {} for key in self.request.arguments: post_data[key] = self.get_arguments(key) if 'zoom' in post_data: pass else: self.set_status(403) return post_data['user'] = self.userinfo.uid self.mlayout.add_or_update(post_data)
class LayoutHandler(BaseHandler): def initialize(self): self.mequa = MApp() self.muser = MUser() self.mlayout = MLayout() if self.get_current_user(): self.userinfo = self.muser.get_by_id(self.get_current_user()) else: self.userinfo = None def get(self, url_str): if len(url_str) > 0: url_arr = url_str.split('/') if len(url_arr) == 2 : if url_arr[0] == 'delete': self.delete(url_arr[1]) @tornado.web.authenticated def delete(self, uid): self.mlayout.delete_by_uid(uid) def post(self, url_str = ''): if url_str == 'save': self.save_layout() @tornado.web.authenticated def save_layout(self): post_data = {} for key in self.request.arguments: post_data[key] = self.get_arguments(key) if 'zoom' in post_data: pass else: self.set_status(403) return post_data['user'] = self.userinfo.uid self.mlayout.add_or_update(post_data)
class CollectHandler( BaseHandler, ): def initialize(self): self.mequa = MApp() self.musage = MUsage() self.muser = MUser() self.mrel = MAppRel() self.mcollect = MCollect() if self.get_current_user(): self.userinfo = self.muser.get_by_id(self.get_current_user()) else: self.userinfo = None self.tmpl_sig = app_template_name def get(self, url_str=''): if len(url_str) > 0: url_arr = url_str.split('/') else: return False if url_str == 'list': self.list() elif len(url_arr) == 1 and len(url_str) == 4: if self.get_current_user(): self.add_or_update(url_str) else: self.set_status('403') return False @tornado.web.authenticated def add_or_update(self, app_id): self.mcollect.add_or_update(self.userinfo.uid, app_id) @tornado.web.authenticated def list(self): self.render( '{0}/collect/list.html'.format(self.tmpl_sig), recs_collect=self.mcollect.query_recent(self.userinfo.uid, 20), userinfo=self.userinfo, )
class CollectHandler(BaseHandler, ): def initialize(self): self.mequa = MApp() self.musage = MUsage() self.muser = MUser() self.mrel = MAppRel() self.mcollect = MCollect() if self.get_current_user(): self.userinfo = self.muser.get_by_id(self.get_current_user()) else: self.userinfo = None self.tmpl_sig = app_template_name def get(self, url_str=''): if len(url_str) > 0: url_arr = url_str.split('/') else: return False if url_str == 'list': self.list() elif len(url_arr) == 1 and len(url_str) == 4 : if self.get_current_user(): self.add_or_update(url_str) else: self.set_status('403') return False @tornado.web.authenticated def add_or_update(self, app_id): self.mcollect.add_or_update(self.userinfo.uid, app_id) @tornado.web.authenticated def list(self): self.render('{0}/collect/list.html'.format(self.tmpl_sig), recs_collect = self.mcollect.query_recent(self.userinfo.uid, 20), userinfo = self.userinfo, )
class ListHandler(BaseHandler): def initialize(self): self.mequa = MApp() self.musage = MUsage() self.muser = MUser() if self.get_current_user(): self.userinfo = self.muser.get_by_id(self.get_current_user()) else: self.userinfo = None def get(self, url_str=''): url_arr = self.parse_url(url_str) if url_str == 'app': self.list_app() def list_app(self): kwd = { 'pager': '', 'title': '最近使用的运算应用' , } self.render('app_theme/calc/list_app.html', kwd=kwd, userinfo = self.userinfo,)
class PageHandler(BaseHandler): def initialize(self): self.init() self.muser = MUser() self.mdb = MPage() self.mcat = MCatalog() self.cats = self.mcat.query_all() self.mspec = SpesubModel() self.specs = self.mspec.get_all() if self.get_current_user(): self.userinfo = self.muser.get_by_id(self.get_current_user()) else: self.userinfo = None def get(self, input=''): if input == '': return ip_arr = input.split('/') if (ip_arr[0] == 'modify'): self.to_modify(ip_arr[1]) elif len(ip_arr) == 1 and input.endswith('.html'): self.wiki(input.split('.')[0]) else: self.render('/html/404.html') def post(self, input=''): if input == '': return False else: ip_arr = input.split('/') if ip_arr[0] == 'modify': self.update(ip_arr[1]) else: self.wikinsert() def wiki(self, slug): dbdate = self.mdb.get_by_slug(slug) if dbdate: self.viewit(dbdate) else: self.to_add(slug) @tornado.web.authenticated def to_add(self, citiao): kwd = { 'cats': self.cats, 'specs': self.specs, 'slug': citiao, 'pager': '', } self.render('{0}/page/page_add.html'.format(self.tmpl_name), kwd=kwd) @tornado.web.authenticated def update(self, slug): post_data = {} for key in self.request.arguments: post_data[key] = self.get_arguments(key) if 'slug' in post_data: pass else: self.set_status(400) return False self.mdb.update(slug, post_data) self.redirect('/page/{0}.html'.format(post_data['slug'][0])) @tornado.web.authenticated def to_modify(self, slug): kwd = { 'pager': '', } self.render('{0}/page/page_edit.html'.format(self.tmpl_name), view=self.mdb.get_by_slug(slug), kwd=kwd, unescape=tornado.escape.xhtml_unescape, ) def viewit(self, dbdata): kwd = { 'pager': '', 'editable': 1 if self.get_current_user() else 0, } self.render('{0}/page/page_view.html'.format(self.tmpl_name), view=dbdata, unescape=tornado.escape.xhtml_unescape, kwd=kwd, format_date=tools.format_date, userinfo=self.userinfo, ) @tornado.web.authenticated def wikinsert(self): post_data = {} for key in self.request.arguments: post_data[key] = self.get_arguments(key) if 'slug' in post_data: pass else: self.set_status(400) return False if self.mdb.get_by_slug(post_data['slug'][0]) is None: self.mdb.insert_data(post_data) else: self.set_status(400) return False self.redirect('/page/{0}.html'.format(post_data['slug'][0]))
class SpecialHandler(BaseHandler): def initialize(self): self.init() self.muser = MUser() self.mpage = MPage() self.mpost = MPost() self.mcat = MCatalog() self.cats = self.mcat.query_all() self.mspec = SpesubModel() if self.get_current_user(): self.userinfo = self.muser.get_by_id(self.get_current_user()) else: self.userinfo = None def get(self, url_str=""): url_str = url_str.strip() ip_arr = [] if len(url_str) > 0: ip_arr = url_str.split(r'/') if url_str == '': self.index() elif url_str == 'add': self.to_add() elif len(ip_arr) == 1: self.list(url_str) elif len(ip_arr) == 2 and ip_arr[1] == 'edit': self.to_edit(ip_arr[0]) elif ip_arr[0] == 'delete': self.delete(ip_arr[1]) else: self.render('html/404.html') def post(self, input=''): if len(input) > 0: ip_arr = input.split('/') else: return False if input == 'add': self.add() elif len(ip_arr) == 2 and ip_arr[1] == 'edit': self.edit(ip_arr[0]) else: self.render('html/404.html') self.redirect('/spec/') @tornado.web.authenticated def edit(self, uid): post_data = {} for key in self.request.arguments: post_data[key] = self.get_arguments(key) self.mspec.update(uid, post_data) @tornado.web.authenticated def add(self): post_data = {} for key in self.request.arguments: post_data[key] = self.get_arguments(key) self.mspec.addata(post_data) @tornado.web.authenticated def to_edit(self, uid): spec_rec = self.mspec.get_by_id(uid) self.render('{0}/spec/edit.html'.format(self.tmpl_name), spec_rec=spec_rec) @tornado.web.authenticated def to_add(self): self.render('{0}/spec/add.html'.format(self.tmpl_name)) def list(self, spec_slug): ''' 列出专题信息,按某一分类 ''' page_rec = self.mspec.get_by_slug(spec_slug) kwd = {'editable': self.editable()} self.render( '{0}/spec/list.html'.format(self.tmpl_name), kwd=kwd, spec=page_rec, unescape=tornado.escape.xhtml_unescape, spec_recs=self.mpost.query_by_spec(page_rec.uid), ) def index(self): kwd = {'editable': self.editable()} self.render( '{0}/spec/index.html'.format(self.tmpl_name), kwd=kwd, spec_recs=self.mspec.get_all(), ) @tornado.web.authenticated def delete(self, del_id): is_deleted = self.mspec.delete(del_id) if is_deleted: self.redirect('/spec/') else: return False
class AppHandler(BaseHandler): def initialize(self): self.mevaluation = MEvaluation() self.mapp2catalog = MApp2Catalog() self.mapp2tag = MApp2Label() self.mapp = MApp() self.musage = MUsage() self.mtag = MAppCatalog() self.muser = MUser() self.mrel = MAppRel() self.mreply = MApp2Reply() if self.get_current_user(): self.userinfo = self.muser.get_by_id(self.get_current_user()) else: self.userinfo = None def get(self, url_str=''): if len(url_str) > 0: url_arr = url_str.split('/') else: return False if len(url_arr) == 1 and len(url_str) == 4: self.show_app(url_str) elif len(url_arr) == 2: if url_arr[0] == 'edit': self.to_edit_description(url_arr[1]) else: ''' 从相关计算中过来的。 ''' self.mrel.update_relation(url_arr[1], url_arr[0]) self.redirect('/{0}/{1}'.format(config.app_url_name, url_arr[0])) else: kwd = { 'title': '', 'info': '', } self.render('html/404.html', kwd=kwd) def post(self, url_str=''): if len(url_str) > 0: ip_arr = url_str.split('/') else: return False if ip_arr[0] == 'rel': if self.get_current_user(): self.add_relation(ip_arr[1]) else: self.redirect('/user/login') elif ip_arr[0] == 'comment_add': self.add_comment(ip_arr[1]) elif ip_arr[0] == 'edit': self.update() @tornado.web.authenticated def to_edit_description(self, app_id): if self.userinfo.privilege[4] == '1': info = self.mapp.get_by_uid(app_id) self.render( 'app_theme/app/edit.html', app_info=info, unescape=tornado.escape.xhtml_escape, tag_infos=self.mtag.query_all(), app2tag_info=self.mapp2catalog.query_by_app_uid(app_id), app2label_info=self.mapp2tag.get_by_id(app_id), ) else: return False @tornado.web.authenticated def update(self): if self.userinfo.privilege[4] == '1': post_data = {} for key in self.request.arguments: post_data[key] = self.get_arguments(key) self.mapp.modify_meta(post_data) self.update_catalog(post_data['uid'][0]) self.update_tag(post_data['uid'][0]) self.redirect('/{0}/{1}'.format(config.app_url_name, post_data['uid'][0])) else: return False @tornado.web.authenticated def update_tag(self, signature): if self.userinfo.privilege[4] == '1': pass else: return False post_data = {} for key in self.request.arguments: post_data[key] = self.get_arguments(key) current_tag_infos = self.mapp2tag.get_by_id(signature) tags_arr = [x.strip() for x in post_data['tags'][0].split(',')] for tag_name in tags_arr: if tag_name == '': pass else: self.mapp2tag.add_record(signature, tag_name, 1) for cur_info in current_tag_infos: if cur_info.tag.name in tags_arr: pass else: self.mapp2tag.remove_relation(signature, cur_info.tag) @tornado.web.authenticated def update_catalog(self, signature): if self.userinfo.privilege[4] == '1': pass else: return False post_data = {} for key in self.request.arguments: post_data[key] = self.get_arguments(key) current_catalog_infos = self.mapp2catalog.query_by_app_uid(signature) new_tag_arr = [] for key in ['cat_1', 'cat_2', 'cat_3', 'cat_4', 'cat_5']: if post_data[key][0] == '': pass else: new_tag_arr.append(post_data[key][0]) self.mapp2catalog.add_record(signature, post_data[key][0], int(key[-1])) for cur_info in current_catalog_infos: if str(cur_info.catalog.uid) in new_tag_arr: pass else: self.mapp2catalog.remove_relation(signature, cur_info.catalog) @tornado.web.authenticated def add_comment(self, id_post): post_data = {} for key in self.request.arguments: post_data[key] = self.get_arguments(key) post_data['user_id'] = self.userinfo.uid post_data['user_name'] = self.userinfo.user_name comment_uid = self.mreply.insert_data(post_data, id_post) if comment_uid: output = { 'pinglun': comment_uid, } else: output = { 'pinglun': 0, } return json.dump(output, self) def show_app(self, app_id): ''' 打开App. ''' qian = self.get_secure_cookie('map_hist') if qian: qian = qian.decode('utf-8') else: qian = '' self.set_secure_cookie('map_hist', (app_id + qian)[:20]) replys = self.mreply.get_by_id(app_id) rec = self.mapp.get_by_uid(app_id) if rec == False: kwd = { 'info': '您要找的云算应用不存在。', } self.render('html/404.html', kwd=kwd) return False last_map_id = self.get_secure_cookie('use_app_uid') if last_map_id: last_map_id = last_map_id.decode('utf-8') self.set_secure_cookie('use_app_uid', app_id) if last_map_id and self.mapp.get_by_uid(last_map_id): self.add_relation(last_map_id, app_id) cookie_str = tools.get_uuid() kwd = { 'pager': '', 'url': rec.html_path, 'cookie_str': cookie_str, 'signature': app_id, 'tkw': '在线计算,在线计算器', 'tdesc': '', 'eval_0': self.mevaluation.app_evaluation_count(app_id, 0), 'eval_1': self.mevaluation.app_evaluation_count(app_id, 1), } self.mapp.view_count_increase(app_id) if self.get_current_user(): self.musage.add_or_update(self.userinfo.uid, app_id) self.set_cookie('user_pass', cookie_str) map_hist = [] if self.get_secure_cookie('map_hist'): for xx in range( 0, len(self.get_secure_cookie('map_hist').decode('utf-8')), 4): map_hist.append( self.get_secure_cookie('map_hist').decode('utf-8')[xx:xx + 4]) if 'fullscreen' in self.request.arguments: tmpl = 'app_theme/app/full_screen.html' else: tmpl = 'app_theme/app/show_map.html' self.render( tmpl, kwd=kwd, calc_info=rec, userinfo=self.userinfo, relations=self.mrel.get_app_relations(rec.uid), unescape=tornado.escape.xhtml_unescape, ad_switch=random.randint(1, 18), tag_info=self.mapp2tag.get_by_id(app_id), recent_apps=self.musage.query_recent(self.get_current_user(), 6)[1:], map_hist=map_hist, replys=replys, ) def add_relation(self, f_uid, t_uid): if False == self.mapp.get_by_uid(t_uid): return False if f_uid == t_uid: ''' 关联其本身 ''' return False self.mrel.add_relation(f_uid, t_uid, 2) self.mrel.add_relation(t_uid, f_uid, 1) return True
class SpecialHandler(BaseHandler): def initialize(self): self.init() self.muser = MUser() self.mpage = MPage() self.mpost = MPost() self.mcat = MCatalog() self.cats = self.mcat.query_all() self.mspec = SpesubModel() if self.get_current_user(): self.userinfo = self.muser.get_by_id(self.get_current_user()) else: self.userinfo = None def get(self, url_str=""): url_arr = self.parse_url(url_str) if url_str == '': self.index() elif url_str == 'add': self.to_add() elif len(url_arr) == 1: self.list(url_str) elif len(url_arr) == 2 and url_arr[1] == 'edit': self.to_edit(url_arr[0]) elif url_arr[0] == 'delete': self.delete(url_arr[1]) else: self.render('html/404.html') def post(self, url_str=''): url_arr = self.parse_url(url_str) if url_str == 'add': self.add() elif len(url_arr) == 2 and url_arr[1] == 'edit': self.edit(url_arr[0]) else: self.render('html/404.html') # self.redirect('/spec/') @tornado.web.authenticated def edit(self, uid): post_data = {} for key in self.request.arguments: post_data[key] = self.get_arguments(key) if 'slug' in post_data: pass else: self.set_status(400) return False self.mspec.update(uid, post_data) @tornado.web.authenticated def add(self): post_data = {} for key in self.request.arguments: post_data[key] = self.get_arguments(key) if self.mspec.get_by_slug(post_data['slug'][0]) is None: self.mspec.addata(post_data) else: self.set_status(400) return False @tornado.web.authenticated def to_edit(self, uid): spec_rec = self.mspec.get_by_id(uid) self.render('{0}/spec/edit.html'.format(self.tmpl_name), spec_rec=spec_rec, cfg = config.cfg, ) @tornado.web.authenticated def to_add(self): self.render('{0}/spec/add.html'.format(self.tmpl_name)) def list(self, spec_slug): ''' 列出专题信息,按某一分类 ''' page_rec = self.mspec.get_by_slug(spec_slug) kwd = { 'editable': self.editable() } self.render('{0}/spec/list.html'.format(self.tmpl_name), kwd=kwd, spec=page_rec, unescape=tornado.escape.xhtml_unescape, spec_recs=self.mpost.query_by_spec(page_rec.uid), cfg = config.cfg, ) def index(self): kwd = { 'editable': self.editable() } self.render('{0}/spec/index.html'.format(self.tmpl_name), kwd=kwd, spec_recs=self.mspec.get_all(), cfg = config.cfg, ) @tornado.web.authenticated def delete(self, del_id): is_deleted = self.mspec.delete(del_id) if is_deleted: self.redirect('/spec/') else: return False
class CatHandler(BaseHandler): def initialize(self): self.muser = MUser() self.mpost = MPost() self.mcat = MCatalog() self.cats = self.mcat.query_all() self.mspec = SpesubModel() self.specs = self.mspec.get_all() self.mpost2catalog = MPost2Catalog() if self.get_current_user(): self.userinfo = self.muser.get_by_id(self.get_current_user()) else: self.userinfo = None def get(self, input=''): if len(input) > 0: ip_arr = input.split(r'/') if input == '': pass elif len(ip_arr) == 1 : self.list_catalog(input) elif len(ip_arr) == 2: self.list_catalog(ip_arr[0], ip_arr[1]) else: self.render('/html/404.html') def list_catalog(self, cat_slug, cur_p = ''): if cur_p == '': current_page_num = 1 else: current_page_num = int(cur_p) cat_rec = self.mcat.get_by_slug(cat_slug) num_of_cat = self.mpost2catalog.catalog_record_number(cat_rec.uid) page_num = int(num_of_cat / config.page_num ) + 1 cat_name = cat_rec.name kwd = { 'cat_name': cat_name, 'cat_slug': cat_slug, 'unescape': tornado.escape.xhtml_unescape, 'title': cat_name, } self.render('tplite/catalog/list.html', infos=self.mpost2catalog.query_pager_by_slug(cat_slug,current_page_num), pager = tools.gen_pager(cat_slug, page_num, current_page_num), userinfo = self.userinfo, kwd=kwd) # def view_cat_old(self, cat_slug, cur_p=''): # if cur_p == '': # current = 1 # else: # current = int(cur_p) # # cat_rec = self.mcat.get_by_slug(cat_slug) # num_of_cat = self.mpost.get_num_by_cat(cat_rec.id_cat) # page_num = int(num_of_cat / config.page_num ) + 1 # # cat_name = cat_rec.name # kwd = { # 'cat_name': cat_name, # 'cat_slug': cat_slug, # 'unescape': tornado.escape.xhtml_unescape, # 'pager': tools.gen_pager(cat_slug, page_num, current), # 'title': cat_name, # } # for x in self.cats: # if x.slug == cat_slug: # search_str = ',{0},'.format(x.id_cat) # dbdata = self.mpost.query_cat_by_pager(search_str, current) # self.render('tplite/post/all.html', # kwd = kwd, # view=dbdata, # rand_recs = self.get_random(), # format_date = tools.format_date) def get_random(self): return self.mpost.query_random()
class PostHandler(BaseHandler): def initialize(self): self.init() self.muser = MUser() self.mpost = MPost() self.mcat = MCatalog() self.cats = self.mcat.query_all() self.mspec = SpesubModel() self.specs = self.mspec.get_all() self.mpost_hist = MPostHist() self.mpost2catalog = MPost2Catalog() self.mpost2reply = MPost2Reply() self.mapp2tag = MPost2Label() self.mrel = MRelation() self.tmpl_router = 'post' if self.get_current_user(): self.userinfo = self.muser.get_by_id(self.get_current_user()) else: self.userinfo = None def get(self, url_str=''): if url_str == '': self.recent() url_arr = url_str.split('/') if len(url_arr) == 1 and url_str.endswith('.html'): self.wiki(url_str.split('.')[0]) elif url_str == 'add_document': self.to_add_document() elif url_str == 'recent': self.recent() elif url_str == 'refresh': self.refresh() elif (url_arr[0] == 'modify'): self.to_modify(url_arr[1]) elif url_arr[0] == 'delete': self.delete(url_arr[1]) else: kwd = { 'info': '页面未找到', } self.render('html/404.html', kwd=kwd) def post(self, url_str=''): if url_str == '': return url_arr = url_str.split('/') if len(url_arr) == 1 and url_str.endswith('.html'): self.add_post() if url_arr[0] == 'modify': self.update(url_arr[1]) elif url_str == 'add_document': self.user_add_post() elif url_arr[0] == 'add_document': self.user_add_post() else: self.redirect('/html/404.html') def recent(self, with_catalog=True, with_date=True): kwd = { 'pager': '', 'unescape': tornado.escape.xhtml_unescape, 'title': '最近文档', 'with_catalog': with_catalog, 'with_date': with_date, } self.render('{0}/{1}/post_list.html'.format(self.tmpl_name, self.tmpl_router), kwd=kwd, view=self.mpost.query_recent(), view_all=self.mpost.query_all(), format_date=tools.format_date, userinfo=self.userinfo, ) def refresh(self): kwd = { 'pager': '', 'title': '最近文档', } self.render('{0}/{1}/post_list.html'.format(self.tmpl_name, self.tmpl_router), kwd=kwd, userinfo=self.userinfo, view=self.mpost.query_dated(10), format_date=tools.format_date, unescape=tornado.escape.xhtml_unescape, ) def get_random(self): return self.mpost.query_random() def wiki(self, uid): dbdate = self.mpost.get_by_id(uid) if dbdate: self.mpost.update_view_count_by_uid(dbdate.uid) self.viewit(uid) else: self.to_add(uid) def to_add_document(self, ): kwd = { 'pager': '', 'cats': self.cats, 'specs': self.specs, 'uid': '', } self.render('{0}/{1}/post_add.html'.format(self.tmpl_name, self.tmpl_router), topmenu='', kwd=kwd, tag_infos=self.mcat.query_all(), userinfo=self.userinfo, ) @tornado.web.authenticated def to_add(self, uid): kwd = { 'cats': self.cats, 'specs': self.specs, 'uid': uid, 'pager': '', } self.render('{0}/{1}/post_add.html'.format(self.tmpl_name, self.tmpl_router), kwd=kwd, tag_infos=self.mcat.query_all(), ) @tornado.web.authenticated def update(self, uid): raw_data = self.mpost.get_by_id(uid) if self.userinfo.privilege[2] == '1' 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() is_update_time = True if post_data['is_update_time'][0] == '1' else False self.update_tag(uid) self.mpost.update(uid, post_data, update_time=is_update_time) self.update_catalog(uid) self.mpost_hist.insert_data(raw_data) self.redirect('/post/{0}.html'.format(uid)) def update_tag(self, signature): if self.userinfo.privilege[4] == '1': pass else: return False post_data = {} for key in self.request.arguments: post_data[key] = self.get_arguments(key) if 'tags' in post_data: pass else: return False current_tag_infos = self.mapp2tag.get_by_id(signature) tags_arr = [x.strip() for x in post_data['tags'][0].split(',')] for tag_name in tags_arr: if tag_name == '': pass else: self.mapp2tag.add_record(signature, tag_name, 1) for cur_info in current_tag_infos: if cur_info.tag.name in tags_arr: pass else: self.mapp2tag.remove_relation(signature, cur_info.tag) @tornado.web.authenticated def update_catalog(self, uid): raw_data = self.mpost.get_by_id(uid) if self.userinfo.privilege[2] == '1' 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) current_infos = self.mpost2catalog.query_by_id(uid) new_tag_arr = [] for key in ['tag1', 'tag2', 'tag3', 'tag4', 'tag5']: if key in post_data: pass else: continue if post_data[key][0] == '': pass else: new_tag_arr.append(int(post_data[key][0])) self.mpost2catalog.add_record(uid, post_data[key][0], int(key[-1])) for cur_info in current_infos: if cur_info.catalog.uid not in new_tag_arr: self.mpost2catalog.remove_relation(uid, cur_info.catalog) # .delete(cur_info.uid) @tornado.web.authenticated def to_modify(self, id_rec): a = self.mpost.get_by_id(id_rec) # 用户具有管理权限, # 或 # 文章是用户自己发布的。 if self.userinfo.privilege[2] == '1' or a.user_name == self.get_current_user(): pass else: return False id_spec = a.id_spec kwd = { 'pager': '', 'cats': self.cats, 'specs': self.specs, 'id_spec': id_spec, } self.render('{0}/{1}/post_edit.html'.format(self.tmpl_name, self.tmpl_router), kwd=kwd, unescape=tornado.escape.xhtml_unescape, tag_infos=self.mcat.query_all(), app2label_info=self.mapp2tag.get_by_id(id_rec), app2tag_info=self.mpost2catalog.query_by_id(id_rec), dbrec=a, userinfo=self.userinfo, ) def get_cat_str(self, cats): cat_arr = cats.split(',') out_str = '' for xx in self.cats: if str(xx.uid) in cat_arr: tmp_str = '''<li><a href="/category/{0}" style="margin:10px auto;"> {1} </a></li> '''.format(xx.slug, tornado.escape.xhtml_escape(xx.name)) out_str += tmp_str return (out_str) def get_cat_name(self, id_cat): for x in self.cats: if x['id_cat'] == id_cat: return (x['name']) def viewit(self, post_id): last_post_id = self.get_secure_cookie('last_post_uid') if last_post_id: last_post_id = last_post_id.decode('utf-8') self.set_secure_cookie('last_post_uid', post_id) if last_post_id and self.mpost.get_by_id(last_post_id): self.add_relation(last_post_id, post_id) cats = self.mpost2catalog.query_catalog(post_id) replys = self.mpost2reply.get_by_id(post_id) tag_info = self.mapp2tag.get_by_id(post_id) rec = self.mpost.get_by_id(post_id) if not rec: kwd = { 'info': '您要找的云算应用不存在。', } self.render('html/404.html', kwd=kwd) return False if cats.count() == 0: cat_id = '' else: cat_id = cats.get().catalog kwd = { 'pager': '', 'editable': self.editable(), 'cat_id': cat_id } self.render('{0}/{1}/post_view.html'.format(self.tmpl_name, self.tmpl_router), view=rec, unescape=tornado.escape.xhtml_unescape, kwd=kwd, userinfo=self.userinfo, tag_info=tag_info, relations=self.mrel.get_app_relations(rec.uid), replys=replys, ) def add_relation(self, f_uid, t_uid): if False == self.mpost.get_by_id(t_uid): return False if f_uid == t_uid: ''' 关联其本身 ''' return False # 双向关联,但权重不一样. self.mrel.add_relation(f_uid, t_uid, 2) self.mrel.add_relation(t_uid, f_uid, 1) return True @tornado.web.authenticated def add_post(self): if self.userinfo.privilege[1] == '1': 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() id_post = post_data['uid'][0] cur_post_rec = self.mpost.get_by_id(id_post) if cur_post_rec is None: uid = self.mpost.insert_data(id_post, post_data) self.update_tag(uid) self.update_catalog(uid) self.redirect('/post/{0}.html'.format(id_post)) @tornado.web.authenticated def user_add_post(self): if self.userinfo.privilege[1] == '1': pass else: return False post_data = {} print(post_data) for key in self.request.arguments: post_data[key] = self.get_arguments(key) post_data['user_name'] = self.get_current_user() cur_uid = tools.get_uu5d() while self.mpost.get_by_id(cur_uid): cur_uid = tools.get_uu5d() uid = self.mpost.insert_data(cur_uid, post_data) self.update_tag(uid) self.update_catalog(uid) self.redirect('/post/{0}.html'.format(cur_uid)) @tornado.web.authenticated def delete(self, del_id): is_deleted = self.mpost.delete(del_id) if self.tmpl_router == "post": if is_deleted: self.redirect('/post/recent') else: return False else: if is_deleted: output = { 'del_info ': 1, } else: output = { 'del_info ': 0, } return json.dump(output, self)
class Post2ReplyHandler(BaseHandler): def initialize(self): self.init() self.muser = MUser() self.mreply = MReply() self.mreply2user = MReply2User() self.mpost2reply = MPost2Reply() if self.get_current_user(): self.userinfo = self.muser.get_by_id(self.get_current_user()) else: self.userinfo = None def get(self, url_str=''): if url_str == '': return url_arr = url_str.split(r'/') if url_arr[0] == 'delete_reply': self.delete(url_arr[1]) elif url_arr[0] == 'zan': self.zan(url_arr[1]) def post(self, url_str=''): if url_str == '': return url_arr = url_str.split(r'/') if url_arr[0] == 'add': self.add_comment(url_arr[1]) @tornado.web.authenticated def add_comment(self, id_post): post_data = {} for key in self.request.arguments: post_data[key] = self.get_arguments(key) post_data['user_id'] = self.userinfo.uid post_data['user_name'] = self.userinfo.user_name comment_uid = self.mreply.insert_data(post_data) if comment_uid: self.mpost2reply.insert_data(id_post, comment_uid) output = { 'pinglun': comment_uid, } else: output = { 'pinglun': 0, } return json.dump(output, self) @tornado.web.authenticated def zan(self, id_reply): post_data = {} for key in self.request.arguments: post_data[key] = self.get_arguments(key) post_data['user_id'] = self.userinfo.uid cur_count = self.mreply2user.insert_data(self.userinfo.uid, id_reply) if cur_count: self.mreply.update_vote(id_reply, cur_count) output = { 'text_zan': cur_count, } else: output = { 'text_zan': 0, } return json.dump(output, self) def delete(self, del_id): if self.mreply2user.delete(del_id): output = {'del_zan': 1} else: output = { 'del_zan': 0, } return json.dump(output, self)
class SpecHandler(BaseHandler): def initialize(self): self.muser = MUser() self.mpage = MPage() self.mdb = MPost() self.mcat = MCatalog() self.cats = self.mcat.query_all() self.mspec = SpesubModel() if self.get_current_user(): self.userinfo = self.muser.get_by_id(self.get_current_user()) else: self.userinfo = None def get(self, input=''): if len(input) > 0: ip_arr = input.split(r'/') if input == '': self.index() elif input == 'add': self.to_add() elif len(ip_arr) == 1: self.list(input) elif len(ip_arr) == 2 and ip_arr[1] == 'edit': self.to_edit(ip_arr[0]) else: self.render('/html/404.html') def post(self, input=''): if len(input) > 0: ip_arr = input.split(r'/') if input == '': pass elif input == 'add': self.add() elif len(ip_arr) == 2 and ip_arr[1] == 'edit': self.edit(ip_arr[0]) else: self.render('/html/404.html') self.redirect('/spec/') @tornado.web.authenticated def edit(self, uid): post_data = {} for key in self.request.arguments: post_data[key] = self.get_arguments(key) self.mspec.update(uid, post_data) @tornado.web.authenticated def add(self): post_data = {} for key in self.request.arguments: post_data[key] = self.get_arguments(key) self.mspec.addata(post_data) @tornado.web.authenticated def to_edit(self, uid): spec_rec = self.mspec.get_by_id(uid) self.render('tplite/spec/edit.html', spec_rec=spec_rec) @tornado.web.authenticated def to_add(self): # spec_rec = self.mspec.get_by_id(uid) # uuu = self.mcat.query_all() print('to_add') self.render('tplite/spec/add.html') def list(self, spec_slug): ''' 列出专题信息,按某一分类 ''' page_rec = self.mspec.get_by_slug(spec_slug) # content = self.mpage.get_by_wiki(page_rec.name) # if content is None: # re_url = '/page/{0}'.format(tornado.escape.url_escape(page_rec.name)) # self.redirect(re_url) kwd = {'editable': self.editable()} self.render( 'tplite/spec/list.html', kwd=kwd, spec=page_rec, unescape=tornado.escape.xhtml_unescape, spec_recs=self.mdb.query_by_spec(page_rec.uid), ) def index(self): kwd = { # 'spec': content, # 'view': recs, 'editable': self.editable() } spec_recs = self.mspec.get_all() self.render('tplite/spec/index.html', spec_recs=spec_recs, kwd=kwd)
class PostHandler(BaseHandler): def initialize(self): self.muser = MUser() self.mpost = MPost() self.mcat = MCatalog() self.cats = self.mcat.query_all() self.mspec = SpesubModel() self.specs = self.mspec.get_all() self.mpost_hist = MPostHist() self.mpost2catalog = MPost2Catalog() self.mreply = MReply() if self.get_current_user(): self.userinfo = self.muser.get_by_id(self.get_current_user()) else: self.userinfo = None def get(self, url_str=''): if url_str == '': return url_arr = url_str.split('/') if len(url_arr) == 1 and url_str.endswith('.html'): self.wiki(url_str.split('.')[0]) elif url_str == 'find': self.to_find() elif url_arr[0] == 'find': self.find(url_arr[1]) elif url_str == 'recent': self.recent() elif url_str == 'refresh': self.refresh() elif (url_arr[0] == 'modify'): self.to_modify(url_arr[1]) else: kwd = { 'info': '页面未找到', } self.render('html/404.html', kwd=kwd) def post(self, url_str=''): if url_str == '': return url_arr = url_str.split('/') if url_arr[0] == 'modify': self.update(url_arr[1]) elif url_str == 'find': self.post_find() elif url_arr[0] == 'add': self.add_post(url_arr[1]) elif url_arr[0] == 'comment_add': self.add_comment(url_arr[1]) else: self.redirect('html/404.html') def to_find(self, ): kwd = { 'pager': '', } self.render('tplite/post/find.html', topmenu='', kwd=kwd) def recent(self): kwd = { 'pager': '', 'unescape': tornado.escape.xhtml_unescape, 'title': '最近文档', } self.render( 'tplite/post/all.html'.format(input), kwd=kwd, view=self.mpost.query_recent(), # rand_recs=self.get_random(), format_date=tools.format_date, ) def refresh(self): kwd = { 'pager': '', 'title': '最近文档', } self.render( 'tplite/post/all.html'.format(input), kwd=kwd, view=self.mpost.query_dated(60), format_date=tools.format_date, unescape=tornado.escape.xhtml_unescape, ) def post_find(self): keyword = self.get_argument('keyword') self.find(keyword) def find(self, keyword): kwd = { 'pager': '', 'unescape': tornado.escape.xhtml_unescape, 'title': '查找结果', } self.render( 'tplite/post/find_list.html'.format(input), kwd=kwd, view=self.mpost.get_by_keyword(keyword), ) def get_random(self): return self.mpost.query_random() def view_cat(self, cat_slug): for x in self.cats: if x.slug == cat_slug: search_str = ',{0},'.format(x.id_cat) dbdata = self.mpost.query_by_cat(search_str) self.render('tplite/post/all.html', view=dbdata, unescape=tornado.escape.xhtml_unescape) def wiki(self, uid): dbdate = self.mpost.get_by_id(uid) if dbdate: self.mpost.update_view_count_by_uid(dbdate.uid) self.viewit(dbdate) else: self.to_add(uid) @tornado.web.authenticated def to_add(self, uid): kwd = { 'cats': self.cats, 'specs': self.specs, 'uid': uid, 'pager': '', } self.render( 'tplite/post/addwiki.html', kwd=kwd, tag_infos=self.mcat.query_all(), ) @tornado.web.authenticated def update(self, uid): raw_data = self.mpost.get_by_id(uid) if self.userinfo.privilege[ 2] == '1' 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() # if update the time is_update_time = True if post_data['is_update_time'][ 0] == '1' else False self.mpost.update(uid, post_data, update_time=is_update_time) self.update_catalog(uid) self.mpost_hist.insert_data(raw_data) self.redirect('/post/{0}.html'.format(uid)) @tornado.web.authenticated def update_catalog(self, uid): raw_data = self.mpost.get_by_id(uid) if self.userinfo.privilege[ 2] == '1' 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) current_infos = self.mpost2catalog.query_by_id(uid) new_tag_arr = [] for key in ['tag1', 'tag2', 'tag3', 'tag4', 'tag5']: if post_data[key][0] == '': pass else: new_tag_arr.append(int(post_data[key][0])) self.mpost2catalog.add_record(uid, post_data[key][0], int(key[-1])) for cur_info in current_infos: if cur_info.catalog.uid not in new_tag_arr: self.mpost2catalog.delete_by_id(cur_info.uid) # self.redirect('/post/{0}.html'.format(uid)) @tornado.web.authenticated def to_modify(self, id_rec): a = self.mpost.get_by_id(id_rec) # 用户具有管理权限, # 或 # 文章是用户自己发布的。 if self.userinfo.privilege[ 2] == '1' or a.user_name == self.get_current_user(): pass else: return False id_spec = a.id_spec kwd = { 'pager': '', 'cats': self.cats, 'specs': self.specs, 'id_spec': id_spec, } self.render( 'tplite/post/modify.html', kwd=kwd, unescape=tornado.escape.xhtml_unescape, tag_infos=self.mcat.query_all(), app2tag_info=self.mpost2catalog.query_by_id(id_rec), dbrec=a, ) # @tornado.web.authenticated # def to_modify_catalog(self, id_rec): # # 用户具有管理权限, # # 或 # # 文章是用户自己发布的。 # print(self.userinfo.privilege) # if self.userinfo.privilege[4] == '1': # pass # else: # print('Error') # return False # a = self.mpost.get_by_id(id_rec) # # id_spec = a.id_spec # kwd = { # 'pager': '', # 'cats': self.cats, # 'specs': self.specs, # 'view': a, # 'id_spec': id_spec, # } # self.render('tplite/post/edit_catalog.html', kwd=kwd, unescape=tornado.escape.xhtml_unescape, # tag_infos=self.mcat.query_all(), # app2tag_info=self.mpost2catalog.query_by_id(id_rec), # ) def get_cat_str(self, cats): cat_arr = cats.split(',') out_str = '' for xx in self.cats: if str(xx.uid) in cat_arr: tmp_str = '''<li><a href="/category/{0}" style="margin:10px auto;"> {1} </a></li> '''.format(xx.slug, tornado.escape.xhtml_escape(xx.name)) out_str += tmp_str return (out_str) def get_cat_name(self, id_cat): for x in self.cats: if x['id_cat'] == id_cat: return (x['name']) def viewit(self, post_id): cats = self.mpost2catalog.query_catalog(post_id) replys = self.mreply.get_by_id(post_id) if cats.count() == 0: cat_id = '' else: cat_id = cats.get().catalog kwd = {'pager': '', 'editable': self.editable(), 'cat_id': cat_id} self.render( 'tplite/post/viewiki.html', view=post_id, unescape=tornado.escape.xhtml_unescape, kwd=kwd, userinfo=self.userinfo, replys=replys, ) @tornado.web.authenticated def add_post(self, id_post): if self.userinfo.privilege[1] == '1': 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() cur_post_rec = self.mpost.get_by_id(id_post) if cur_post_rec is None: uid = self.mpost.insert_data(id_post, post_data) self.update_catalog(uid) self.redirect('/post/{0}.html'.format(id_post)) @tornado.web.authenticated def add_comment(self, id_post): if self.userinfo.privilege[0] == '1': pass else: return False post_data = {} for key in self.request.arguments: post_data[key] = self.get_arguments(key) post_data['user_id'] = self.userinfo.uid post_data['user_name'] = self.userinfo.user_name comment = self.mreply.insert_data(id_post, post_data) if comment: output = { 'pinglun': comment, } else: output = { 'pinglun': 0, } return json.dump(output, self) #self.redirect('/post/{0}.html'.format(id_post)) def get_zan(self, f_zan): zan = self.mreply.get_by_zan(f_zan) if zan: output = { 'zan': zan.zan, } else: output = {''}
class ChartHandler(BaseHandler): def initialize(self): self.mchart = MChart() self.muser = MUser() if self.get_current_user(): self.userinfo = self.muser.get_by_id(self.get_current_user()) else: self.userinfo = None def get(self, url_str=''): url_arr = self.parse_url(url_str) if len(url_arr) == 1: self.show_geojson(url_str) elif len(url_arr) == 2: if url_arr[0] == 'add': self.to_add(url_arr[1]) elif url_arr[0] == 'edit': self.to_edit(url_arr[1]) def post(self, url_str=''): url_arr = self.parse_url(url_str) if len(url_arr) == 1: pass elif len(url_arr) == 2: if url_arr[0] == 'add': self.add(url_arr[1]) elif url_arr[0] == 'edit': self.add(url_arr[1]) def show_geojson(self, chart_id): chart_info = self.mchart.get_by_id(chart_id) if chart_info: pass else: self.redirect('/chart/add/{0}'.format(chart_id)) kwd = { 'pager': '', 'url': self.request.uri, 'tdesc': '', 'login': 1 if self.get_current_user() else 0, } self.render('chart/view.html'.format(chart_id), unescape=tornado.escape.xhtml_unescape, chart_info=chart_info, userinfo=self.userinfo, ) # self.render('chart/h{0}.html'.format(chart_id), # unescape=tornado.escape.xhtml_unescape, # chart_info=chart_info, # userinfo=self.userinfo, ) @tornado.web.authenticated def to_add(self, chart_id): self.render('chart/add.html', uid=chart_id) @tornado.web.authenticated def to_edit(self, chart_id): chart_info = self.mchart.get_by_id(chart_id) self.render('chart/edit.html', unescape=tornado.escape.xhtml_unescape, chart_info=chart_info, ) @tornado.web.authenticated def add(self, chart_id): if self.userinfo.privilege[4] == '1': pass else: return False post_data = {} for key in self.request.arguments: post_data[key] = self.get_arguments(key) self.mchart.add_or_update(chart_id, post_data) self.redirect('/chart/{0}'.format(chart_id))
class WikiHandler(BaseHandler): def initialize(self): self.init() self.muser = MUser() self.mwiki = MWiki() self.mcat = MCatalog() self.cats = self.mcat.query_all() self.mspec = SpesubModel() self.specs = self.mspec.get_all() self.mwiki_hist = MWikiHist() if self.get_current_user(): self.userinfo = self.muser.get_by_id(self.get_current_user()) else: self.userinfo = None def get(self, url_str=''): if url_str == '': return url_arr = url_str.split(r'/') if url_str == 'recent': self.recent() 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, input=''): if input == '': return url_arr = input.split(r'/') 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('{0}/wiki/wiki_list.html'.format(self.tmpl_name), kwd=kwd, view=self.mwiki.query_recent(), format_date=tools.format_date, ) def refresh(self): kwd = { 'pager': '', 'unescape': tornado.escape.xhtml_unescape, 'title': '最近文档', } self.render('{0}/wiki/wiki_list.html'.format(self.tmpl_name), kwd=kwd, view=self.mwiki.query_dated(16), format_date=tools.format_date, ) def wiki(self, title): dbdate = self.mwiki.get_by_wiki(title) if dbdate: self.mwiki.update_view_count_by_uid(dbdate.uid) self.viewit(dbdate) else: self.to_add(title) @tornado.web.authenticated def to_add(self, title): kwd = { 'cats': self.cats, 'specs': self.specs, 'title': title, 'pager': '', } self.render('{0}/wiki/wiki_add.html'.format(self.tmpl_name), kwd=kwd, ) @tornado.web.authenticated def update(self, uid): raw_data = self.mwiki.get_by_id(uid) if self.userinfo.privilege[2] == '1' 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.userinfo.privilege[2] == '1' or wiki_rec.user_name == self.get_current_user(): pass else: return False kwd = { 'pager': '', 'cats': self.cats, 'specs': self.specs, } self.render('{0}/wiki/wiki_edit.html'.format(self.tmpl_name), kwd=kwd, unescape=tornado.escape.xhtml_unescape, tag_infos=self.mcat.query_all(), dbrec=wiki_rec, ) def viewit(self, view): kwd = { 'pager': '', 'editable': self.editable(), } self.render('{0}/wiki/wiki_view.html'.format(self.tmpl_name), view=view, unescape=tornado.escape.xhtml_unescape, kwd=kwd, userinfo=self.userinfo, ) @tornado.web.authenticated def wikinsert(self): if self.userinfo.privilege[1] == '1': 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() tt = self.mwiki.get_by_wiki(post_data['title'][0]) if tt is None: self.mwiki.insert_data(post_data) self.redirect('/wiki/{0}'.format(tornado.escape.url_escape(post_data['title'][0])))
class RelHandler(BaseHandler): def initialize(self): self.mapp = MApp() self.mpost = MPost() self.rel_post2app = MRelPost2App() self.rel_app2post = MRelApp2Post() self.muser = MUser() if self.get_current_user(): self.userinfo = self.muser.get_by_id(self.get_current_user()) else: self.userinfo = None self.mvip = None def get(self, url_str=''): if len(url_str) > 0: ip_arr = url_str.split('/') else: return False if len(ip_arr) == 2: self.add_relation(ip_arr) # elif len(ip_arr) == 4: # self.update_relation(ip_arr) def check_app(self, tt, uid): if tt == 'post': if False == self.mpost.get_by_id(uid): return False if tt == 'app': if False == self.mapp.get_by_uid(uid): return False return True def add_relation(self, url_arr): print('=' * 40) print(url_arr) if self.check_app(url_arr[0], url_arr[1]): pass else: return False last_post_id = self.get_secure_cookie('last_post_uid') if last_post_id: last_post_id = last_post_id.decode('utf-8') last_app_id = self.get_secure_cookie('use_app_uid') if last_app_id: last_app_id = last_app_id.decode('utf-8') print(last_app_id) print(last_post_id) if url_arr[0] == app_url_name: if last_post_id: self.rel_post2app.add_relation(last_post_id, url_arr[1], 2) self.rel_app2post.add_relation(url_arr[1], last_post_id, 1) if url_arr[0] == 'post': if last_app_id: self.rel_app2post.add_relation(last_app_id, url_arr[1], 2) self.rel_post2app.add_relation(url_arr[1], last_app_id, 1)
class LinkHandler(BaseHandler): def initialize(self): self.init() self.muser = MUser() self.mlink = MLink() if self.get_current_user(): self.userinfo = self.muser.get_by_id(self.get_current_user()) else: self.userinfo = None def get(self, url_str=''): if url_str == '': return url_arr = url_str.split('/') if url_str == 'add': self.to_add_class() elif url_str == 'list': self.recent() elif url_str == 'refresh': self.refresh() elif url_arr[0] == 'modify': self.to_modify(url_arr[1]) elif url_arr[0] == 'delete': self.delete(url_arr[1]) else: kwd = { 'info': '页面未找到', } self.render('html/404.html', kwd=kwd) def post(self, url_str=''): if url_str == '': return url_arr = url_str.split('/') if len(url_arr) == 1 and url_str.endswith('.html'): self.add_post() if url_arr[0] == 'modify': self.update(url_arr[1]) elif url_str == 'add': self.user_add_class() else: self.redirect('html/404.html') def recent(self): kwd = { 'pager': '', 'unescape': tornado.escape.xhtml_unescape, 'title': '最近文档', } self.render( '{0}/link/link_list.html'.format(self.tmpl_name), kwd=kwd, view=self.mlink.query_recent(), format_date=tools.format_date, userinfo=self.userinfo, ) def refresh(self): kwd = { 'pager': '', 'title': '最近文档', } self.render( '{0}/link/link_list.html'.format(self.tmpl_name), kwd=kwd, userinfo=self.userinfo, view=self.mlink.query_dated(10), format_date=tools.format_date, unescape=tornado.escape.xhtml_unescape, ) def get_random(self): return self.mlink.query_random() def wiki(self, uid): dbdate = self.mlink.get_by_id(uid) if dbdate: self.viewit(uid) else: self.to_add(uid) def to_add_class(self, ): kwd = { 'pager': '', 'uid': '', } self.render( '{0}/link/link_add.html'.format(self.tmpl_name), topmenu='', kwd=kwd, userinfo=self.userinfo, ) @tornado.web.authenticated def to_add(self, uid): kwd = { 'uid': uid, 'pager': '', } self.render( '{0}/link/link_add.html'.format(self.tmpl_name), kwd=kwd, ) @tornado.web.authenticated def update(self, uid): raw_data = self.mlink.get_by_id(uid) if self.userinfo.privilege[ 2] == '1' 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.mlink.update(uid, post_data) self.redirect('/link/list'.format(uid)) @tornado.web.authenticated def to_modify(self, id_rec): a = self.mlink.get_by_id(id_rec) # 用户具有管理权限, # 或 # 文章是用户自己发布的。 if self.userinfo.privilege[ 2] == '1' or a.user_name == self.get_current_user(): pass else: return False kwd = { 'pager': '', } self.render( '{0}/link/link_edit.html'.format(self.tmpl_name), kwd=kwd, unescape=tornado.escape.xhtml_unescape, dbrec=a, userinfo=self.userinfo, ) @tornado.web.authenticated def viewit(self, post_id): rec = self.mlink.get_by_id(post_id) if not rec: kwd = { 'info': '您要找的分类不存在。', } self.render('html/404.html', kwd=kwd) return False kwd = { 'pager': '', 'editable': self.editable(), } self.render( '{0}/link/link_view.html'.format(self.tmpl_name), view=rec, unescape=tornado.escape.xhtml_unescape, kwd=kwd, userinfo=self.userinfo, ) @tornado.web.authenticated def add_post(self): if self.userinfo.privilege[1] == '1': 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() id_post = post_data['uid'][0] cur_post_rec = self.mlink.get_by_id(id_post) if cur_post_rec is None: uid = self.mlink.insert_data(id_post, post_data) self.redirect('/link/list'.format(id_post)) @tornado.web.authenticated def user_add_class(self): if self.userinfo.privilege[1] == '1': 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() cur_uid = tools.get_uudd(2) while self.mlink.get_by_id(cur_uid): cur_uid = tools.get_uudd(2) uid = self.mlink.insert_data(cur_uid, post_data) self.redirect('/link/list'.format(cur_uid)) @tornado.web.authenticated def delete(self, del_id): is_deleted = self.mlink.delete(del_id) if is_deleted: self.redirect('/link/list') else: return False
class UserHandler(BaseHandler): def initialize(self): self.muser = MUser() self.user_name = self.get_current_user() def get(self, url_str): url_arr = url_str.split('/') if url_str == 'regist': if self.get_current_user(): self.redirect('/') else: self.__to_register__() elif url_str == 'login': self.to_login() elif url_str == 'info': self.show_info() elif url_str == 'logout': self.logout() elif url_str == 'changepass': self.changepass() elif url_str == 'changeinfo': self.change_info() elif url_arr[0] == 'changeprivilege': self.change_privilege(url_arr[1]) elif url_str == 'find': self.to_find() elif url_arr[0] == 'find': self.find(url_arr[1]) def post(self, url_str): url_arr = url_str.split('/') if url_str == 'regist': self.register() elif url_str == 'login': self.login() elif url_str == 'changepass': self.changepassword() elif url_str == 'changeinfo': self.changeinfo() elif url_str == 'find': self.post_find() elif url_arr[0] == 'changeprivilege': self.changeprivilege(url_arr[1]) @tornado.web.authenticated def changepassword(self): post_data = {} for key in self.request.arguments: post_data[key] = self.get_arguments(key) uu = self.muser.check_user(self.user_name, post_data['rawpass'][0]) print(uu) if uu == 1: self.muser.update_pass(self.user_name, post_data['user_pass'][0]) self.redirect(('/user/info')) else: return False @tornado.web.authenticated def changeinfo(self): post_data = {} for key in self.request.arguments: post_data[key] = self.get_arguments(key) uu = self.muser.check_user(self.user_name, post_data['rawpass'][0]) print(uu) if uu == 1: self.muser.update_info(self.user_name, post_data['user_email'][0]) self.redirect(('/user/info')) else: return False @tornado.web.authenticated def changeprivilege(self, xg_username): post_data = {} for key in self.request.arguments: post_data[key] = self.get_arguments(key) self.muser.update_privilege(xg_username, post_data['privilege'][0]) self.redirect(('/user/info')) @tornado.web.authenticated def logout(self): self.clear_all_cookies() self.redirect('/') @tornado.web.authenticated def changepass(self): self.render('tplite/user/changepass.html', user_info=self.muser.get_by_id(self.user_name)) @tornado.web.authenticated def change_info(self): self.render('tplite/user/changeinfo.html', user_info=self.muser.get_by_id(self.user_name)) @tornado.web.authenticated def change_privilege(self, xg_username): self.render('tplite/user/changeprivilege.html', user_info=self.muser.get_by_id(xg_username)) @tornado.web.authenticated def show_info(self): self.render('tplite/user/info.html', user_info=self.muser.get_by_id(self.user_name)) def to_login(self): if self.get_current_user(): self.redirect('/') else: kwd = { 'pager': '', } self.render('tplite/user/login.html', kwd=kwd) def register(self): post_data = {} for key in self.request.arguments: post_data[key] = self.get_arguments(key) form = SumForm(self.request.arguments) if form.validate(): if self.muser.insert_data(post_data) == True: self.redirect('/user/login') else: self.render('html/404.html') self.set_status(400) def __to_register__(self): kwd = { 'pager': '', } self.render('tplite/user/regist.html', kwd=kwd) def login(self): post_data = {} for key in self.request.arguments: post_data[key] = self.get_arguments(key) if 'next' in post_data: next_url = post_data['next'][0] else: next_url = '/' u_name = post_data['user_name'][0] u_pass = post_data['user_pass'][0] kwd = { 'pager': '', } result = self.muser.check_user(u_name, u_pass) if result == 1: self.set_secure_cookie("user", u_name) self.redirect("{0}".format(next_url)) elif result == -1: kwd = {'info': '没有这个用户'} self.render('html/404.html', kwd=kwd) else: self.redirect("{0}".format(next_url)) def to_find(self, ): kwd = { 'pager': '', } self.render('tplite/user/find.html', topmenu='', kwd=kwd) def find(self, keyword): kwd = { 'pager': '', 'unescape': tornado.escape.xhtml_unescape, 'title': '查找结果', } self.render( 'tplite/user/find_list.html'.format(input), kwd=kwd, view=self.muser.get_by_keyword(keyword), ) def post_find(self): keyword = self.get_argument('keyword') self.find(keyword)
class Post2ReplyHandler(BaseHandler): def initialize(self): self.init() self.muser = MUser() self.mreply = MReply() self.mreply2user = MReply2User() self.mpost2reply = MPost2Reply() if self.get_current_user(): self.userinfo = self.muser.get_by_id(self.get_current_user()) else: self.userinfo = None def get(self, url_str=''): if url_str == '': return url_arr = url_str.split(r'/') if url_arr[0] == 'delete_reply': self.delete_by_id(url_arr[1]) elif url_arr[0] == 'zan': self.zan(url_arr[1]) def post(self, url_str=''): if url_str == '': return url_arr = url_str.split(r'/') if url_arr[0] == 'add': self.add_comment(url_arr[1]) @tornado.web.authenticated def add_comment(self, id_post): post_data = {} for key in self.request.arguments: post_data[key] = self.get_arguments(key) post_data['user_id'] = self.userinfo.uid post_data['user_name'] = self.userinfo.user_name comment_uid = self.mreply.insert_data(post_data) if comment_uid: self.mpost2reply.insert_data(id_post, comment_uid) output = { 'pinglun': comment_uid, } else: output = { 'pinglun': 0, } return json.dump(output, self) @tornado.web.authenticated def zan(self, id_reply): post_data = {} for key in self.request.arguments: post_data[key] = self.get_arguments(key) post_data['user_id'] = self.userinfo.uid cur_count = self.mreply2user.insert_data(self.userinfo.uid, id_reply) if cur_count: self.mreply.update_vote(id_reply, cur_count) output = { 'text_zan': cur_count, } else: output = { 'text_zan': 0, } return json.dump(output, self) def delete_by_id(self, del_id): if self.mreply2user.delete(del_id): output = { 'del_zan': 1 } else: output = { 'del_zan': 0, } return json.dump(output, self)
class UserHandler(BaseHandler): def initialize(self): self.init() self.muser = MUser() self.user_name = self.get_current_user() def get(self, url_str): url_arr = url_str.split('/') if url_str == 'regist': if self.get_current_user(): self.redirect('/') else: self.__to_register__() elif url_str == 'login': self.to_login() elif url_str == 'info': self.show_info() elif url_str == 'logout': self.logout() elif url_str == 'reset-password': self.to_reset_password() elif url_str == 'changepass': self.changepass() elif url_str == 'changeinfo': self.change_info() elif url_str == 'reset-passwd': if self.gen_passwd(): pass else: self.redirect(config.site_url) elif url_arr[0] == 'changeprivilege': self.change_privilege(url_arr[1]) elif url_str == 'find': self.to_find() elif url_arr[0] == 'find': self.find(url_arr[1]) elif url_arr[0] == 'delete_user': self.delete(url_arr[1]) def post(self, url_str): url_arr = url_str.split('/') if url_str == 'regist': self.register() elif url_str == 'login': self.login() elif url_str == 'changepass': self.changepassword() elif url_str == 'changeinfo': self.changeinfo() elif url_str == 'find': self.post_find() elif url_str == 'reset-password': self.reset_password() elif url_arr[0] == 'changeprivilege': self.changeprivilege(url_arr[1]) @tornado.web.authenticated def changepassword(self): post_data = {} for key in self.request.arguments: post_data[key] = self.get_arguments(key) uu = self.muser.check_user(self.user_name, post_data['rawpass'][0]) print(uu) if uu == 1: self.muser.update_pass(self.user_name, post_data['user_pass'][0]) self.redirect(('/user/info')) else: return False @tornado.web.authenticated def changeinfo(self): post_data = {} for key in self.request.arguments: post_data[key] = self.get_arguments(key) uu = self.muser.check_user(self.user_name, post_data['rawpass'][0]) if uu == 1: self.muser.update_info(self.user_name, post_data['user_email'][0]) self.redirect(('/user/info')) else: return False @tornado.web.authenticated def changeprivilege(self, xg_username): post_data = {} for key in self.request.arguments: post_data[key] = self.get_arguments(key) self.muser.update_privilege(xg_username, post_data['privilege'][0]) self.redirect(('/user/info')) @tornado.web.authenticated def logout(self): self.clear_all_cookies() self.redirect('/') @tornado.web.authenticated def changepass(self): self.render('{0}/user/changepass.html'.format(self.tmpl_name), user_info=self.muser.get_by_id(self.user_name)) @tornado.web.authenticated def change_info(self): self.render('{0}/user/changeinfo.html'.format(self.tmpl_name), user_info=self.muser.get_by_id(self.user_name)) @tornado.web.authenticated def change_privilege(self, xg_username): self.render('{0}/user/changeprivilege.html'.format(self.tmpl_name), user_info=self.muser.get_by_id(xg_username)) @tornado.web.authenticated def show_info(self): self.render('{0}/user/info.html'.format(self.tmpl_name), user_info=self.muser.get_by_id(self.user_name), userinfo=self.muser.get_by_id(self.user_name), ) def to_reset_password(self): self.render('{0}/user/reset_password.html'.format(self.tmpl_name)) def to_login(self): if self.get_current_user(): self.redirect('/') else: kwd = { 'pager': '', } self.render('{0}/user/login.html'.format(self.tmpl_name), kwd=kwd) def register(self): post_data = {} for key in self.request.arguments: post_data[key] = self.get_arguments(key) form = SumForm(self.request.arguments) if form.validate(): if self.muser.insert_data(post_data): self.redirect('/user/login') else: kwd = { 'info': '注册不成功', } self.render('html/404.html', kwd=kwd) self.set_status(400) def __to_register__(self): kwd = { 'pager': '', } self.render('{0}/user/regist.html'.format(self.tmpl_name), kwd=kwd) def login(self): post_data = {} for key in self.request.arguments: post_data[key] = self.get_arguments(key) if 'next' in post_data: next_url = post_data['next'][0] else: next_url = '/' u_name = post_data['user_name'][0] u_pass = post_data['user_pass'][0] kwd = { 'pager': '', } result = self.muser.check_user(u_name, u_pass) if result == 1: self.set_secure_cookie("user", u_name) self.redirect("{0}".format(next_url)) elif result == 0: self.set_status(401) kwd = { 'info': '密码验证出错,请<a href="/user/login">重新登陆</a>。' } self.render('html/404.html', kwd=kwd) elif result == -1: self.set_status(401) kwd = { 'info': '没有这个用户' } self.render('html/404.html', kwd=kwd) else: self.set_status(305) self.redirect("{0}".format(next_url)) def to_find(self, ): kwd = { 'pager': '', } self.render('{0}/user/find.html'.format(self.tmpl_name), topmenu='', kwd=kwd) def find(self, keyword): kwd = { 'pager': '', 'unescape': tornado.escape.xhtml_unescape, 'title': '查找结果', } self.render('{0}/user/find_list.html'.format(self.tmpl_name), kwd=kwd, view=self.muser.get_by_keyword(keyword), ) def delete(self, del_id): is_deleted = self.muser.delete(del_id) if is_deleted: self.redirect('/user/find') else: return False def post_find(self): keyword = self.get_argument('keyword') self.find(keyword) def reset_password(self): post_data = {} for key in self.request.arguments: post_data[key] = self.get_arguments(key) if 'email' in post_data: userinfo = self.muser.get_by_email(post_data['email'][0]) if tools.timestamp() - userinfo.reset_passwd_timestamp < 70: self.set_status(400) kwd = { 'info': '两次重置密码时间应该大于1分钟', } self.render('html/404.html', kwd=kwd) return False if userinfo: timestamp = tools.timestamp() passwd = userinfo.user_pass username = userinfo.user_name hash_str = tools.md5(username + str(timestamp) + passwd) url_reset = '{0}/user/reset-passwd?u={1}&t={2}&p={3}'.format(config.site_url, username, timestamp, hash_str) email_cnt = ''' <div>请查看下面的信息,并<span style="color:red">谨慎操作</span>:</div> <div>您在"{0}"网站({1})申请了密码重置,如果确定要进行密码重置,请打开下面链接:</div> <div><a href={2}>{2}</a></div> <div>如果无法确定本信息的有效性,请忽略本邮件。</div> '''.format(config.site_name, config.site_url, url_reset) if send_mail([userinfo.user_email], "{0}|密码重置".format(config.site_name), email_cnt): self.muser.update_reset_passwd_timestamp(username, timestamp) self.set_status(200) return True else: self.set_status(400) return False else: self.set_status(400) return False else: self.set_status(400) return False def gen_passwd(self): post_data = {} for key in self.request.arguments: post_data[key] = self.get_arguments(key) userinfo = self.muser.get_by_id(post_data['u'][0]) sub_timestamp = int(post_data['t'][0]) cur_timestamp = tools.timestamp() if cur_timestamp - sub_timestamp < 600 and cur_timestamp > sub_timestamp: pass else: kwd = { 'info': '密码重置已超时!', } self.set_status(400) self.render('html/404.html', kwd=kwd) hash_str = tools.md5(userinfo.user_name + post_data['t'][0] + userinfo.user_pass) if hash_str == post_data['p'][0]: pass else: kwd = { 'info': '密码重置验证出错!', } self.set_status(400) self.render('html/404.html', kwd=kwd) new_passwd = tools.get_uu8d() self.muser.update_pass(userinfo.user_name, new_passwd) kwd = { 'user_name': userinfo.user_name, 'new_pass': new_passwd, } self.render('{0}/user/show_pass.html'.format(self.tmpl_name), kwd=kwd)
class GeoJsonHandler(BaseHandler): def initialize(self): self.mjson = MJson() self.muser = MUser() if self.get_current_user(): self.userinfo = self.muser.get_by_id(self.get_current_user()) else: self.userinfo = None def get(self, url_str=''): if len(url_str) > 0: url_arr = url_str.split('/') if len(url_arr) == 1: rec = self.mjson.get_by_id(url_str) # 这里主要是检查一下保存成了个什么鬼。结果还是差强人意。 # print('=' * 50) # xx = json.dumps(rec.json, indent=1) # print(xx) # for xx in rec.json.keys(): # print(rec.json[xx]) # print('=' * 50) # print(rec.json) # print('=' * 50) if rec: return json.dump(rec.json, self) else: return False elif len(url_arr) == 2: if url_arr[0] == 'download': self.download(url_arr[1]) if url_arr[0] == 'delete': self.delete(url_arr[1]) @tornado.web.authenticated def delete(self, uid): self.mjson.delete_by_uid(uid) @tornado.web.authenticated def download(self, pa_str): uid = pa_str.split('_')[-1].split('.')[0] self.set_header('Content-Type', 'application/force-download') # self.set_header('Content-Disposition', 'attachment; filename=%s' % file_name) rec = self.mjson.get_by_id(uid) geojson = rec.json out_arr = [] for key in geojson.keys(): out_arr = out_arr + geojson[key]['features'] out_dic = {"type": "FeatureCollection", "features": out_arr} if rec: return json.dump(out_dic, self) def post(self, url_str=''): if len(url_str) > 0: url_arr = url_str.split('/') if len(url_arr) == 2: if self.get_current_user(): self.add_data(url_arr) else: self.set_status('403') return False else: self.set_status('403') return False @tornado.web.authenticated def add_data(self, url_arr): post_data = {} for key in self.request.arguments: post_data[key] = self.get_arguments(key) geojson_str = post_data['geojson'][0] xx = json.loads(geojson_str) out_dic = {} index = 0 for x in xx['features']: bcbc = x['geometry'] if 'features' in bcbc: # 判断是否是空的数据。空的数据保存到数据库,加载的时候,会出现问题。 if bcbc['features'][0]['geometry']['coordinates'] in [[], [[None]] ]: continue else: # 这里处理新加的数据。与已有的数据不一样。 if bcbc['coordinates'] in [[], [[None]]]: continue bcbc = { 'features': [{ 'geometry': bcbc, "properties": {}, "type": "Feature" }], 'type': "FeatureCollection" } out_dic[index] = bcbc index = index + 1 if len(url_arr[1]) == 4: uid = url_arr[1] return_dic = {'sig': ''} cur_info = self.mjson.get_by_id(uid) # 用户的数据,不以允许其他人保存。 if cur_info.user.uid == self.userinfo.uid: pass else: return_dic['status'] = 0 return json.dump(return_dic, self) else: uid = tools.get_uu4d() while self.mjson.get_by_id(uid): uid = tools.get_uu4d() return_dic = {'sig': uid} try: self.mjson.add_or_update(uid, self.userinfo.uid, url_arr[0], out_dic) return_dic['status'] = 1 return json.dump(return_dic, self) except: self.set_status(400) return False
class UserHandler(BaseHandler): def initialize(self): self.init() self.muser = MUser() self.user_name = self.get_current_user() self.tmpl_router = 'user' def get(self, url_str): url_arr = self.parse_url(url_str) if url_str == 'regist': if self.get_current_user(): self.redirect('/') else: self.__to_register__() elif url_str == 'login': self.to_login() elif url_str == 'info': self.show_info() elif url_str == 'logout': self.logout() elif url_str == 'reset-password': self.to_reset_password() elif url_str == 'changepass': self.changepass() elif url_str == 'changeinfo': self.change_info() elif url_str == 'reset-passwd': if self.gen_passwd(): pass else: self.redirect(config.site_url) elif url_arr[0] == 'changeprivilege': self.change_privilege(url_arr[1]) elif url_str == 'find': if self.tmpl_router == "user": self.to_find() else: self.p_to_find() elif url_arr[0] == 'find': self.find(url_arr[1]) elif url_arr[0] == 'delete_user': self.delete(url_arr[1]) def post(self, url_str): url_arr = self.parse_url(url_str) if url_str == 'regist': self.register() elif url_str == 'login': self.login() elif url_str == 'changepass': self.changepassword() elif url_arr[0] == 'changepass': self.p_changepassword() elif url_str == 'changeinfo': self.changeinfo() elif url_arr[0] == 'changeinfo': self.p_changeinfo() elif url_str == 'find': self.post_find() elif url_arr[0] == 'find': self.find(url_arr[1]) elif url_str == 'reset-password': self.reset_password() elif url_arr[0] == 'changeprivilege': self.changeprivilege(url_arr[1]) @tornado.web.authenticated def p_changepassword(self): post_data = {} for key in self.request.arguments: post_data[key] = self.get_arguments(key) uu = self.muser.check_user(self.user_name, post_data['rawpass'][0]) if uu == 1: self.muser.update_pass(self.user_name, post_data['user_pass'][0]) output = { 'changepass ': uu, } else: output = { 'changepass ': 0, } return json.dump(output, self) @tornado.web.authenticated def p_changeinfo(self): post_data = {} for key in self.request.arguments: post_data[key] = self.get_arguments(key) uu = self.muser.check_user(self.user_name, post_data['rawpass'][0]) if uu == 1: self.muser.update_info(self.user_name, post_data['user_email'][0]) output = { 'changeinfo ': uu, } else: output = { 'changeinfo ': 0, } return json.dump(output, self) @tornado.web.authenticated def changepassword(self): post_data = {} for key in self.request.arguments: post_data[key] = self.get_arguments(key) uu = self.muser.check_user(self.user_name, post_data['rawpass'][0]) if uu == 1: self.muser.update_pass(self.user_name, post_data['user_pass'][0]) self.redirect(('/{0}/info').format(self.tmpl_router)) else: return False @tornado.web.authenticated def changeinfo(self): post_data = {} for key in self.request.arguments: post_data[key] = self.get_arguments(key) uu = self.muser.check_user(self.user_name, post_data['rawpass'][0]) if uu == 1: self.muser.update_info(self.user_name, post_data['user_email'][0]) self.redirect(('/user/info')) else: return False @tornado.web.authenticated def changeprivilege(self, xg_username): post_data = {} for key in self.request.arguments: post_data[key] = self.get_arguments(key) if self.tmpl_router == "user": self.muser.update_privilege(xg_username, post_data['privilege'][0]) self.redirect(('/user/info')) else: if self.muser.update_privilege(xg_username, post_data['privilege'][0]): output = { 'del_category ': 1, } else: output = { 'del_category ': 0, } return json.dump(output, self) @tornado.web.authenticated def logout(self): self.clear_all_cookies() self.redirect('/') @tornado.web.authenticated def changepass(self): self.render('{0}/{1}/changepass.html'.format(self.tmpl_name, self.tmpl_router), user_info=self.muser.get_by_id(self.user_name)) @tornado.web.authenticated def change_info(self): self.render('{0}/{1}/changeinfo.html'.format(self.tmpl_name, self.tmpl_router), user_info=self.muser.get_by_id(self.user_name)) @tornado.web.authenticated def change_privilege(self, xg_username): self.render('{0}/{1}/changeprivilege.html'.format(self.tmpl_name, self.tmpl_router), user_info=self.muser.get_by_id(xg_username)) @tornado.web.authenticated def show_info(self): self.render('{0}/{1}/info.html'.format(self.tmpl_name, self.tmpl_router), user_info=self.muser.get_by_id(self.user_name), userinfo=self.muser.get_by_id(self.user_name), ) def to_reset_password(self): self.render('{0}/{1}/reset_password.html'.format(self.tmpl_name, self.tmpl_router)) def to_login(self): if self.get_current_user(): self.redirect('/') else: kwd = { 'pager': '', } self.render('{0}/{1}/login.html'.format(self.tmpl_name, self.tmpl_router), kwd=kwd) def register(self): post_data = {} for key in self.request.arguments: post_data[key] = self.get_arguments(key) form = SumForm(self.request.arguments) if form.validate(): if self.muser.insert_data(post_data): self.redirect('/user/login') else: kwd = { 'info': '注册不成功', } self.set_status(400) self.render('html/404.html', cfg = config.cfg, kwd=kwd) else: kwd = { 'info': '注册不成功', } self.set_status(400) self.render('html/404.html', cfg = config.cfg, kwd=kwd) def __to_register__(self): kwd = { 'pager': '', } self.render('{0}/{1}/regist.html'.format(self.tmpl_name, self.tmpl_router), cfg = config.cfg, kwd=kwd) def login(self): post_data = {} for key in self.request.arguments: post_data[key] = self.get_arguments(key) if 'next' in post_data: next_url = post_data['next'][0] else: next_url = '/' u_name = post_data['user_name'][0] u_pass = post_data['user_pass'][0] kwd = { 'pager': '', } result = self.muser.check_user(u_name, u_pass) if result == 1: self.set_secure_cookie("user", u_name) self.redirect("{0}".format(next_url)) elif result == 0: self.set_status(401) kwd = { 'info': '密码验证出错,请<a href="/user/login">重新登陆</a>。' } self.render('html/404.html', cfg = config.cfg, kwd=kwd) elif result == -1: self.set_status(401) kwd = { 'info': '没有这个用户' } self.render('html/404.html', cfg = config.cfg, kwd=kwd) else: self.set_status(305) self.redirect("{0}".format(next_url)) def to_find(self, ): kwd = { 'pager': '', } self.render('{0}/{1}/find.html'.format(self.tmpl_name, self.tmpl_router), cfg = config.cfg, kwd=kwd) def p_to_find(self, ): kwd = { 'pager': '', } self.render('{0}/{1}/find_list.html'.format(self.tmpl_name, self.tmpl_router), kwd=kwd, view=self.muser.get_by_keyword(""), cfg = config.cfg, ) def find(self, keyword): kwd = { 'pager': '', 'unescape': tornado.escape.xhtml_unescape, 'title': '查找结果', } if self.tmpl_router == "user": self.render('{0}/{1}/find_list.html'.format(self.tmpl_name, self.tmpl_router), kwd=kwd, view=self.muser.get_by_keyword(keyword), cfg = config.cfg, ) else: result=self.muser.get_by_keyword(keyword) if result: output = { 'find': result } else: output = { 'find': 0, } return json.dump(output, self) def delete(self, del_id): if self.tmpl_router == "user": is_deleted = self.muser.delete(del_id) if is_deleted: self.redirect('/user/find') else: return False else: if self.muser.delete(del_id): output = { 'del_category': 1 } else: output = { 'del_category': 0, } return json.dump(output, self) def post_find(self): keyword = self.get_argument('keyword') self.find(keyword) def reset_password(self): post_data = {} for key in self.request.arguments: post_data[key] = self.get_arguments(key) if 'email' in post_data: userinfo = self.muser.get_by_email(post_data['email'][0]) if tools.timestamp() - userinfo.reset_passwd_timestamp < 70: self.set_status(400) kwd = { 'info': '两次重置密码时间应该大于1分钟', } self.render('html/404.html', kwd=kwd) return False if userinfo: timestamp = tools.timestamp() passwd = userinfo.user_pass username = userinfo.user_name hash_str = tools.md5(username + str(timestamp) + passwd) url_reset = '{0}/user/reset-passwd?u={1}&t={2}&p={3}'.format(config.site_url, username, timestamp, hash_str) email_cnt = ''' <div>请查看下面的信息,并<span style="color:red">谨慎操作</span>:</div> <div>您在"{0}"网站({1})申请了密码重置,如果确定要进行密码重置,请打开下面链接:</div> <div><a href={2}>{2}</a></div> <div>如果无法确定本信息的有效性,请忽略本邮件。</div> '''.format(config.site_name, config.site_url, url_reset) if send_mail([userinfo.user_email], "{0}|密码重置".format(config.site_name), email_cnt): self.muser.update_reset_passwd_timestamp(username, timestamp) self.set_status(200) return True else: self.set_status(400) return False else: self.set_status(400) return False else: self.set_status(400) return False def gen_passwd(self): post_data = {} for key in self.request.arguments: post_data[key] = self.get_arguments(key) userinfo = self.muser.get_by_id(post_data['u'][0]) sub_timestamp = int(post_data['t'][0]) cur_timestamp = tools.timestamp() if cur_timestamp - sub_timestamp < 600 and cur_timestamp > sub_timestamp: pass else: kwd = { 'info': '密码重置已超时!', } self.set_status(400) self.render('html/404.html', kwd=kwd) hash_str = tools.md5(userinfo.user_name + post_data['t'][0] + userinfo.user_pass) if hash_str == post_data['p'][0]: pass else: kwd = { 'info': '密码重置验证出错!', } self.set_status(400) self.render('html/404.html', kwd=kwd) new_passwd = tools.get_uu8d() self.muser.update_pass(userinfo.user_name, new_passwd) kwd = { 'user_name': userinfo.user_name, 'new_pass': new_passwd, } self.render('{0}/{1}/show_pass.html'.format(self.tmpl_name, self.tmpl_router), cfg = config.cfg, kwd=kwd)
class MapOverlayHandler(BaseHandler): def initialize(self): self.mapplication = MApp() self.muser = MUser() if self.get_current_user(): self.userinfo = self.muser.get_by_id(self.get_current_user()) else: self.userinfo = None def get(self, url_str=''): if len(url_str) > 0: url_arr = url_str.split('/') else: url_arr = [] if len(url_arr) > 1: self.show_overlay(url_arr) else: kwd = { 'title': '', 'info': '', } self.render('html/404.html', kwd=kwd) def show_overlay(self, app_arr): ''' 打开App. ''' app_info_arr = [] lon_arr = [] lat_arr = [] zoom_max_arr = [] zoom_min_arr = [] zoom_current_zrr = [] # self.set_secure_cookie('over_kay', app_arr) for app_rr in app_arr: c_ap = self.mapplication.get_by_uid(app_rr) app_info_arr.append(c_ap) lon_arr.append(c_ap.lon) lat_arr.append(c_ap.lat) zoom_max_arr.append(c_ap.zoom_max) zoom_min_arr.append(c_ap.zoom_min) zoom_current_zrr.append(c_ap.zoom_current) kwd = {'url': 1, "cookie_str": '', 'lon': average(lon_arr), 'lat': average(lat_arr), 'zoom_max': max(zoom_max_arr), 'zoom_min': min(zoom_min_arr), 'zoom_current': int(average(zoom_current_zrr)), } if 'fullscreen' in self.request.arguments: tmpl = 'app_theme/overlay/overlay_full.html' else: tmpl = 'app_theme/overlay/overlay.html' self.render(tmpl, topmenu='', kwd=kwd, userinfo=self.userinfo, unescape=tornado.escape.xhtml_unescape, app_arr=app_info_arr, app_str='/'.join(app_arr), wcs_svr=config.wcs_svr, )
class ListHandler(BaseHandler): def initialize(self): self.mequa = MApp() self.musage = MUsage() self.muser = MUser() if self.get_current_user(): self.userinfo = self.muser.get_by_id(self.get_current_user()) else: self.userinfo = None def get(self, input=''): if len(input) > 0: ip_arr = input.split(r'/') if input == 'recent': self.to_find(input) if input == 'app': self.list_app() elif input == 'user_recent': self.user_recent() elif input == 'user_most': self.user_most() def list_app(self): kwd = { 'pager': '', 'title': '最近使用的运算应用' , } self.render('app_theme/calc/list_app.html', kwd=kwd, userinfo = self.userinfo,) @tornado.web.authenticated def user_most(self): kwd = { 'pager': '', 'title': '我使用最多的云算应用', } self.render('app_theme/calc/user_most.html'.format(input), kwd=kwd, user_name = self.get_current_user(), userinfo = self.userinfo, ) @tornado.web.authenticated def user_recent(self): kwd = { 'pager': '', 'title': '我最近使用的云算应用' } self.render('app_theme/calc/user_recent.html'.format(input), kwd=kwd, user_name = self.get_current_user(), userinfo = self.userinfo, ) def post(self, input=''): if len(input) > 0: ip_arr = input.split(r'/') if input == 'find': self.find() def to_find(self, input): kwd = { 'pager': '', } self.render('app_theme/calc/most.html'.format(input), topmenu='', kwd=kwd) def list_recent(self): recs = self.mequa.query_recent(20) kwd = { 'pager': '', 'title': '最近使用的云算应用' , } self.render('app_theme/calc/list.html'.format(input), kwd=kwd,rand_eqs = self.get_random(),recs= recs) def find(self): keyword = self.get_argument('keyword').strip() kwd = { 'pager': '', 'title':'查找结果', } self.render('app_theme/calc/find_list.html'.format(input), kwd=kwd, recs=self.mequa.get_by_keyword(keyword)) def get_random(self): return self.mequa.query_random()
class ReplyHandler(BaseHandler): def initialize(self): self.muser = MUser() self.mreply = MReply() self.mreply2user = MReply2User() if self.get_current_user(): self.userinfo = self.muser.get_by_id(self.get_current_user()) else: self.userinfo = None def get(self, url_str=''): if url_str == '': return url_arr = url_str.split(r'/') if url_arr[0] == 'delete_reply': self.delete_by_id(url_arr[1]) elif url_arr[0] == 'get': self.get_by_id(url_arr[1]) elif url_arr[0] == 'zan': self.zan(url_arr[1]) def get_by_id(self, reply_id): reply = self.mreply.get_reply_by_uid(reply_id) self.render( 'tplite/reply/show_reply.html', cnt=reply.cnt_md, username=reply.user_name, date=reply.date, vote=reply.vote, uid=reply.uid, userinfo=self.userinfo, ) # @tornado.web.authenticated # def add_one(self, id_reply): # # post_data = {} # # for key in self.request.arguments: # # post_data[key] = self.get_arguments(key) # # post_data['user_id'] = self.userinfo.uid # # cur_count = self.mreply2user.insert_data(self.userinfo.uid, id_reply) # if cur_count: # self.mreply.update_vote(id_reply, cur_count) # # out_dic = {'zan_count': cur_count} # return json.dump(out_dic) @tornado.web.authenticated def zan(self, id_reply): post_data = {} for key in self.request.arguments: post_data[key] = self.get_arguments(key) post_data['user_id'] = self.userinfo.uid # zs = CabUser2Reply.select().where(CabUser2Reply.reply_id == id_reply).count() cur_count = self.mreply2user.insert_data(self.userinfo.uid, id_reply) if cur_count: self.mreply.update_vote(id_reply, cur_count) output = { 'text_zan': cur_count, } else: output = { 'text_zan': 0, } return json.dump(output, self) def delete_by_id(self, del_id): is_deleted = self.mreply2user.delete(del_id) # self.redirect('/post/{0}.html'.format(del_id)) if is_deleted: output = {'del_zan': 1} else: output = { 'del_zan': 0, } return json.dump(output, self)