Пример #1
0
def topic_ana(request):
    topics_str = _get(request, 'topic')
    if not topics_str:
        return HttpResponseRedirect('/')
    topics = topics_str.split(common.TOPIC_SEPARATOR)
    topic_dicts = [dict(topic=t, rm_q='') for t in topics]
    if len(topics) > 1:
        for topic_dict in topic_dicts:
            tmp_topics = topics[:]
            tmp_topics.remove(topic_dict['topic'])
            topic_dict['rm_q'] = _join_topic_str(tmp_topics,
                                                 common.TOPIC_SEPARATOR)
    related_topics = db.get_related_topics(topics)
    all_amount = db.get_articles_amount_by_topics(topics)
    for item in related_topics:
        item['q'] = topics_str + common.TOPIC_SEPARATOR + item['title']
        item['percentage'] = 100* item['amount'] / all_amount
        if item['percentage'] ==0:
            item['percentage'] = 1

    start = _shift_datetime(_truncate_day(datetime.datetime.now()), days=-7)
    all_7d_amount = db.get_articles_amount_by_topics(topics, start=start)
    related_7d_topics = db.get_related_topics(topics, start=start)
    for item in related_7d_topics:
        item['q'] = topics_str + common.TOPIC_SEPARATOR + item['title']
        item['percentage'] = 100* item['amount'] / all_7d_amount
        if item['percentage'] ==0:
            item['percentage'] = 1

    return render_to_response('topic_analytics.html',
                              dict(topics=topic_dicts,
                                   topic=topics_str,
                                   all_7d_amount=all_7d_amount,
                                   related_7d_topics=related_7d_topics,
                                   all_amount=all_amount,
                                   related_topics=related_topics))
Пример #2
0
def dtopic(request):
    t = _get(request, 't')
    if not t:
        return HttpResponseRedirect('/')
    filename = os.path.join(DATA_ROOT, 'topic', t)
    #if not os.path.exists(filename) or True:
    if True:
        with open(filename, 'wb') as f:
            writer = UnicodeWriter(f)
            topics = t.split(common.TOPIC_SEPARATOR)
            related_topics = db.get_related_topics(topics, limit=10)
            writer.writerow(['topic', 'articles'])
            writer.writerows([[d['title'], str(d['amount'])] for d in related_topics])
    wrapper = FileWrapper(file(filename))
    response = HttpResponse(wrapper, content_type='text/plain')
    response['Content-Length'] = os.path.getsize(filename)
    return response
Пример #3
0
def topic(request):
    topics_str = _get(request, 'topic')
    if not topics_str:
        return HttpResponseRedirect('/')

    limit = _get(request, 'limit')
    if limit is None:
        limit = 100
    elif limit == 'all':
        limit = 0
    else:
        try:
            limit = int(limit)
        except Exception:
            limit = 100

    topics = topics_str.split(common.TOPIC_SEPARATOR)
    topic_dicts = [dict(topic=t, rm_q='') for t in topics]
    if len(topics) == 1:
        articles = db.list_articles_by_topic(topics[0], limit=limit)
    else:
        articles = db.list_articles_by_topics(topics, limit=limit)
        for topic_dict in topic_dicts:
            tmp_topics = topics[:]
            tmp_topics.remove(topic_dict['topic'])
            topic_dict['rm_q'] = _join_topic_str(tmp_topics,
                                                 common.TOPIC_SEPARATOR)
    def _process_row(a):
        a['created_date'] = a['created'][:10] #.timepstr('%Y-%M-%D')
        a['url'] = urllib.unquote(a['url'])
        a['source_url'] = urllib.unquote(a['source_url'])
        return a
    articles = [_process_row(a) for a in articles]
    limit = limit if len(articles) == limit else 0

    related_topics = db.get_related_topics(topics, limit=10)
    for item in related_topics:
        item['q'] = topics_str + common.TOPIC_SEPARATOR + item['title']
    highlight_pattern=_join_topic_str(topics, common.DISPLAY_SEPARATOR)
    return render_to_response('topic.html',
                              dict(topics=topic_dicts,
                                   topic=topics_str,
                                   highlight_pattern=highlight_pattern,
                                   articles=articles,
                                   limit=limit,
                                   related_topics=related_topics))