Example #1
0
def home_page(type):
    '''
    :param type: 83:首页  87:热门内容
    :return:
    '''
    args = request.args
    page = http_util.get_param_int(args, 'page', BaseConfig.DEFAULT_PAGE)
    per_page = http_util.get_param_int(args, 'per_page',
                                       BaseConfig.DEFAULT_PER_PAGE)
    login_user_id = g.user_id
    res = None
    if type == BaseConfig.TYPE_HOME_PAGE:
        # 首页列表
        paginate = Resource.get_home_page_paginate(
            type=BaseConfig.TYPE_HOME_PAGE_LIST,
            page=page,
            per_page=per_page
        )
        res = http_util.make_page_response(paginate.items, paginate.total, page,
                                           per_page)
        # 轮播图
        paginate = Resource.get_home_page_paginate(
            type=BaseConfig.TYPE_HOME_PAGE_CAROUSEL,
            page=page,
            per_page=per_page
        )
        carousels = paginate.items
        res['carousels'] = carousels
        # 静态地址
        res['url'] = ""
        hp_url = HomePage.query_home_page(
            type=BaseConfig.TYPE_HOME_PAGE_URL
        )
        if hp_url:
            res['url'] = hp_url.url
        # 弹窗
        res['show_resource'] = Resource.get_show_resource(login_user_id)
        # 推荐
        paginate = Resource.get_home_page_paginate(
            type=BaseConfig.TYPE_HOME_PAGE_RECOMMEND,
            page=page,
            per_page=per_page
        )
        res['recommends'] = paginate.items

    elif type == BaseConfig.TYPE_HOME_PAGE_HOT:
        res = get_hot_res()
        if page >1:
            res['items'] = []

    return http_util.return_model(
        data=res
    )
Example #2
0
def timeline():
    login_user_id = get_login_user_id(request)
    args = request.args
    start = http_util.get_param_int(args, 'start', BaseConfig.MAX_START)
    per_page = http_util.get_param_int(args, 'per_page',
                                       BaseConfig.DEFAULT_PER_PAGE)
    user_id = args.get('user_id', None)
    detail_id = None
    if user_id:
        detail_id = user_id
    else:
        detail_id = login_user_id

    if not detail_id:
        return http_util.return_404('not found user')

    res = Action.query_actions(
        user_id=detail_id,
        type=BaseConfig.TYPE_ACTION_UPLOAD,
    )

    items = []
    for item in res:
        res_type = item.res_type
        res_id = item.res_id

        item = Resource.get_resource_detail(
            res_id=res_id,
            res_type=res_type,
            login_user_id=login_user_id
        )
        if item:
            items.append(item)

    return http_util.return_model(items)
Example #3
0
def resource_delete():
    """资源详情"""
    args = request.json
    key = http_util.check_params(args, 'res_id', 'res_type')
    if key:
        return http_util.return_param_not_found(key)

    login_user_id = http_util.get_login_user_id(request)

    if not login_user_id:
        return http_util.return_no_authorization()

    res_id = http_util.get_param(args, 'res_id')
    res_type = http_util.get_param_int(args, 'res_type')

    try:
        is_del = Resource.delete_resource(res_id, res_type)

        if not is_del:
            return http_util.return_internal_server_error("删除失败")

        # 记录用户行为
        Action.create_action(
            user_id=login_user_id,
            type=BaseConfig.TYPE_ACTION_DELETE,
            res_id=res_id,
            res_type=res_type
        )

        return http_util.return_model()
    except BaseException as e:
        app.logger.error(e)
        return http_util.return_internal_server_error()
Example #4
0
def list():
    '''首页列表'''
    args = request.args
    type = http_util.get_param_int(args, 'type',
                                   BaseConfig.TYPE_HOME_PAGE_LIST)
    page = http_util.get_param_int(args, 'page', BaseConfig.DEFAULT_PAGE)
    per_page = http_util.get_param_int(args, 'per_page',
                                       BaseConfig.DEFAULT_PER_PAGE)

    paginate = HomePage.query_home_page_paginate(type=type,
                                                 page=page,
                                                 per_page=per_page)

    details = []
    for item in paginate.items:
        detail = item.to_json()
        res_type = detail['res_type']
        res_id = detail['res_id']
        res_detail = Resource.get_resource_detail(res_id=res_id,
                                                  res_type=res_type)
        detail['res_detail'] = res_detail
        details.append(detail)

    res = http_util.make_page_response(details, paginate.total, page, per_page)

    return return_model(data=res)
Example #5
0
def resource_list():
    '''首页列表'''
    args = request.args
    res_type = http_util.get_param_int(args, 'res_type', 7)

    res = Resource.get_resource_list(res_type)

    return return_model(data=res)
Example #6
0
def resource_delete_json():
    '''首页列表'''
    args = request.form

    res_id = http_util.get_param(args, 'res_id', None)
    res_type = http_util.get_param_int(args, 'res_type', 0)

    if not res_id or not res_type:
        return http_util.return_forbidden('res_id or res_type is error')

    check_use = Resource.check_resource_use_status(res_id, res_type)
    if check_use:
        return http_util.return_forbidden("{},不能删除".format(check_use))

    res = Resource.delete_resource(res_id, res_type)

    if res:
        return return_model()
    else:
        return http_util.return_internal_server_error()
Example #7
0
def get_hot_res():
    recommends = HomePage.query_home_pages(
        type=BaseConfig.TYPE_HOME_PAGE_HOT,
        is_online=1
    )
    hot_res = ViewHotRes.query_items()
    print(len(recommends), len(hot_res))

    hot_res = hot_res[0:10]

    items = recommends + hot_res

    items = Resource.format_items(items)

    recommends = items[0:4]

    res = http_util.make_page_response(items[4:], len(items[4:]), 1,
                                       len(items[4:]))

    res['recommends'] = recommends

    return res
Example #8
0
def resource_detail():
    """资源详情"""
    args = request.args
    key = http_util.check_params(args, 'res_id', 'res_type')
    if key:
        return http_util.return_param_not_found(key)

    login_user_id = http_util.get_login_user_id(request)

    res_id = http_util.get_param(args, 'res_id')
    res_type = http_util.get_param_int(args, 'res_type')

    try:
        detail = Resource.get_resource_detail(
            res_id=res_id,
            res_type=res_type,
            source_include=['comments', 'related_items', 'view_count',
                            'like_count', 'items',
                            'comment_count'],
            login_user_id=login_user_id
        )

        if not detail:
            return http_util.return_404('res_id not found')

        # 记录用户行为
        Action.create_action(
            user_id=login_user_id,
            type=BaseConfig.TYPE_ACTION_VIEW,
            res_id=res_id,
            res_type=res_type
        )

        return http_util.return_model(
            data=detail
        )
    except BaseException as e:
        app.logger.error(e)
        return http_util.return_internal_server_error()
Example #9
0
def search():
    '''搜索'''
    args = request.args
    user_id = g.user_id
    q = args.get('q')
    page = http_util.get_param_int(args, 'page', BaseConfig.DEFAULT_PAGE)
    per_page = http_util.get_param_int(args, 'per_page',
                                       BaseConfig.DEFAULT_PER_PAGE)
    q = 'name:{}'.format(q)

    doc_type = "{},{},{},{},{}".format(BaseConfig.ES_TYPE_USER,
                                       BaseConfig.ES_TYPE_ARTICLE,
                                       BaseConfig.ES_TYPE_COLLECTION,
                                       BaseConfig.ES_TYPE_VIDEO,
                                       BaseConfig.ES_TYPE_AUDIO)

    res, total = es.search(index=BaseConfig.ES_INDEX,
                           doc_type=doc_type,
                           q=q,
                           sort='{}:desc'.format(BaseConfig.ES_PARAMS_WEIGHT),
                           _source_include=[
                               'res_id', 'res_type', 'name', 'portrait',
                               'poster', 'posters', 'age'
                           ])

    for item in res:
        res_type = item['res_type']
        res_id = item['res_id']
        if res_type == BaseConfig.TYPE_USER:
            item['attention_status'] = get_user_attention_status(
                user_id, res_id)

    res = http_util.make_page_response(res, total, page, per_page)

    if not res['items']:
        res['recommends'] = Resource.get_hot_items()

    return http_util.return_model(res)