topic_transfer.py 4.57 KB
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import os
import sys
import logging
import traceback
from libs.tools import tzlc
import time
import re
import datetime
from trans2es.models.user import User
from trans2es.models.topic import ExcellentTopic

class TopicTransfer(object):

    @classmethod
    def get_topic_data(cls,instance,is_excellect=False):
        try:
            res = dict()

            res["id"] = instance.id
            res["is_online"] = instance.is_online
            res["is_deleted"] = instance.is_deleted
            res["vote_num"] = instance.vote_num
            res["reply_num"] = instance.reply_num
            res["name"] = instance.name
            res["description"] = instance.description
            res["content"] = instance.content
            res["content_level"] = instance.content_level
            res["user_id"] = instance.user_id
            res["user_nick_name"] = User.get_user_nick_name(instance.user_id)

            if instance.group:
                res["group_id"] = instance.group.id
            else:
                res["group_id"] = -1
            res["share_num"] = instance.share_num

            res["pictorial_id"] = instance.get_pictorial_id()

            res["share_num"] = instance.share_num

            begin = time.time()
            res["pick_id_list"] = instance.get_pick_id_info()
            end = time.time()
            time0 = (end-begin)

            begin = time.time()
            (topic_tag_id_list, edit_tag_id_list) = instance.get_topic_tag_id_list()
            res["tag_list"] = topic_tag_id_list
            res["edit_tag_list"] = edit_tag_id_list
            end = time.time()
            time1 = (end-begin)

            begin = time.time()
            res["tag_name_list"] = instance.get_tag_name_list(res["tag_list"])
            end = time.time()
            time2 = (end-begin)


            begin = time.time()
            res["offline_score"] = instance.get_topic_offline_score()
            end = time.time()
            time3 = (end-begin)

            begin = time.time()
            res["manual_score"] = instance.drop_score
            res["has_image"] = instance.topic_has_image()
            res["has_video"] = instance.has_video
            res["language_type"] = instance.language_type
            end = time.time()
            time4 = (end-begin)

            # # 片假名
            # re_jp_pian_words = re.compile(u"[\u30a0-\u30ff]+")
            # m_pian = re_jp_pian_words.search(instance.content, 0)
            #
            # # 平假名
            # re_jp_ping_words = re.compile(u"[\u3040-\u309f]+")
            # m_ping = re_jp_ping_words.search(instance.content, 0)

            # if m_pian or m_ping:
            #     res["language_type"] = 10
            # else:
            #     res["language_type"] = instance.language_type

            res["is_shadow"] = instance.is_shadow
            res["is_recommend"] = True if instance.is_recommend else False
            res["is_complaint"] = instance.is_complaint

            res["virtual_content_level"] = instance.virtual_content_level
            res["like_num_crawl"] = instance.like_num_crawl
            res["comment_num_crawl"]= instance.comment_num_crawl

            res["is_crawl"] = instance.is_crawl
            res["platform"] = instance.platform
            res["platform_id"] = instance.platform_id

            res["drop_score"] = instance.drop_score
            res["sort_score"] = instance.sort_score

            create_time = instance.create_time
            tzlc_create_time = tzlc(create_time)
            res["create_time"] = tzlc_create_time
            res["create_time_val"] = int(time.mktime(tzlc_create_time.timetuple()))


            update_time = instance.update_time
            tzlc_update_time = tzlc(update_time)
            res["update_time"] = tzlc_update_time
            res["update_time_val"] = int(time.mktime(tzlc_update_time.timetuple()))

            res["total_vote_num"] = instance.get_virtual_vote_num() + instance.vote_num

            if is_excellect:
                res["is_excellent"] = 1
            else:
                excelllect_object = ExcellentTopic.objects.filter(topic_id=instance.id,is_online=True,is_deleted=False).first()
                if excelllect_object:
                    res["is_excellent"] = 1
                else:
                    res["is_excellent"] = 0

            logging.info("test topic transfer time cost,time0:%d,time1:%d,time2:%d,time3:%d,time4:%d" % (time0,time1,time2,time3,time4))
            return res
        except:
            logging.error("catch exception,err_msg:%s" % traceback.format_exc())
            return None