예제 #1
0
    def __init__(self):

        #Удаляем queue
        crud = Crud('localhost', 'andrew', 'andrew', 'verses')
        crud.sql = 'DROP TABLE queue;'
        crud.deleteAct()
        print('Drop\'нули таблицу queue')
        crud.closeConnection()
예제 #2
0
class ProxyAct:
    def __init__(self, ip_address, port):

        self.ip_address = ip_address
        self.port = port
        self.crud = Crud('localhost', 'andrew', 'andrew', 'proxy')

    # проверяет прокси на доступность. Если прокси не рабочий он игнорируеться.
    def checkProxy(self):

        timeout = 10
        result = call(
            'curl -s --connect-timeout {0} -x {1}:{2} http://google.com'.
            format(timeout, self.ip_address, self.port),
            stdout=PIPE,
            shell=True)

        if result == 0:
            print('Всё путем! IP: {0:16} - хороший'.format(self.ip_address))

            return True
        else:
            print('Плохо, не подошел')

            return False

    # добавляет прокси в БД
    def addProxy(self):

        if (self.checkProxy()) == True:

            self.crud.sql = ('''INSERT INTO proxies (ip_address, port, time)
                             VALUES ('{0}', '{1}', '{2}')'''.format(
                self.ip_address, self.port, round(time.time())))
            self.crud.createAct()

    # удатяет прокси из БД. Используеться в основном в случаях если ранее
    # добавленный прокси устарел.
    def deleteProxy(self):

        self.crud.sql = ('DELETE FROM proxies WHERE ip_address=\'{0}\''.format(
            self.ip_address))
        self.crud.deleteAct()

    def __del__(self):

        self.crud.closeConnection()
예제 #3
0
class Model():
    def __init__(self):

        self.crud = Crud('localhost', 'andrew', 'andrew', 'verses')
        self.existTable()

    def __del__(self):
        self.crud.closeConnection()

    def checkContactTable(self):

        self.crud.sql = 'SHOW TABLE STATUS LIKE \'contacts\''
        contacts = self.crud.readAct()
        if len(contacts) == 0:
            print('Нету таблицы с контактами!')
            return False

        else:
            print('Есть такая таблица')
            return True

    def createContactTable(self):

        self.crud.sql = '''CREATE TABLE contacts (
                            id INT NOT NULL AUTO_INCREMENT,
                            PRIMARY KEY(id),
                            name VARCHAR(40) NOT NULL,
                            email VARCHAR(40) NOT NULL,
                            quantity_per_day INT NOT NULL,
                            intervals INT NOT NULL,
                            authors TEXT NOT NULL
                            );'''

        self.crud.createAct()

    def existTable(self):

        if self.checkContactTable() == False:
            self.createContactTable()

    def addIntoContacts(self, name, email, quantity_per_day, intervals,
                        authors):

        authors = ','.join(authors)

        self.crud.sql = '''INSERT INTO contacts (name, email, quantity_per_day,
                         intervals, authors) VALUES (\'{0}\',\'{1}\', {2}, {3},
                         \'{4}\')'''.format(name, email, quantity_per_day,
                                            intervals, authors)

        self.crud.createAct()

    def editContacts(self, id, name, qpd, authors):

        authors = ','.join(authors)
        self.crud.sql = '''UPDATE contacts SET name='{0}',quantity_per_day='{1}',
                         authors='{2}' WHERE id=\'{3}\''''.format(
            name, qpd, authors, id)

        self.crud.updateAct()

    def removeFromContacts(self, id):

        id = int(id)
        self.crud.sql = 'DELETE FROM contacts WHERE id={0}'.format(id)
        self.crud.deleteAct()

    def zeroizeQpd(self, id):

        id = int(id)
        self.crud.sql = ("UPDATE contacts SET quantity_per_day=0 "
                         "WHERE id={0}".format(id))
        self.crud.updateAct()
예제 #4
0
#!/usr/bin/python3

#        отступы пробелами
#        by Andrew Sotnikov aka Luca Brasi,
#        e-mail: [email protected]
#        --------------

#        clearing cash in DB and removing log file_as_well

from saumysql import Crud
from subprocess import call

passwd = "fearofthedark"
logfile = "/var/log/andrew/good_verse_mailer.log"

#removing temporary tables from DataBase
crud = Crud('localhost', 'andrew', 'andrew', 'verses')
crud.sql = ("DROP TABLE queue, time_marks")
crud.deleteAct()

#clearing logs
call("echo \"{0}\" | sudo -S rm {1}".format(passwd, logfile),
     shell=True,
     universal_newlines=True)
예제 #5
0
    def deleteFromQueue(self, id):

        crud = Crud('localhost', 'andrew', 'andrew', 'verses')
        crud.sql = 'DELETE FROM queue WHERE id=\'{0}\''.format(id)
        verse_data = crud.deleteAct()
        crud.closeConnection()
예제 #6
0
class FillAuthors():
    def __init__(self):

        self.crud = Crud('localhost', 'andrew', 'andrew', 'verses')
        self.gatAllAuthors()
        self.getOneLineAuthors()

    def __del__(self):

        self.crud.closeConnection()

    # Парсит автора. Получает строку типа Александр Сергеевич Пушкин.
    # Возвращает словарь: authors['name':Александр, 'patronymic':Сергеевич,
    # 'lastname':Пушкин]
    def parseAuthors(self, string):

        names = string.split(' ')
        temp_names = []
        # Вырежем пробелы вокруг строки
        for x in names:
            temp_names.append(x.strip(' '))
        names = temp_names

        names_number = len(names)

        # Если тольоко фамилия
        if names_number == 1:

            author = {'lastname': string, 'name': '', 'patronymic': ''}

        # Если фамилия имя
        elif names_number == 2:

            author = {'lastname': names[1], 'name': names[0], 'patronymic': ''}

        # Если фамилия, имя, отчество
        elif names_number == 3:

            author = {
                'lastname': names[2],
                'name': names[0],
                'patronymic': names[1]
            }

        return author

    # Получает список всех авторов и ложит их в lst_distinct
    def gatAllAuthors(self):

        self.crud.sql = 'SELECT DISTINCT author FROM verses_list'
        self.lst_distinct = self.crud.readAct()

        authors_list = []
        # Пошел процесс преобразования фамилий
        for elem in self.lst_distinct:

            self.verseslist_IN_poets(elem[0])

    # Соединяет список всех авторов в одну строку
    def getOneLineAuthors(self):

        self.authors_line = []
        for elem in self.lst_distinct:

            self.authors_line.append(elem[0])

    # Проверяет наличие поэта в poets. Если такового нету - добавляет его
    def verseslist_IN_poets(self, raw_author):

        author = self.parseAuthors(raw_author)
        self.crud.sql = '''SELECT * FROM poets WHERE name=\'{0}\' and
                         patronymic=\'{1}\' and lastname=\'{2}\''''.format(
            author['name'], author['patronymic'], author['lastname'])
        res = self.crud.readAct()
        if len(res) == 0:
            print('Автора {0} нету в списке!'.format(author['lastname']))
            id = self.addAuthorIntoPoets(author)
            self.updateAuthorID(id, raw_author)

    # Получает список authors=[имя, отчество, фамилия]
    # Приводит в соответстиве таблицу poets. Если автор есть в poets, но его
    # нету в verses_list - этот автор удаляеться.
    def poets_IN_verseslist(self, author):

        lst_distinct = ';'.join(self.authors_line)
        # author - это кортеж, поэтому создадим новую переменную
        lastname = author[2]

        # Если такая фамилия есть то поищем подетальней
        if lst_distinct.count(lastname) != 0:

            # Проекранируем спецсимволы
            lastname = lastname.replace('(', '\(')
            lastname = lastname.replace(')', '\)')
            pattern = r'{0}\s*{1}\s*{2}'.format(author[0], author[1], lastname)
            # Ищем по всем имеющимся параметрам. Имя, Отчество, Фамилия
            res = re.search(pattern, lst_distinct)
            if res == None:
                print('Такого автора действительно нету в verses_list'
                      ' {0} {1} {2}'.format(author[0], author[1], lastname))
                # Молча удаляем лишнего поэта
                self.crud.sql = ("DELETE FROM poets WHERE name='{0}' and "
                                 "patronymic='{1}' and lastname='{2}'").format(
                                     author[0], author[1], author[2])
                self.crud.deleteAct()

        # Нету автора с такой фамилией? Смело можно удалять.
        else:
            print('Какой-то левый автор, нету его в verses_list'
                  ' {0}'.format(lastname))
            self.crud.sql = ("DELETE FROM poets WHERE name='{0}' and "
                             "patronymic='{1}' and lastname='{2}'").format(
                                 author[0], author[1], author[2])
            self.crud.deleteAct()

    # Непосредственно доавляет автора в poets table. Возвращет свеже присвоенное
    # id для данного поэта
    def addAuthorIntoPoets(self, author):

        self.crud.sql = '''INSERT INTO poets (name, patronymic, lastname)
                      VALUES (\'{0}\',\'{1}\',\'{2}\')'''.format(
            author['name'], author['patronymic'], author['lastname'])
        self.crud.createAct()

        self.crud.sql = '''SELECT id FROM poets WHERE name=\'{0}\' and
                         patronymic=\'{1}\' and lastname=\'{2}\''''.format(
            author['name'], author['patronymic'], author['lastname'])

        id = self.crud.readAct()

        return id[0]

    # Обновляет id поэта в verese_list table
    def updateAuthorID(self, id, author):

        self.crud.sql = ('''UPDATE verses_list SET author_id=\'{0}\'
                       WHERE author=\'{1}\''''.format(id, author))
        print('Успешно присовен ID={0:5} автору {1}'.format(id, author))
        self.crud.updateAct()

    # Остюда начинаеться процесс синхронизации поэтов verses_list -> poets
    def synchroPoetryToVerses_list(self):

        self.crud.sql = 'SELECT name, patronymic, lastname FROM poets'
        authors = self.crud.readAct()
        for author in authors:
            self.poets_IN_verseslist(author)