Beispiel #1
0
def render_bucket(bucket, web_path=""):
    set_bucket_in_request_context(bucket)
    try: # memcache 的获取,也可能会出错, 概率很低
        cached_response = get_response_from_memcache()
        if cached_response:
            return cached_response
    except:
        pass
    if not web_path:
        web_path = get_request_path()

    # admin bucket 的默认主页对应
    if not web_path or web_path == "/":
        if bucket == get_admin_bucket() and not has_template_by_name("index"):
            return render_api_template_as_response("page_admin_default_homepage.jade")

    static_file_response = render_as_static_resource_in_pages_for_farbox_bucket(web_path)
    if not static_file_response and web_path.lstrip('/').startswith('template/'):
        # 对一些 template 目录下的兼容
        web_path_without_prefix = web_path.lstrip('/').replace('template/', '', 1)
        static_file_response = render_as_static_resource_in_pages_for_farbox_bucket(web_path_without_prefix)
    if static_file_response:
        return static_file_response
    else:
        file_response = render_as_static_file_for_farbox_bucket(web_path)
        if file_response:
            return file_response
        if web_path and '.' in web_path:
            static_response_from_system = send_static_frontend_resource(try_direct_path=True)
            if static_response_from_system:
                return static_response_from_system

        #if DEBUG: return render_template_for_farbox_bucket()

        return render_template_for_farbox_bucket_by_gevent()
Beispiel #2
0
def show_wiki_tag_fallback(tag):
    bucket = get_bucket_from_request()
    if not bucket:
        abort(404)
    set_bucket_in_request_context(bucket)
    wiki_root = get_wiki_root(bucket)
    if wiki_root:
        new_url = "/wiki/tag/%s?type=wiki_link" % tag
    else:
        new_url = "/tag/%s?type=wiki_link" % tag
    return redirect(new_url)
Beispiel #3
0
def show_bucket_records_for_web_request(bucket=None,
                                        default_records_per_page=100,
                                        includes_zero_ids=True,
                                        cursor=None,
                                        per_page=None):
    # return response or abort error
    bucket = bucket or get_logined_bucket_by_token()  # by api token
    if not bucket:
        abort(404, "no bucket matched")
    set_bucket_in_request_context(bucket)
    pre_record_id = cursor or request.values.get('cursor')
    if not includes_zero_ids and not pre_record_id:  # 不包括 zero ids 相当于
        pre_record_id = zero_id_for_finder
    per_page = per_page or to_per_page(default_records_per_page,
                                       request.values.get('per_page'),
                                       max_per_page=1000)
    records = get_records_for_bucket(bucket,
                                     start_record_id=pre_record_id,
                                     limit=per_page)
    return jsonify(records)
Beispiel #4
0
def render_markdown_page(path=""):
    # cache it
    bucket = get_bucket_from_request()
    set_bucket_in_request_context(bucket)
    try:  # memcache 的获取,也可能会出错, 概率很低
        cached_response = get_response_from_memcache()
        if cached_response:
            return cached_response
    except:
        pass

    if path in ["about", "links", "contact"]:
        md_doc = get_markdown_record_by_path_prefix(bucket, path)
        show_site_nav = True
    else:
        md_doc = None
        show_site_nav = False

    return render_api_template_as_response("page_user_markdown_page.jade",
                                           md_doc=md_doc,
                                           show_site_nav=show_site_nav)
Beispiel #5
0
def show_bucket_records_for_web_request(bucket=None, default_records_per_page=100, includes_zero_ids=True,
                                        cursor=None, per_page=None):
    # return response or abort error
    # 注意: 如果传入一个有效的 bucket,那么是不会进行校验的
    bucket = bucket or get_logined_bucket_by_token()  # by api token

    if not bucket:
        # 服务器端同步相关的逻辑在这里判断
        server_sync_token = request.values.get("server_sync_token", "")
        if server_sync_token and server_sync_token == get_env("server_sync_token"):
            bucket = get_pending_bucket_bucket_in_request()

    if not bucket:
        abort(404, "no bucket matched")
    set_bucket_in_request_context(bucket)
    pre_record_id = cursor or request.values.get('cursor')
    if not includes_zero_ids and not pre_record_id: # 不包括 zero ids 相当于
        pre_record_id = zero_id_for_finder
    per_page = per_page or to_per_page(default_records_per_page, request.values.get('per_page'), max_per_page=1000)
    records = get_records_for_bucket(bucket, start_record_id=pre_record_id, limit=per_page)
    return jsonify(records)
Beispiel #6
0
def show_web_editor_posts():
    set_bucket_in_request_context(get_bucket_for_file_manager())
    return render_api_template_as_response("page_web_editor_posts.jade")
Beispiel #7
0
def show_file_manager_related_page(subname, path=''):
    set_bucket_in_request_context(get_bucket_for_file_manager())
    template_name = 'page_file_%s.jade' % subname
    return render_api_template_as_response(template_name)
Beispiel #8
0
def site_json_settings_view():
    bucket = get_logined_bucket(check=True)
    if not bucket:
        return abort(410)
    set_bucket_in_request_context(bucket)
    return render_api_template_as_response("page_user_json_settings_ui.jade")