#!/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



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

            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:
                        tag_name_terms_list.append(name_term.lower())

            res["suggest"] = {
                "input":tag_name_terms_list,
                "contexts":{
                    "is_online": [instance.is_online],
                    "is_deleted": [instance.is_deleted]
                }
            }
            res["name"] = 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
            return res
        except:
            logging.error("catch exception,err_msg:%s" % traceback.format_exc())
            return dict()