from data.user_black_list_ip import Black_ip

import traceback

import datetime
from datetime import timedelta

from . import db_session
# from datetime import timedelta


class CheckGoodMassage:
    def __init__(self):
        self.bad_word = ['блядь', 'блядища', 'блядовать', 'выблядок ', 'ебанутый', 'ебёныть', 'ёбнулся', 'ёб', 'ебать', 'ебаться', 'ёбырь', 'ебальник',
                         'ебало', 'ебло', 'ёбнуть', 'ебануть', 'ёбнутый', 'выебнулся', 'наебнуться', 'выебнуться', 'долбоёб', 'заеблись', 'настоебенить',
                         'настоебать', 'ебаквакнуться', 'наебать', 'ебысь', 'наёбка', 'подъебать', 'подъёб', 'подъёбка', 'поебать', 'поебень', 'поеботина',
                         'коноебля', 'коноёбиться', 'ебля', 'уёбище', 'бомбоуёбище', 'уёбывать', 'съёбывать', 'изъебнуться', 'изъёб', 'невъебенно',
                         'заебатый', 'заебательский', 'разъебай', 'разъёба', 'поёбка', 'еблан', 'заебатый', 'ебанат', 'туебень', 'ёбово', 'еботятина',
                         'ебливый', 'ебучий', 'злоебучий', 'косоёбиться', 'шароёбиться', 'пиздец', 'пизда', 'пизданутый', 'спизжены', 'пизды',
                         'пиздатый', 'пиздобол', 'опиздол', 'пиздить', 'спиздить', 'пиздануть', 'пиздеть', 'пиздёж', 'пиздун', 'пиздяной', 'пиздной',
                         'пиздюля', 'пиздюлина', 'пиздюшка', 'распиздяй', 'пиздовать', 'пиздануться', 'пиздюк', 'пездолочь', 'спиздометр', 'пизданутый',
                         'припизднутый', 'пиздячить', 'пиздюхать', 'пиздюхаханьки', 'пиздовать', 'пиздёхать', 'пиздорванец', 'пиздобратия', 'припиздь',
                         'пиздотекарь', 'пиздёныш', 'чепиздон', 'распиздон', 'пиздоплюйство', 'пиздопроёбина', 'хуй ', 'хуёвый', 'хуёво', 'хуета',
                         'хуйня', 'хуетень', 'хуёвина', 'хуётина', 'хули', 'хуячить', 'хуярить', 'хуярыжить', 'охуенный', 'охуительный',
                         'охуевательный', 'охуенный', 'охуеть', 'похуист', 'похуизм', 'хуила', 'хуебяка', 'хуйнуть', 'семихуй', 'полухуй',
                         'хуемполбия', 'хуесос', 'мудак', 'херово', 'мудаковатый', 'мудила', 'мудозвон', 'мудохать', 'мудофель', 'мудель', 'мудень',
                         'мудильник', 'дрочить', 'задроченный', 'придрочиться', 'трахать', 'елда', 'манда', 'хер', 'херики', 'херить', 'похерить',
                         'выхерить', 'хером', 'хреном', 'хреновый', 'херовый', 'говно', 'кал', 'говняный', 'говёный', 'говняшка', 'говнюк',
                         'залупа', 'залупывать', 'залупливать', 'залуплять', 'залупать', 'залупа', 'залупка', 'залупчивый', 'залупщик', 'срать',
                         'поднасрать', 'засранный', 'обосранный', 'мухосранск', 'обосрать', 'засратый', 'серить', 'срака', 'сральник', 'засранец',
                         'срун', 'обосраться', 'пересрать', 'просрать', 'насрать', 'засрать', 'обосрать', 'срач', 'усираться', 'подосрать', 'высрать',
                         'ссать', 'зассатый', 'обоссанный', 'поднассать', 'мочиться', 'оправляться', 'проссывать', 'ссыкун', 'ссыкло', 'уссываться',
                         'уссачка', 'уссывон', 'пидор', 'педик', 'педрила', 'педрильо', 'гомосек', 'гомосятина', 'гей', 'пидарас', 'пидораз',
                         'пидорас', 'пидарасить', 'пидормот', 'пидорюга', 'пидар', 'Жопа', 'задница', 'задничный', 'жопорванец', 'зажопить',
                         'жополиз', 'хитрожопый', 'гандон', 'долбаеб']

    def check_good_massage(self, massege):
        true_massage = True
        mass = massege.split()
        print(mass)
        for i in mass:
            if i.lower() in self.bad_word:
                true_massage = False
        return true_massage


class CheckGoodIp:
    def __init__(self):
        self.bad_ip = {}
        # request.remote_addr

    def add_bad_id(self, ip, cause='spam'):
        db_sess = db_session.create_session()
        now_time = timedelta(hours=datetime.time.hour,
                             minutes=datetime.time.minute)
        add_time = timedelta(hours=0, minutes=10)
        FMT = '%H:%M:%S'
        new_time = now_time + add_time
        black_ip_add = Black_ip(
            ip=ip,
            cause=cause,
            time_ban=new_time)
        try:
            db_sess.add(black_ip_add)
            db_sess.commit()
        except Exception as e:
            print(f'errore{e}')
            # return jsonify({'error': 'errore write'})
            # self.bad_ip[ip] = datetime.strptime(
            # now_time, FMT) + datetime.strptime(add_time, FMT)

    def del_bad_id(self, ip):
        db_sess = db_session.create_session()
        check = db_sess.query(Black_ip).filter(Black_ip.ip == ip).first()
        try:
            db_sess.delete(check)
            db_sess.commit()
        except Exception as e:
            print(f'errore{e}')

    def check_ip(self, ip):
        db_sess = db_session.create_session()
        check = db_sess.query(Black_ip).filter(Black_ip.ip == ip).first()
        if check_ip:
            if check_ip.time_ban < datetime.time:
                self.del_bad_id(ip)
                return True
            else:
                return False
        else:
            False
