def get_render_template(path): ''' 根据路由path,返回一个render_template :param path: :return: ''' # 拼接当前主题目录 path = "{}/pages/{}".format(get_config("theme", "CURRENT_THEME_NAME"), path) absolute_path = os.path.abspath("{}/{}.html".format( theme_view.template_folder, path)) if not os.path.isfile(absolute_path): path = "{}/index".format(path) absolute_path = os.path.abspath("{}/{}.html".format( theme_view.template_folder, path)) if not os.path.isfile(absolute_path): abort(404) data = dict(request.args) for k, v in data.items(): data[k] = v[0] g.site_global = dict(g.site_global, **get_global_site_data(req_type="view")) return render_template('{}.html'.format(path), data=data)
def api_current_global(): """ GET: 获取当前全局数据,包括站点的公开设置, 当前登录用户的基本可公开信息 :return: """ data = get_global_site_data(req_type="api") return response_format(data)
def banel_translate_js_files(prefix, route_relative_path, absolute_path): """ Jinja2翻译js :param prefix: :param route_relative_path: :param absolute_path: :return: """ if route_relative_path.endswith(".js"): # js 翻译 ori_file_time = os.path.getmtime(absolute_path) name = os.path.split(route_relative_path)[-1] # 主题页面js或者以osr_开头的js文件给予翻译 if "osr_page_js" in route_relative_path or name.startswith("osr-"): # 使用翻译好的js temp_name = "{}{}_{}".format( prefix, os.path.splitext(route_relative_path)[0].replace("/", "_"), g.site_global["language"]["current"]) absolute_path = "{}/{}.js".format(TEMP_STATIC_FOLDER, temp_name) if not os.path.isfile(absolute_path): # 不存在翻译文件 g.site_global = dict(g.site_global, **get_global_site_data(req_type="view")) data = dict(request.args.items()) tr_content = render_template(route_relative_path, data=data) with open(absolute_path, "w") as wf: # flask中没找替换翻译js的Jinjia模块. 使用render_template来翻译js文件, wf.write(tr_content) else: tr_file_time = os.path.getmtime(absolute_path) if tr_file_time < ori_file_time: # 翻译文件的最后修改时间小于原文件 g.site_global = dict( g.site_global, **get_global_site_data(req_type="view")) data = dict(request.args.items()) tr_content = render_template(route_relative_path, data=data) with open(absolute_path, "w") as wf: # flask中没找替换翻译js的Jinjia模块. 使用render_template来翻译js文件, wf.write(tr_content) return absolute_path return absolute_path
def internal_server_error(e): """ 处理服务器错误 :param e: :return: """ try: code = e.code except BaseException: code = 500 msg_type = "w" msg = gettext("An error occurred. Please contact the administrator") if code == 401: msg = gettext("Permission denied") elif code == 404: msg = gettext("The api does not exist or has been deprecated") elif code == 500: msg = gettext("Server error") msg_type = "e" elif isinstance(code, int) and code // 500 == 1: msg = gettext( "Server error, please check whether the third-party plug-in is normal" ) msg_type = "e" data = { "http_status": code, "custom_status": None, "request_id": g.weblog_id, "msg": msg, "msg_type": msg_type } if request.path.startswith(api.url_prefix): return response_format(data) else: g.site_global = dict(g.site_global, **get_global_site_data(req_type="view")) path = "{}/pages/{}.html".format( # get_config("theme", "CURRENT_THEME_NAME"), g.get_config("theme", "CURRENT_THEME_NAME"), code) absolute_path = os.path.abspath("{}/{}".format( theme_view.template_folder, path)) if not os.path.isfile(absolute_path): # 主题不存在<e.code>错误页面(如404页面),使用系统自带的页面 path = "{}/module/exception/{}.html".format( admin_view.template_folder, code) return render_absolute_path_template(path, data=data), 404 return render_template(path, data=data), code
def static_html(path): if get_config("seo", "SPIDER_RECOGNITION_ENABLE"): g.site_global = dict(g.site_global, **get_global_site_data(req_type="view")) r = re.match(r"{}/post/(.+)".format(static_html_view.url_prefix.strip("/")), path) if r: return post_page(r.groups()[-1]) r = re.match(r"{}/posts/([0-9]+)$".format(static_html_view.url_prefix.strip("/")), path) if r: return posts_page(int(r.groups()[-1])) else: abort(404)
def get_render_template(path): """ render_template :param path: :return: """ absolute_path = os.path.abspath("{}/{}.html".format( admin_view.template_folder, path)) if not os.path.isfile(absolute_path): path = "{}/index".format(path) absolute_path = os.path.abspath("{}/{}.html".format( admin_view.template_folder, path)) if not os.path.isfile(absolute_path): abort(404) data = dict(request.args.items()) g.site_global = dict(g.site_global, **get_global_site_data(req_type="view")) return render_template('{}.html'.format(path), data=data)
def get_render_template_email(path, params): """ 根据路由path,返回一个render_template :param path: :return: """ # 拼接当前主题目录 path = "{}/pages/{}".format(get_config("theme", "CURRENT_THEME_NAME"), path) absolute_path = os.path.abspath("{}/{}.html".format( theme_view.template_folder, path)) if not os.path.isfile(absolute_path): path = "{}/index".format(path) absolute_path = os.path.abspath("{}/{}.html".format( theme_view.template_folder, path)) if not os.path.isfile(absolute_path): abort(404) g.site_global = dict(g.site_global, **get_global_site_data(req_type="view")) return render_template('{}.html'.format(path), data=params)
def get_render_template_view(path, theme_name): """ 根据路由path,返回一个render_template :param path: :return: """ # 拼接当前主题目录 path = "{}/pages/{}".format(theme_name, path) absolute_path = os.path.abspath("{}/{}.html".format( theme_view.template_folder, path)) if not os.path.isfile(absolute_path): path = "{}/index".format(path) absolute_path = os.path.abspath("{}/{}.html".format( theme_view.template_folder, path)) if not os.path.isfile(absolute_path): abort(404) data = dict(request.args.items()) g.site_global = dict(g.site_global, **get_global_site_data(req_type="view")) return render_template('{}.html'.format(path), data=data)
def link_unaudited(): """ GET: 非白名单链接确认页面 :param path: :return: """ path = "link-unaudited" # 查找当前主题是否有此页面 theme_path = "{}/pages/{}".format( get_config("theme", "CURRENT_THEME_NAME"), path) absolute_path = os.path.abspath("{}/{}.html".format( theme_view.template_folder, theme_path)) if not os.path.isfile(absolute_path): # 使用系统自带页面 absolute_path = os.path.abspath("{}/{}.html".format( admin_view.template_folder, path)) if not os.path.isfile(absolute_path): abort(404) data = dict(request.args.items()) g.site_global = dict(g.site_global, **get_global_site_data(req_type="view")) return render_template('{}.html'.format(path), data=data)
def internal_server_error(e): ''' 处理服务器错误 :param e: :return: ''' try: code = e.code except: code = 500 msg_type = "w" if code == 401: msg = gettext("Permission denied") elif code == 404: msg = gettext("The api does not exist or has been deprecated") elif code == 500: msg = gettext("Server error") msg_type = "e" data = {"http_status": code, "request_id": g.weblog_id, "msg": msg, "msg_type": msg_type} if request.path.startswith(api.url_prefix): return response_format(data) else: g.site_global = dict(g.site_global, **get_global_site_data(req_type="view")) path = "{}/pages/{}.html".format(get_config("theme", "CURRENT_THEME_NAME"), e.code) absolute_path = os.path.abspath("{}/{}".format(theme_view.template_folder, path)) if not os.path.isfile(absolute_path): # 主题不存在<e.code>错误页面(如404页面),使用系统自带的页面 path = "{}/module/exception/{}.html".format(admin_view.template_folder, e.code) return render_absolute_path_template(path, data=data), 404 return render_template(path, data=data), e.code
def get_render_template(path): """ 根据路由path,返回一个render_template :param path: :return: """ # 拼接当前主题目录 path = "{}/pages/{}".format(get_config("theme", "CURRENT_THEME_NAME"), path) absolute_path = os.path.abspath("{}/{}.html".format( theme_view.template_folder, path)) if not os.path.isfile(absolute_path): path = "{}/index".format(path) absolute_path = os.path.abspath("{}/{}.html".format( theme_view.template_folder, path)) if not os.path.isfile(absolute_path): abort(404) data = dict(request.args.items()) g.site_global = dict(g.site_global, **get_global_site_data(req_type="view")) print(g.site_global['theme_config']['FREE']['post_cover']['url']) print('{}.html'.format(path)) return render_template('{}.html'.format(path), data=data)