示例#1
0
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)
示例#2
0
def api_current_global():
    """
    GET:
        获取当前全局数据,包括站点的公开设置, 当前登录用户的基本可公开信息
        :return:
    """
    data = get_global_site_data(req_type="api")
    return response_format(data)
示例#3
0
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
示例#4
0
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
示例#5
0
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)
示例#6
0
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)
示例#7
0
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)
示例#8
0
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)
示例#9
0
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)
示例#10
0
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
示例#11
0
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)