import flet as ft from designer import color, Button, Text, DataPicer, DataGrid, DownList, Field, Loger,Observer from user_data import User_data import pydantic as pd import datetime import json class Add_new_data(ft.View): def __init__(self, page: ft.Page): self.data_grid = DataGrid(page=page) self.creation_time = datetime.datetime.today() super().__init__( route="/add_new_data", bgcolor=color[2], controls=[ ft.Column( controls=[ ft.Container( padding=ft.padding.all(20), border_radius=ft.border_radius.all(10), height=70, expand=True, bgcolor=color[3], content=ft.Row( expand=True, controls=[ Button(text="профиль"), Button(text="мои данные"), Button(text="заполнить данные"), ] ) ), ft.Container( content=ft.Row( scroll=True, controls=[ ft.Column( controls=[ self.data_grid, Button(text="+", on_click=self.data_grid.add_new_row), Button(text="сохранить", on_click=self.open_data_picer), ] ), ] ), ), ] ) ] ) def send_data_to_api(self, save_data, api_url: str): import requests headers = {'Content-Type': 'application/json'} response = requests.post(api_url, headers=headers, data=json.dumps(save_data)) return response def validdate(self, item, column): columns = {} count_void = 0 icol = 1 current_time = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S") columns[column[icol]] = current_time icol += 1 columns[column[icol]] = str(self.creation_time.strftime("%Y-%m-%d")) icol += 1 columns[column[icol]] = User_data.name_poo icol += 1 columns[column[icol]] = "test" icol += 1 for cell in item.cells: print(f"{icol}") if isinstance(cell.content, DownList): if cell.content.view_text.value == "": Loger(text="строку с пустыми выподающими списками") break elif cell.content._id_ != -1: columns[column[icol]] = Observer.inn_manufacturing_enterprises["inn"][cell.content._id_] icol += 1 columns[column[icol]] = cell.content.view_text.value else: columns[column[icol]] = cell.content.view_text.value elif isinstance(cell.content, Field): if cell.content.value == "": columns[column[icol]] = "0" else: columns[column[icol]] = cell.content.value icol += 1 return columns def handle_change(self, e): self.creation_time = e.control.value self.save_data() def handle_dismissal(self, e): pass def open_data_picer(self, e): self.page.open( DataPicer(creation_time=self.creation_time, handle_change=self.handle_change, handle_dismissal=self.handle_dismissal) ) def save_data(self): temp = self.data_grid.return_data() column = self.data_grid.column_name rows = [] for item in temp: rows.append(self.validdate(item=item, column=column)) print(f"{rows=}") table_name = "Сollection_form_opk" api_url = f'http://localhost:8001/api-data-base/insert_table' save_data_instance = { "data": rows } response = self.send_data_to_api(save_data_instance, api_url) if response.status_code == 200: print("Данные успешно отправлены") else: print(f"Ошибка при отправке данных: {response.status_code}")