Exemple #1
0
def headlines(tag, limit=200):
    def date_parser(obj):
        import datetime
        if isinstance(obj, datetime.datetime):
            return obj.isoformat()
        return obj

    conn.indices.refresh('newsworld')
    articles = ArticleModel.objects.filter(
        tag=tag,
        main=True,
        date__gte=datetime.now()-timedelta(hours=24)
    ).order_by('-date')[:limit]

    try:
        for his in articles:
            his['similar'] = [
                similar.prepare_es_dto(a) for a in his['similar']
            ]
            his['similar'] = sorted(
                his['similar'], key=lambda s: s['date'], reverse=True)
    except:
        utils.print_exception()

    r = redis.StrictRedis(host='localhost', port=6379, db=0)
    h = [utils.from_es_dict_dto(a) for a in articles]
    h = sorted(h, key=lambda a: len(a['similar']), reverse=True)
    r.set('headlines_%s' % tag, json.dumps(h[:5], default=date_parser))
    logger.info('[headlines] %s updated' % tag)
Exemple #2
0
def articles(request, tag):
    page = int(request.GET.get('page', 1))

    cat = parse_tag(tag)

    start = (page - 1) * 40
    stop = page * 40

    articles = store.get_articles(tag, start=start, limit=stop)
    fudge = [utils.from_es_dict_dto(a) for a in articles]
    return HttpResponse(json.dumps({
        'articles': fudge,
        'cat': cat,
    }, default=date_parser),
        mimetype='application/json'
    )