示例#1
0
    def setupUi(self, form):
        Ui_Form.setupUi(self,form)

        dbconfig = read_config(filename='realty.ini', section='mysql')
        self.dbconn = MySQLConnection(**dbconfig)  # Открываем БД из конфиг-файла
        self.first_setup_tableWidget()
        return
示例#2
0
 def __init__(self):
     self.dbconfig = read_config(filename='move.ini', section='mysql')
     self.leSQLcl = ''
     self.leSQLco = ''
     self.phones = []
     self.parser = argparse.ArgumentParser()
     self.parser.add_argument('-sheetName')
     self.parser.add_argument('-fond', default=0, type=int)
     self.parser.add_argument('-agent', default=0, type=int)
     self.parser.add_argument('-signer', default=0, type=int)
     self.parser.add_argument('-clientOnly', default=False, type=bool)
     self.parser.add_argument('-socium', default=False, type=bool)
     self.parser.add_argument('-suff', default='', type=str)
     self.parser.add_argument('-ourStat', default=False, type=bool)
     self.parser.add_argument('-fondStat', default=False, type=bool)
     self.parser.add_argument('-arhivON', default=False, type=bool)
     self.parser.add_argument('-arhivOFF', default=False, type=bool)
     self.parser.add_argument('-noDubPhonePartner',
                              default=False,
                              type=bool)
     self.parser.add_argument('-noBackup', default=False, type=bool)
     self.args = self.parser.parse_args(sys.argv[2:])
示例#3
0
# -*- coding: utf-8 -*-

from mysql.connector import MySQLConnection, Error
import openpyxl
import sys
from datetime import datetime
from lib import read_config, l, lenl, get_filename

dbconfig = read_config(filename='bulkload.ini', section='mysql')
dbconn = MySQLConnection(**dbconfig)  # Открываем БД из конфиг-файла

read_cursor = dbconn.cursor()
read_cursor.execute("SELECT * FROM big WHERE id < 2")  # !!! имя таблицы !!!
a = read_cursor.fetchall()

print('\n' + datetime.now().strftime("%H:%M:%S") + ' Начинаем загрузку \n')

fields = []
sql = 'INSERT INTO big('  # !!! имя таблицы !!!
sql_end = ''
for i, q in enumerate(read_cursor.description):
    if i == 0:
        continue
    elif i == 1:
        sql += q[0]
        sql_end += '%s'
    else:
        fields.append(q[0])
        sql += ',' + q[0]
        sql_end += ',' + '%s'
sql += ') VALUES (' + sql_end + ')'
示例#4
0
# -*- coding: utf-8 -*-
# Помечаем в БД совпадающие по сигнатурам файлы по файлу *_mp3wav.csv
__author__ = 'Denis'

import os
import hashlib
from mysql.connector import MySQLConnection

from lib import read_config

dbconfig_crm = read_config(filename='asocium.ini', section='crm')
dbconn_crm = MySQLConnection(**dbconfig_crm)
cursor_crm = dbconn_crm.cursor()
dbconfig_alone = read_config(filename='asocium.ini', section='alone')
dbconn_alone = MySQLConnection(**dbconfig_alone)
cursor_alone = dbconn_alone.cursor()
files = os.listdir('.')
#is_ready = False # Пропускаем цикл пока не True, пока не дошли до нужной строчки
for file in files:
    if file.endswith('_mp3wav.csv'):
        with open(file) as file_handler:
            for line in file_handler:
                line_ok = False
                a_p_f = line.split('\t')[0]
                callcenter_id = ''
                if len(a_p_f.split('/back/recup_dir.')) > 1:
                    aster_path = int(
                        a_p_f.split('/back/recup_dir.')[1].split('/')[0])
                    aster_file = a_p_f.split('/back/recup_dir.')[1].split(
                        '/')[1]
                    #if aster_file == 'f4095301304.wav':
示例#5
0
文件: alfa.py 项目: dekarh/alfa
from mysql.connector import MySQLConnection, Error
import openpyxl
from openpyxl import Workbook

from lib import read_config, lenl, s_minus, s, l, filter_rus_sp, filter_rus_minus

# Партнеры, по которым не надо обрезать !!! MIN - 1 шт !!!
OUR_PARTNERS = [45, 191, 234]
# Коэффициент обрезки
K_HIDDEN = 0.2
# Дата начала обрезки
DATE_HIDE = '2018-01-29'
# До какой даты ставить статус "Отрицательный результат"
DATE_END_OTKAZ = '2017-12-31'

dbconfig = read_config(filename='alfa.ini', section='SaturnFIN')

has_files = False
all_files = os.listdir(path=".")
for all_file in all_files:
    if all_file.endswith(".xlsx"):
        has_files = True
if not has_files:
    sys.exit()

# обнуление скрытых отказов банка (которые раньше были предварительно одобрены)
dbconn = MySQLConnection(**dbconfig)
cursor = dbconn.cursor()
cursor.execute(
    'UPDATE saturn_fin.alfabank_products SET status_hidden = 0 '
    'WHERE status_hidden = 1 AND (status_code = 3 OR status_code = 5)')
示例#6
0
        k = range(9, 0, -1)
        pairs = zip(k,
                    [int(x) for x in snils.replace('-', '').replace(' ', '')])
        return sum([k * v for k, v in pairs])

    snils = '{0:09d}'.format(snils_dig)
    csum = snils_csum(snils)
    while csum > 101:
        csum %= 101
    if csum in (100, 101):
        csum = 0

    return csum


dbconfig = read_config(filename='gen_snils.ini', section='main_mysql')
dbconn = MySQLConnection(**dbconfig)

workbooks = []
sheets = []
for i, xlsx_file in enumerate(sys.argv):  # Загружаем все xlsx файлы
    if i == 0:
        continue
    workbooks.append(openpyxl.load_workbook(filename=xlsx_file,
                                            read_only=True))
    sheets.append(workbooks[i - 1][workbooks[i - 1].sheetnames[0]])

total_rows = 0
sheets_keys = []
keys = {}
for i, sheet in enumerate(sheets):  # Маркируем нужные столбцы
示例#7
0
文件: sort.py 项目: dekarh/anketa
# -*- coding: utf-8 -*-
# Берем из монго, сортируем, результат в Excel

import sys, argparse
from _datetime import datetime, timedelta, date
import os
from mysql.connector import MySQLConnection, Error
from collections import OrderedDict
import openpyxl
from pymongo import MongoClient
from lib import read_config, fine_phone

# подключаемся к серверу
cfg = read_config(filename='anketa.ini', section='Mongo')
conn = MongoClient('mongodb://' + cfg['user'] + ':' + cfg['password'] + '@' +
                   cfg['ip'] + ':' + cfg['port'] + '/' + cfg['db'])
# выбираем базу данных
db = conn.saturn_v

# выбираем коллекцию документов
colls = db.Provider_Alfabank_CreditCards

wb_rez = openpyxl.Workbook(write_only=True)
ws_rez = wb_rez.create_sheet('Даты выгрузки')
ws_rez.append(
    ['Ф', 'И', 'О', 'Телефон', 'Дата и время создания', 'Дата выгрузки'])
for coll in colls.find({}, {
        "passport_lastname": 1,
        "passport_name": 1,
        "passport_middlename": 1,
        "personal_phone": 1,
示例#8
0
    def base(self):
        webconfig = read_config(filename='alfa.ini', section='web')
        fillconfig = read_config(filename='alfa.ini', section='fill')
        self.pid = os.getpid()
        post_api = read_config(filename='alfa.ini', section='postAPI')
        self.post_url = post_api['url']
        if DEBUG_JSON:
            with open(DEBUG_JSON) as f:
                inp = f.read()
        else:
            inp = sys.stdin.readline().rstrip()
        ajson = json.loads(inp)
        self.aid = ajson['click_id']
        if ajson['__landing_url']:
            self.driver.get(url=land2cc_short(ajson['__landing_url']) +
                            '&afclick=' + ajson['click_id'])
        else:
            raise RequiredPartnerLinkException
        loading = ajson['__command']['type'] == 'queue'
        complete_orderity = False
        cycles_orderity = 0
        formatting_error = ''
        tek_i = 0
        while (not complete_orderity
               ) and cycles_orderity <= CYCLES_ORDERITY and loading:
            documents = ''
            try:
                # Начинаем заполнять
                writelog(
                    self.log, self.aid,
                    'Начинаем заполнять по ссылке' + ajson['__landing_url'] +
                    '&afclick=' + ajson['click_id'] + str(ajson), self.pid)
                if not tek_i:
                    post_status(self.post_url, self.aid, 1,
                                'Начинаем выгрузку на сервер', self.log,
                                self.bad_log)
                for i in range(tek_i, len(orderity)):
                    order = orderity[i]
                    tek_i = i
                    # Проверяем stdin
                    ready, x, y = check_select([sys.stdin], [], [], 0)
                    if ready:
                        self.current_stdin = sys.stdin.readline().rstrip()
                    if self.current_stdin:
                        bjson = json.loads(self.current_stdin)
                        if bjson['__command']['type'] == 'kill':
                            self.current_stdin = ''
                            raise KillException
                    wj(self.driver)
                    # Проверяем на всякие неожиданности
                    current_html = self.driver.find_element_by_xpath(
                        '//HTML').get_attribute('innerHTML')
                    if current_html.find(
                            'Ваша заявка на кредитную карту устала ждать :)'
                    ) > -1:
                        raise ServerTimeOutException
                    if current_html.find('Ваши дальнейшие шаги') > -1:
                        writelog(
                            self.log, self.aid,
                            'Банк прервал транcфер заявки, чтобы уточнить некоторые данные '
                            'лично у Вас. Ожидайте звонка из Альфа-Банка',
                            self.pid)
                        post_status(
                            self.post_url, self.aid, 11,
                            'Банк прервал транcфер заявки, чтобы уточнить '
                            'некоторые данные лично у Вас. Ожидайте звонка из Альфа-Банка',
                            self.log, self.bad_log)
                        raise UspehException
                    elif current_html.find(
                            'вы можете подать заявку повторно через 30 дней'
                    ) > -1:
                        raise RejectException
                    if current_html.find('Хотите ускорить заполнение?') > -1:
                        elem = self.driver.find_element_by_xpath(
                            '//SPAN[@class="link__text"][text()="Продолжить заполнение"]'
                        )
                        wj(self.driver)
                        elem.click()
                    if current_html.find(
                            'Введите&nbsp;одноразовый пароль&nbsp;из&nbsp;SMS'
                    ) > -1:
                        complete_orderity = True
                        continue
                    self.use_order(order, ajson)
                complete_orderity = True
            except ServerTimeOutException:
                raise
            except RequiredPartnerLinkException:
                writelog(
                    self.log, self.aid,
                    'Необходимо указать партнерскую ссылку - обратитесть к Вашему куратору',
                    self.pid)
                post_status(
                    self.post_url, self.aid, 5,
                    'Необходимо указать партнерскую ссылку - обратитесть к '
                    'Вашему куратору', self.log, self.bad_log)
                raise
            except NoDeliveryException:
                writelog(
                    self.log, self.aid,
                    'Для Вашего города доставка курьером невозможна. После '
                    'поступления СМС от банка, пройдите по ссылке, указанной в нем и выберите удобное Вам место'
                    ' получения карты', self.pid)
                post_status(
                    self.post_url, self.aid, 11,
                    'Этого города нет в списке доставки курьером. Решение - '
                    'сказать клиенту: Для Вашего города доставка курьером '
                    'невозможна. Мы для Вас заполнили заявку. В течении часа Вам придет СМС со ссылкой на '
                    'заполненную заявку. Пройдите по ссылке, выберите удобное Вам место '
                    'получения карты и отправьте заявку в Альфа-Банк',
                    self.log, self.bad_log)
                raise
            except RequiredDocumentException:
                writelog(
                    self.log, self.aid,
                    'Для Вашего региона необходимо предоставить один из документов: '
                    + documents + '.\n Исправьте заявку и отправьте её заново',
                    self.pid)
                post_status(
                    self.post_url, self.aid, 11,
                    'Для Вашего региона необходимо предоставить один из '
                    'документов: ' + documents +
                    '.\n Исправьте заявку и отправьте её заново', self.log,
                    self.bad_log)
                raise
            except KillException:
                raise
            except UspehException:
                raise
            except RejectException:
                raise
            except Exception as e:
                time.sleep(1)
                current_html = self.driver.find_element_by_xpath(
                    '//HTML').get_attribute('innerHTML')
                if current_html.find(
                        'Ваша заявка на кредитную карту устала ждать :)') > -1:
                    raise ServerTimeOutException
                elif current_html.find('Ваши дальнейшие шаги') > -1:
                    writelog(
                        self.log, self.aid,
                        'Банк прервал транcфер заявки, чтобы уточнить некоторые данные '
                        'лично у Вас. Ожидайте звонка из Альфа-Банка',
                        self.pid)
                    post_status(
                        self.post_url, self.aid, 11,
                        'Банк прервал транcфер заявки, чтобы уточнить '
                        'некоторые данные лично у Вас. Ожидайте звонка из Альфа-Банка',
                        self.log, self.bad_log)
                    raise UspehException
                elif current_html.find(
                        'вы можете подать заявку повторно через 30 дней') > -1:
                    raise RejectException
                elif current_html.find('Хотите ускорить заполнение?') > -1:
                    elem = self.driver.find_element_by_xpath(
                        '//SPAN[@class="link__text"]'
                        '[text()="Продолжить заполнение"]')
                    wj(self.driver)
                    elem.click()
                else:
                    cycles_orderity += 1
                    data4send = {
                        't': 'x',
                        's':
                        '//SPAN[contains(@class,"input_invalid")]//SPAN[@class="input__sub"]/..',
                        'a': 'text'
                    }
                    input_errors = p(d=al.driver, f='ps', **data4send)
                    errors_nulled = []
                    data4send = {
                        't': 'x',
                        's':
                        '//SPAN[contains(@class,"textarea_invalid")]//SPAN[@class="textarea__sub"]/..',
                        'a': 'text'
                    }
                    other_errors = p(d=al.driver, f='ps', **data4send)
                    formatting_error = ''
                    if len(input_errors):
                        for i, input_error in enumerate(input_errors):
                            if input_error.strip(' ').strip('\n').strip(
                                    ' ').strip('\n').strip(' '):
                                errors_nulled.append(
                                    input_error.replace('\n', ': '))
                        formatting_error = 'Ошибки ввода:'
                        for i, input_error in enumerate(errors_nulled):
                            formatting_error += '\n' + str(
                                i + 1) + ') ' + input_error
                    errors_nulled = []
                    if len(input_errors):
                        for i, other_error in enumerate(other_errors):
                            if other_error.strip(' ').strip('\n').strip(
                                    ' ').strip('\n').strip(' '):
                                if other_error == 'Кем выдан\nПоле обязательно для заполнения':
                                    errors_nulled.append(
                                        'Возможно ошибка в Коде подразделения УФМС. '
                                        'Проверьте код подразделения и заполните поле "Кем выдан"'
                                    )
                                else:
                                    errors_nulled.append(
                                        other_error.replace('\n', ': '))
                        for i, other_error in enumerate(errors_nulled):
                            formatting_error += '\n' + str(
                                i + 1) + ') ' + other_error
                        formatting_error += '\n. Исправьте ошибки, сохраните и отправьте заявку заново'
                    nowtime = datetime.now()
                    stamp = self.aid + '(' + str(
                        self.pid) + ')' + nowtime.strftime("%d-%H:%M:%S")
                    if formatting_error:
                        writelog(self.bad_log, self.aid,
                                 orderity[tek_i]['alfa'] + formatting_error,
                                 self.pid, nowtime)
                        post_status(self.post_url, self.aid, 1,
                                    formatting_error, self.log, self.bad_log)
                        raise DecodedErrorException
                    else:
                        writelog(
                            self.bad_log, self.aid,
                            'Ошибка транспорта: Отправьте заявку заново.\n'
                            'информация для отладки:' +
                            orderity[tek_i]['alfa'] + '\n' + str(ajson) +
                            '\n * * * \n' + str(e), self.pid, nowtime)
                        html_log = open(LOG_PATH + stamp + '.html', 'w')
                        html_elem = self.driver.find_element_by_xpath('//HTML')
                        html_log.write(html_elem.get_attribute('innerHTML'))
                        html_log.close()
                        self.driver.save_screenshot(LOG_PATH + stamp + '.png')
                        writelog(
                            self.log, self.aid,
                            'Ошибка - см. лог ошибок, скриншот, файл html',
                            self.pid, nowtime)
                        raise TrasferErrorException
                    # Пока выключил повторную отправку ------------------------------------------
                    #self.driver.execute_script('window.open("' + ajson['__landing_url'] + '&afclick=' + ajson['click_id'] +
                    #                           '","_blank");')
                    #self.driver.switch_to.window(self.driver.window_handles[0])
                    #self.driver.close()
                    #self.driver.switch_to.window(self.driver.window_handles[0])
                    #tek_i = 0
                    #-----------------------------------------------------------------------------
        if complete_orderity:
            sms_start_time = datetime.now()
            server_timeout = False
            uspeh = False
            last_state = 0
            client_timeout = False
            time.sleep(1)
            while datetime.now() - sms_start_time < timedelta(
                    minutes=ALOADER_TIMEOUT
            ) and not server_timeout and not uspeh:
                while datetime.now() - sms_start_time < timedelta(minutes=ALOADER_TIMEOUT) and not self.current_stdin \
                        and not server_timeout and not uspeh:
                    time.sleep(1)
                    current_html = self.driver.find_element_by_xpath(
                        '//HTML').get_attribute('innerHTML')
                    if current_html.find('Неправильно введен код смс') > -1 or \
                            current_html.find('Некорректные данные.\n Пожалуйста, попробуйте ещё раз.') > -1:
                        if last_state != 1:
                            last_state = 1
                            post_status(self.post_url, self.aid, 5,
                                        'Неправильная СМС, введите заново',
                                        self.log, self.bad_log)
                    elif current_html.find(
                            'Вы превысили количество попыток. '
                            'Просьба повторить попытку через 15 минут') > -1:
                        writelog(
                            self.log, self.aid,
                            'Вы превысили количество возможных SMS за период, '
                            'отправьте заявку заново', self.pid)
                        post_status(
                            self.post_url, self.aid, 3,
                            'Вы превысили количество возможных SMS за период, '
                            'отправьте заявку заново через 15 минут', self.log,
                            self.bad_log)
                        raise DecodedErrorException
                    elif current_html.find(
                            'Ваша заявка на кредитную карту устала ждать :)'
                    ) > -1:
                        raise ServerTimeOutException
                    elif current_html.find(
                            'вы можете подать заявку повторно через 30 дней'
                    ) > -1:
                        raise RejectException
                    elif (current_html.find('Ваши следующие шаги') > -1) or (
                            current_html.find('Информация по заявке') > -1):
                        raise UspehException
                    elif (current_html.find(' сек<!-- /react-text --></p>') >
                          -1 or current_html.find('Запросить '
                                                  'повторно можно через 0') >
                          -1) and current_html.find(
                              '60 сек<!-- /react-text --></p>') == -1:
                        if last_state != 2:
                            last_state = 2
                            writelog(self.log, self.aid, 'Ждем СМС', self.pid)
                            post_status(self.post_url, self.aid, 2, 'Ждем СМС',
                                        self.log, self.bad_log)
                    elif (current_html.find('Запросить пароль повторно') > -1 or current_html.find('Превышено '
                            'количество попыток ввода пароля.\n Пожалуйста, запросите пароль повторно')) and \
                            current_html.find('60 сек<!-- /react-text --></p>') == -1:
                        if last_state != 3:
                            last_state = 3
                            writelog(self.log, self.aid, 'Ждем запроса на СМС',
                                     self.pid)
                            post_status(self.post_url, self.aid, 3,
                                        'Ждем запроса на СМС', self.log,
                                        self.bad_log)
                    else:
                        if last_state != 6:
                            last_state = 6
                            writelog(
                                self.log, self.aid,
                                'Непонятно чего ждем, похоже aloader сбился',
                                self.pid)
                            stamp = self.aid + '(' + str(
                                self.pid) + ')' + datetime.now().strftime(
                                    "%d-%H:%M:%S")
                            html_log = open(LOG_PATH + stamp + '.html', 'w')
                            html_elem = self.driver.find_element_by_xpath(
                                '//HTML')
                            html_log.write(
                                html_elem.get_attribute('innerHTML'))
                            html_log.close()
                            self.driver.save_screenshot(LOG_PATH + stamp +
                                                        '.png')
                            raise TrasferErrorException
                    ready, x, y = check_select([sys.stdin], [], [], 0)
                    if ready:
                        self.current_stdin = sys.stdin.readline().rstrip()
                if self.current_stdin:
                    bjson = json.loads(self.current_stdin)
                    if bjson['__command']['type'] == 'confirm':
                        try:
                            self.current_stdin = ''
                            writelog(self.log, self.aid,
                                     'Получено СМС: ' + str(bjson), self.pid)
                            data4send = {'t': 'x', 's': smsity['Ввести СМС']}
                            elem = p(d=self.driver, f='p', **data4send)
                            wj(self.driver)
                            for k in range(6):
                                elem.send_keys(Keys.BACKSPACE)
                                wj(self.driver)
                            elem.send_keys(bjson['__command']['value'])
                            wj(self.driver)
                            last_state = 0
                        except Exception as e:
                            writelog(
                                self.log, self.aid,
                                'Ошибка при отправлении СМС: ' + str(bjson),
                                self.pid)
                            #                    data4send = {'t': 'x', 's': '//DIV[@class="confirmation-modal__body"]'}
                            #                    sms_window = p(d=self.driver, f='p', **data4send)
                            #                    sms_window_htm = '\n-------- окошко запроса пароля --------\n' +\
                            #                                      sms_window.get_attribute('innerHTML')
                            sms_window_htm = ''
                            writelog(
                                self.bad_log, self.aid,
                                'Ошибка при отправлении СМС: ' + str(bjson) +
                                sms_window_htm, self.pid)
                            post_status(
                                self.post_url, self.aid, 5,
                                'Ошибка при отправлении СМС, повторите отправку '
                                'той же СМС', self.log, self.bad_log)
                    elif bjson['__command']['type'] == 'retry':
                        try:
                            self.current_stdin = ''
                            writelog(
                                self.log, self.aid,
                                'Получена заявка на запрос СМС: ' + str(bjson),
                                self.pid)
                            data4send = {
                                't': 'x',
                                's': smsity['Запросить пароль повторно']
                            }
                            elem = p(d=self.driver, f='c', **data4send)
                            wj(self.driver)
                            elem.click()
                            time.sleep(2)
                        except Exception as e:
                            writelog(
                                self.log, self.aid,
                                'Ошибка при запросе повторной СМС: ' +
                                str(bjson), self.pid)
                            #                    data4send = {'t': 'x', 's': '//DIV[@class="confirmation-modal__body"]'}
                            #                    sms_window = p(d=self.driver, f='p', **data4send)
                            #                    sms_window_htm = '\n-------- окошко запроса пароля --------\n' +\
                            #                                      sms_window.get_attribute('innerHTML')
                            sms_window_htm = ''
                            writelog(
                                self.bad_log, self.aid,
                                'Ошибка при запросе повторной СМС: ' +
                                str(bjson) + sms_window_htm, self.pid)
                            post_status(
                                self.post_url, self.aid, 5,
                                'Ошибка при запросе повторной СМС, повторите запрос',
                                self.log, self.bad_log)
                    elif bjson['__command']['type'] == 'kill':
                        self.current_stdin = ''
                        raise KillException

                if datetime.now() - sms_start_time > timedelta(
                        minutes=ALOADER_TIMEOUT):
                    raise ServerTimeOutException
        else:
            if loading:
                raise TrasferErrorException
            else:
                post_status(self.post_url, self.aid, 5,
                            'Ошибка, повторите отправку', self.log,
                            self.bad_log)
                writelog(self.log, self.aid, 'Вылетел с неизвестной ошибкой',
                         self.pid)
示例#9
0
文件: anketa.py 项目: dekarh/anketa
QUESTIONS = [
    'financial_state', 'financial_strategy', 'savings_strategy',
    'savings_state', 'savings_target', 'savings_method', 'savings_insurance',
    'personal_credit', 'personal_credit_debt', 'personal_accounting',
    'savings_safest_method', 'savings_profitable_method', 'product_analytics',
    'mlm_awareness', 'insurance_state', 'pension_awareness',
    'pension_contract', 'pension_payments_awareness',
    'information_reliable_source', 'secured_rights', 'secured_rights_police',
    'financial_education_level', 'financial_education_sufficient',
    'financial_education_update', 'education_conference',
    'education_conference_theme', 'information_source_list',
    'financial_subject_school'
]

cfg = read_config(filename='anketa.ini', section='postgresql')
conn = psycopg2.connect(**cfg)
cursor = conn.cursor()
cursor.execute(
    'select ac.id, ac.lastname, ac.name, ac.middlename, di.title from account as ac '
    'left join division as di on ac.division_id = di.id;')
agents = {}
for row in cursor:
    agents[row[0]] = row
agents_descriptions = {}
for i, description in enumerate(cursor.description):
    agents_descriptions[description.name] = i
cursor.close()
conn.close()

wb = openpyxl.load_workbook(filename='agents.xlsx', read_only=True)
示例#10
0
def main():
    config = read_config()
    write_file(config)
示例#11
0
    sys.exit()
elif not sys.argv[1].endswith('.xlsx'):
    print(datetime.now().strftime("%H:%M:%S"),
          'В командной строке не указан файл Excel')
    sys.exit()
wb = openpyxl.load_workbook(filename=sys.argv[1], read_only=True)
sheet = wb[wb.sheetnames[0]]
if not sheet.max_row:
    print(
        datetime.now().strftime("%H:%M:%S"),
        'Файл Excel некорректно сохранен OpenPyxl. Откройте и пересохраните его'
    )
    sys.exit()
keys = {}
last_cell = 0
dbconfig = read_config(filename='move.ini', section='mysql')
dbconn = MySQLConnection(**dbconfig)
cursor = dbconn.cursor()
#big_string = ''
tuples_contracts = []
for j, row in enumerate(sheet.rows):
    if j == 0:
        for k, cell in enumerate(row):  # Проверяем, чтобы был client_id
            if str(cell.value).upper() in IN_IDS:
                keys[IN_IDS[0]] = k
        if len(keys) > 0:
            for k, cell in enumerate(row):
                for n, name in enumerate(IN_NAMES):
                    if n == 0:
                        continue
                    if cell.value != None:
示例#12
0
                "Невозможно ввести SMS, отправьте заявку в очередь заново",
                log, bad_log)

if DEBUG:
    logging.basicConfig(level=logging.WARNING,
                        format="%(asctime)s:%(levelname)s:%(message)s")
else:
    logging.basicConfig(level=logging.WARNING,
                        filename='warnings.log',
                        format="%(asctime)s:%(levelname)s:%(message)s")

logging.warning('Загружен abalancer ' + VERSION)
aloader = os.path.join(os.path.dirname(__file__), "aloader.py")
log = open(LOG_PATH + LOG_FILE, 'a')
bad_log = open(LOG_PATH + BAD_TRANSACTION_LOG_FILE, 'a')
post_api = read_config(filename='alfa.ini', section='postAPI')
post_url = post_api['url']

procs = {}

rabbituser = read_config(filename='alfa.ini', section='RabbitUser')
rabbiturl = read_config(filename='alfa.ini', section='RabbitUrl')

credentials = pika.PlainCredentials(**rabbituser)
parameters = pika.ConnectionParameters(credentials=credentials, **rabbiturl)
connection = pika.BlockingConnection(parameters=parameters)
channel = connection.channel()

#channel.queue_declare(queue='alfabank_100', durable=True)
logging.warning(' [*] Waiting for messages. To exit press CTRL+C')
示例#13
0
            print(
                args.file, ' - файл отсутствует или не .xlsx '
                'Укажите путь и имя существующего .xlsx (Excel-2007) файла')
            sys.exit()
    if args.dir != '.':
        if not os.path.exists(args.dir):
            print(
                args.dir,
                ' - директория отсутствует. Укажите путь к существующей директории'
            )
            sys.exit()

    # Создаем директории загруженных файлов-логов для всех продуктов
    for product in PRODUCTS:
        if not os.path.exists('loaded' + product.upper() + '/'):
            os.mkdir('loaded' + product.upper() + '/')

    # подключаемся к серверу
    cfg = read_config(filename='status.ini', section='Mongo')
    conn = MongoClient('mongodb://' + cfg['user'] + ':' + cfg['password'] +
                       '@' + cfg['ip'] + ':' + cfg['port'] + '/' + cfg['db'])
    # выбираем базу данных
    db = conn.saturn_v
    # выбираем коллекцию документов db.Products

    # Вызываем функцию с именем модуля
    locals()[locals()['args'].product](args.product,
                                       db.Products,
                                       args.dir,
                                       file=args.file)
示例#14
0
now = datetime.datetime.now()
if now.timetuple().tm_hour < 10 or now.timetuple().tm_hour > 21:
    #    print(datetime.datetime.now().strftime("%H:%M:%S") + ' Не рабочее время. Работа скрипта окончена')
    sys.exit()

processes = subprocess.check_output(["ps", "x"]).decode().split('\n')
tink_processes = 0
for process in processes:
    if process.find('python3 tink.py') > -1:
        tink_processes += 1

if tink_processes > 8:
    #    print(datetime.datetime.now().strftime("%H:%M:%S") + ' Слишком много процессов. Работа скрипта окончена')
    sys.exit()

webconfig = read_config(filename='tink.ini', section='web')
fillconfig = read_config(filename='tink.ini', section='fill')
dbconfig = read_config(filename='tink.ini', section='mysql')

## Формируем SQL
main_sql = 'SELECT '
for i, inp_i in enumerate(clicktity):
    if str(type(clicktity[inp_i]
                ['SQL'])) == "<class 'str'>" and clicktity[inp_i]['SQL'] != '':
        main_sql += clicktity[inp_i]['SQL'] + ','

for i, inp_i in enumerate(inputtity):
    if str(type(inputtity[inp_i]
                ['SQL'])) == "<class 'str'>" and inputtity[inp_i]['SQL'] != '':
        main_sql += inputtity[inp_i]['SQL'] + ','
示例#15
0
    services, browser = pychromecast.discovery.discover_chromecasts()
    pychromecast.discovery.stop_discovery(browser)
    chromecasts, browser = pychromecast.get_listed_chromecasts(
        friendly_names=[friendly_name])
    cast = chromecasts[0]
    cast.wait()
    mc = cast.media_controller
    mc.play_media(url, "audio/mpeg")
    mc.block_until_active()


def read_alarm():
    with open("alarm.json") as f:
        alarm = load(f)
    return alarm


if __name__ == "__main__":
    config = read_config()
    alarm = read_alarm()
    now = datetime.now()

    if not alarm["alarm"]:
        exit(0)

    if (now.year == alarm["year"] and now.month == alarm["month"]
            and now.day == alarm["day"] and now.hour == alarm["hour"]
            and now.minute == alarm["minute"]):
        print("Running alarm!")
        play_sound(config["url"], config["friendly_name"])
示例#16
0
           "СМОЛЕНСКАЯ ОБЛАСТЬ","СТАВРОПОЛЬСКИЙ КРАЙ","ТАМБОВСКАЯ ОБЛАСТЬ","ТВЕРСКАЯ ОБЛАСТЬ","ТОМСКАЯ ОБЛАСТЬ",
           "ТУЛЬСКАЯ ОБЛАСТЬ","ТЮМЕНСКАЯ ОБЛАСТЬ","УДМУРТСКАЯ РЕСПУБЛИКА","УЛЬЯНОВСКАЯ ОБЛАСТЬ","ХАБАРОВСКИЙ КРАЙ",
           "ХАНТЫ-МАНСИЙСКИЙ АВТОНОМНЫЙ ОКРУГ - ЮГРА","ЧЕЛЯБИНСКАЯ ОБЛАСТЬ","ЧУВАШСКАЯ РЕСПУБЛИКА",
           "ЧУКОТСКИЙ АВТОНОМНЫЙ ОКРУГ","ЯМАЛО-НЕНЕЦКИЙ АВТОНОМНЫЙ ОКРУГ","ЯРОСЛАВСКАЯ ОБЛАСТЬ","КУРГАНСКАЯ ОБЛАСТЬ"]

def chuvak(is_chuvak):
    if s(is_chuvak).find('ЧУВАШСКАЯ') > -1:
        return 'ЧУВАШСКАЯ'
    elif s(is_chuvak).find('САХА') > -1:
        return 'САХА'
    elif s(is_chuvak).find('КУЗБАСС') > -1:
        return 'КЕМЕРОВСКАЯ'
    else:
        return is_chuvak

dbconfig_ops = read_config(filename='halva.ini', section='SaturnOPS')
dbconn_ops = MySQLConnection(**dbconfig_ops)

dbconfig_fin = read_config(filename='halva.ini', section='SaturnFIN')
dbconn_fin = MySQLConnection(**dbconfig_fin)

has_ph = []
cursor_chk = dbconn_fin.cursor()
cursor_chk.execute('SELECT phone FROM sovcombank_products WHERE inserted_date > %s GROUP BY phone',
                   (datetime.now() - relativedelta.relativedelta(months=3),))
#cursor_chk.execute('SELECT phone FROM sovcombank_products GROUP BY phone')
rows = cursor_chk.fetchall()
for row in rows:
    has_ph.append(row[0])
has_phones = tuple(has_ph)
from subprocess import *
import time

from lib import read_config

if __name__ == '__main__':
    config = read_config('config.yaml')

    runners = {}
    for k, v in config['runners'].items():
        runners[k] = v['cmd']

    for r in config['runs']:
        if r in runners:
            cmd = runners[r]
            print('\n\n[RUN COMMAND]: {}'.format(cmd))
            cmds = cmd.split(' ')
            run(cmds)
            time.sleep(0.25)
        else:
            err_str = "Invalid runner found in runs section of config.yaml: {}".format(
                r)
            raise RuntimeError(err_str)