Exemple #1
0
def download(target, object_type, name):
		global COUNT
		# Файл бинарный, поэтому нужно исп wb
		if (object_type == 'file'):
				f = open('download/' + name, 'wb')
		elif (object_type == 'folder'):
				f = open('download/' + name + '.zip', 'wb')
		elif (object_type == 'screenshot'):
				f = open('download/screenshot_%d.png' % (name), 'wb')
				target.settimeout(2)
				COUNT += 1
		# Чтобы обнаржуить окончание загрузки файла
		# выставляем таймаут
		# Если файл закочится, цикл завершится
		target.settimeout(1)
		chunk = target.recv(1024)
		while chunk:
				f.write(chunk)
				try:
						chunk = target.recv(1024)
				except socket.timeout as e:
						break
		# Выставялем timeout=None, чтобы не было пролем с другими функциями
		target.settimeout(None)
		f.close()
		eel.alert_message('Файл успешно загружен c удаленного устройства, если с ним есть какие-то проблемы (нечитаемые буквы), попробуйте изменить его кодировку')
Exemple #2
0
def bill_delete_python(contract_number, bill_number):
    """удаление счета"""

    bill = session.query(Bill).filter_by(contract_number=contract_number,
                                         bill_number=bill_number).first()
    # print(bill)
    session.delete(bill)
    session.commit()
    print(f'Счет №{bill.bill_number} удален из базы данных.')
    eel.alert_message(f'Счет №{bill.bill_number} удален из базы данных.')
    eel.refresh_contracts_detail()  # обновление страницы
Exemple #3
0
def exists(name):
		if (os.path.exists(name) == False):
				f = open('ERROR_DOESNT_EXIST.txt', 'a+')
				f.write('ERROR FILE or FOLDER DOESNT EXIST')
				f.close()
				f = open('ERROR_DOESNT_EXIST.txt', 'rb')
				target.send(f.read())
				f.close()
				os.remove('ERROR_DOESNT_EXIST.txt')
				eel.alert_message('Такого файла/каталога не существует, был загружен шаблон Ошибки')
				return False
		return True
Exemple #4
0
def upload(target, name):
    # Файл бинарный, поэтому нужно исп rb
		if (exists(name)):
				if (os.path.isdir(name)):
						shutil.make_archive('archive_' + name, 'zip', name)
						f = open('archive_' + name + '.zip', 'rb')
						target.send(f.read())
						f.close()
						os.remove('archive_' + name + '.zip')
				else:
						f = open(name, 'rb')
						target.send(f.read())
						f.close()
				eel.alert_message('Файл успешно загружен')
Exemple #5
0
def add_new_agent(agent_name):
    """
    валидация и запись нового контрагента в БД
    agent_name (str): имя контрагента из формы на стр. agent_add.html
    """

    agent = session.query(Agent).filter_by(name=agent_name).all()

    # проверка на наличие контрагента в базе данных
    if agent:
        eel.alert_message(f'Контрагент "{agent[0].name}" уже сущесвует')
        print(f'Контрагент "{agent[0].name}" уже сущесвует')
        return False

    # валидация имени контрагента
    if agent_name:
        print(agent_name)
        new_agent = Agent(name=agent_name)
        session.add(new_agent)
        session.commit()
        new_agent_id = session.query(Agent).filter_by(
            name=agent_name).first().id
        eel.alert_message(
            f'Добавлен новый контрагент: {agent_name} c id: {new_agent_id}')
        print(f'Добавлен новый контрагент: {agent_name} c id: {new_agent_id}')
    else:
        eel.alert_message(f'Не верное имя агента: {agent_name}')
        print(f'Не верное имя агента: {agent_name}')
        return False
    return True
Exemple #6
0
def add_new_bill(data: dict):
    """
    валидация и добавление нового счета
    data (dict): словарь с данными счета из bill_add.js
    """

    # проверка на заполнение всех полей
    for k, v in data.items():
        if not v:
            eel.alert_message(f'параметр: {k} не заполнен')
            print(f'параметр: {k} не заполнен')
            return False

    # проверяем верно ли указан контрагент
    valid_agent = session.query(Agent).filter_by(
        name=data['agent_name']).first()

    if valid_agent:
        agent_id = int(valid_agent.id)
    else:
        eel.alert_message(
            f"Контрагент '{data['agent_name']}' отсутствует в базе данных")
        print(f"Контрагент '{data['agent_name']}' отсутствует в базе данных")
        return False

    # проверка валидности договора
    contract = session.query(Contract).filter_by(
        agent_id=agent_id, number=data['contract_number']).first()
    # print(contract)

    if contract:
        # проверим вдруг счет с таким номером у данного договора уже есть
        bill_number = data['bill_number']

        if bill_number not in [b.bill_number for b in contract.bills]:
            bill_sum = float(data['bill_sum'])
            act_number = data['act_number']
            act_sum = float(data['act_sum'])
            bill_date = data['bill_date']
            act_date = data['act_date']

            new_bill = Bill(agent_id=agent_id,
                            contract_number=data['contract_number'],
                            bill_number=bill_number,
                            act_number=act_number,
                            bill_sum=bill_sum,
                            act_sum=act_sum,
                            bill_date=bill_date,
                            act_date=act_date)
            session.add(new_bill)
            session.commit()

            eel.alert_message(f'Счет {bill_number} успешно добавлен!')
            print(f'Счет {bill_number} успешно добавлен!')
            return True
        else:
            eel.alert_message('Данный счет уже есть в базе')
            print('Данный счет уже есть в базе')
    else:
        eel.alert_message(
            f"У контрагента {data['agent_name']} нет договора № {data['contract_number']}"
        )
        print(
            f"У контрагента {data['agent_name']} нет договора № {data['contract_number']}"
        )

    return False
Exemple #7
0
def add_contract_into_db(data: dict):
    """
    Запись внесенных на странице contract_add.html данных в БД

    Args:
        data (dict): словарь с данными нового договора

    Returns:
        запись нового договора в БД
    """

    # проверка на заполнение всех полей
    for k, v in data.items():
        if not k or not v:
            print(f'параметр: {k} не заполнен')
            return False

    # валидадция введеного id агента
    agent_query = session.query(Agent).filter_by(name=data['agent_name']).all()
    if agent_query:
        agent_id = agent_query[0].id
        print(f'Выбран контрагент: {agent_query[0].name}, id: {agent_id}')
    else:
        print('Не вероно указано имя контрагента...\n')
        eel.alert_message('Не вероно указано имя контрагента...')
        return False

    # валидация номера договора
    contract_query = session.query(Contract).filter_by(
        agent_id=agent_id, number=data['number']).all()

    if contract_query:
        eel.alert_message(
            f'У контрагента {agent_query[0].name} уже есть договор № {contract_query[0].number}'
        )
        print(
            f'У контрагента {agent_query[0].name} уже есть договор № {contract_query[0].number}'
        )
        return False

    start_year = int(data['date_of_start'].split('.')[2])
    start_month = int(data['date_of_start'].split('.')[1])
    start_day = int(data['date_of_start'].split('.')[0])
    date_of_start = date(start_year, start_month, start_day)

    end_year = int(data['date_of_end'].split('.')[2])
    end_month = int(data['date_of_end'].split('.')[1])
    end_day = int(data['date_of_end'].split('.')[0])
    date_of_end = date(end_year, end_month, end_day)

    validity = (date_of_end - date_of_start).days
    now = datetime.now().date()
    days_passed = (now - date_of_start).days
    days_left = (date_of_end - now).days

    new_contract = Contract(agent_id=agent_id,
                            number=data['number'],
                            description=data['description'],
                            contract_sum=data['contract_sum'],
                            contract_balance=data['contract_sum'],
                            date_of_conclusion=data['date_of_conclusion'],
                            date_of_start=data['date_of_start'],
                            date_of_end=data['date_of_end'],
                            validity=validity,
                            days_passed=days_passed,
                            days_left=days_left)

    session.add(new_contract)
    session.commit()
    eel.alert_message('Новый договор добавлен!')
    # print('Новый договор добавлен!')
    return True