Example #1
0
def article(request, pid):
    """
    详情页,主要向移动端、搜索引擎提供,这个页面需要做风控
    """
    # 外链统计
    add_referer_stats(request.META.get('HTTP_REFERER', ''))

    try:
        article = Article.objects.get(uindex=pid, status='active')
    except:
        return HttpResponseRedirect('https://dinorss.org/')

    user = get_login_user(request)
    if user:
        set_user_read_article(user.oauth_id, pid)

    # 判断是否命中敏感词
    # if is_sensitive_content(pid, article.site_id):
    #     user_agent = parse(request.META.get('HTTP_USER_AGENT', ''))
    #
    #     if user_agent.is_mobile or user_agent.is_bot:
    #         logger.warning(f'文章命中了敏感词,转到原文:`{article.title}`{pid}')
    #         return redirect(article.src_url)
    #     else:
    #         logger.warning(f'文章命中了敏感词,禁止访问:`{article.title}`{pid}')
    #         return redirect('index')

    context = dict()
    context['article'] = article
    context['user'] = user

    return render(request, 'mobile/article.html', context=context)
Example #2
0
def get_article_detail(request):
    """
    获取文章详情;已登录用户记录已读 TODO 服务器记录阅读数
    """
    uindex = request.POST.get('id')
    user = get_login_user(request)
    mobile = request.POST.get('mobile', False)

    try:
        article = Article.objects.get(uindex=uindex, status='active')
    except:
        logger.info(f"获取文章详情请求处理异常:`{uindex}")
        return HttpResponseNotFound("Param Error")

    if user:
        set_user_read_article(user.oauth_id, uindex)

    context = dict()
    context['article'] = article
    context['user'] = user

    if mobile:
        return render(request, 'mobile/article.html', context=context)
    else:
        return render(request, 'article/index.html', context=context)
Example #3
0
def user_mark_read_all(request):
    """
    设置全部已读
    """
    ids = request.POST.get('ids', '').split(',')
    user = get_login_user(request)

    if user:
        for uindex in ids:
            set_user_read_article(user.oauth_id, uindex)
        return JsonResponse({})

    return HttpResponseNotFound("Param error")