#!/usr/bin/env python # -*- coding: utf-8 -*- from __future__ import unicode_literals, absolute_import, print_function import os import sys import logging import traceback from libs.tools import tzlc from trans2es.models.topic import Topic from trans2es.models.tag import TopicTag, CommunityTagType, CommunityTagTypeRelation import datetime from django.conf import settings import copy class TagTransfer(object): @classmethod def get_tag_name_data(cls, instance): try: res = dict() res["name"] = instance.name return res except: logging.error("catch exception,err_msg:%s" % traceback.format_exc()) return dict() @classmethod def get_tag_data(cls, instance): try: res = dict() res["id"] = instance.id begin_tag_name_terms_list = list() tag_name_terms_list = list() for i in range(len(instance.name)): for j in range(i, len(instance.name) + 1): name_term = instance.name[i:j].strip() if name_term: if i == 0: begin_tag_name_terms_list.append(name_term.lower()) else: tag_name_terms_list.append(name_term.lower()) res["suggest"] = { "input":tag_name_terms_list, "weight": 1, "contexts":{ "is_online": [instance.is_online], "is_deleted": [instance.is_deleted] } } res["name"] = instance.name res["name_pre"] = instance.name res["is_online"] = instance.is_online res["is_deleted"] = instance.is_deleted topic_num = 0 res["near_new_topic_num"] = topic_num if instance.is_online == True and instance.is_deleted == False: topic_id_list = list() sql_result_results = list(TopicTag.objects.using(settings.SLAVE_DB_NAME).filter( tag_id=instance.id).values_list("topic_id", "is_online")) for topic_id, is_online in sql_result_results: if is_online: topic_id_list.append(topic_id) time_base_val = datetime.datetime.strftime(datetime.datetime.now() + datetime.timedelta(-7), "%Y-%m-%d") for topic_begin_index in range(0, len(topic_id_list), 100): cur_topic_num = Topic.objects.using(settings.SLAVE_DB_NAME).filter( id__in=topic_id_list[topic_begin_index:topic_begin_index + 100], create_time__gte=time_base_val).count() topic_num += cur_topic_num res["near_new_topic_num"] = topic_num tag_type_sql_list = CommunityTagTypeRelation.objects.using(settings.SLAVE_DB_NAME).filter( tag_id=instance.id).values_list("tag_type_id", flat=True) tag_type_list = list() for tag_type_id in tag_type_sql_list: tag_type_list.append(tag_type_id) res["tag_type"] = tag_type_list res["collection"] = instance.collection res["is_ai"] = instance.is_ai res["is_own"] = instance.is_own begin_res = copy.deepcopy(res) begin_res["id"] = begin_res["id"] + 600000000 begin_res["suggest"]["input"] = begin_tag_name_terms_list begin_res["suggest"]["weight"] = 10 return (res, begin_res) except: logging.error("catch exception,err_msg:%s" % traceback.format_exc()) return (dict(), dict())