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 удаленного устройства, если с ним есть какие-то проблемы (нечитаемые буквы), попробуйте изменить его кодировку')
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() # обновление страницы
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
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('Файл успешно загружен')
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
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
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