try:
    import settings_local

    pg_fts_config = 'pg_catalog.russian'  # 'public.mipp_fulltext'
except:
    pg_fts_config = 'pg_catalog.russian'

from django.db import models
from django.contrib.postgres.search import Value, Func
import copy


# получаем из списка только слова содержащие цифры
def get_list_words_contains_nums(txt):
    from .inter import numbers

    if type(txt) == str:
        words = txt.split(' ')
    else:
        words = txt

    words_w_nums = []

    # получаем слова с цифрами
    res_words = []

    for word in words:
        i = 0

        while i < len(word):
            if word[i] in numbers:
                res_words.append(word)
                break
            i += 1

    return res_words


# получаем список слов с разделенными цифрами и текстом
def get_list_split_words_w_nums(txt):
    from .inter import numbers

    if type(txt) == str:
        words = txt.split(' ')
    else:
        words = txt

    # words_w_nums = []

    # получаем слова с цифрами
    words_w_devided_nums = []
    for word in copy.copy(words):

        i = 0
        is_number = False
        cut_piece_compete = False

        while i < len(word):
            if i == 0:
                if word[i] in numbers:
                    is_number = True
                else:
                    is_number = False
            else:
                if word[i] in numbers:
                    if not is_number:
                        cut_piece_compete = True
                else:
                    if is_number:
                        cut_piece_compete = True

            if cut_piece_compete:
                cut_piece_compete = False
                words_w_devided_nums.append(word[0:i])

                # if is_number:
                #     words_w_nums.append(word[0:i])

                word = word[i:]
                i = 0
            else:
                i += 1

        if i > 0:
            words_w_devided_nums.append(word[0:i])
            # if is_number:
            #     words_w_nums.append(word[0:i])

    return words_w_devided_nums


class Headline(Func):
    function = 'ts_headline'

    def __init__(self, field, query, config=None, options=None, **extra):
        expressions = [field, query]
        if config:
            expressions.insert(0, Value(config))
        if options:
            expressions.append(Value(options))
        extra.setdefault('output_field', models.TextField())
        super(Headline, self).__init__(*expressions, **extra)


def get_search_lexems_list(search_phrase):
    from django.db import connection
    search_lexems_list = None

    cursor = connection.cursor()
    cursor.execute("SET NAMES 'UTF8';")
    # cursor.execute(u"SET CHARACTER SET 'utf8';")
    # cursor.execute(u"SET character_set_connection='utf8';")
    cursor.execute("SELECT plainto_tsquery('{1}', '{0}');".format(search_phrase, pg_fts_config))
    search_lexems = cursor.fetchone()
    s = search_lexems[0]  # .decode('utf8')

    if search_lexems:
        search_lexems = s.replace('\\', '')
        search_lexems = search_lexems.replace("'", '')
        search_lexems = search_lexems.replace(" ", '')
        search_lexems_list = search_lexems.split('&')

    return search_lexems_list
