This commit is contained in:
jze9
2025-04-01 23:27:36 +05:00
commit 4c72b79e86
49 changed files with 19305 additions and 0 deletions

121
app/pages/add_new_data.py Normal file
View File

@@ -0,0 +1,121 @@
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}")

View File

@@ -0,0 +1,20 @@
import flet as ft
import designer as des
class Add_user_data(ft.View):
def __init__(self,page:ft.Page,route:str=""):
super().__init__(
bgcolor=des.color[2],
route=route,
controls=[
ft.Column(
controls=[
ft.Row(
controls=[
]
)
]
)
]
)

80
app/pages/login.py Normal file
View File

@@ -0,0 +1,80 @@
import flet as ft
from designer import Field, color, Button, Loger, JsonJober
import requests
class Login(ft.Column):
def __init__(self, page: ft.Page = None):
self.page = page
self.login = Field(label="Login"),
self.password = Field(label="Password", password=True)
super().__init__(
horizontal_alignment=ft.CrossAxisAlignment.CENTER,
expand=True,
controls=[
ft.Row(
alignment=ft.MainAxisAlignment.CENTER,
controls=[
ft.Text(color=color[1], size=42, value="Copp")
]
),
ft.Row(
alignment=ft.MainAxisAlignment.CENTER,
controls=[
self.login[0]
]
),
ft.Row(
alignment=ft.MainAxisAlignment.CENTER,
controls=[
self.password
]
),
ft.Row(
alignment=ft.MainAxisAlignment.CENTER,
controls=[
Button(text="Enter", on_click=self.enter_go_to_next_page)
]
)
]
)
def Load_user_inf(self, response):
from user_data import User_data as ud
if response is not None:
# Используем .get() для безопасного доступа к ключам
ud.id = response.get("id")
ud.inn = response.get("inn") # Если ключ 'inn' отсутствует, будет None
ud.name_poo = response.get("name_poo")
ud.mail = response.get("mail")
ud.suggestions = JsonJober.read_json(ud.path_json)
print(f"{ud.id=}, {ud.inn=}, {ud.name_poo=}, {ud.mail=}")
else:
print("Ошибка: Пустой ответ от сервера")
def enter_go_to_next_page(self, e):
url = "http://localhost:8000/api/api/login"
data = {
"login": self.login[0].value,
"password": self.password.value
}
try:
response = requests.post(url, json=data)
if response.status_code == 200:
# Получаем JSON-данные из ответа
response_data = response.json() # Используем метод .json() для извлечения данных
# Проверяем сообщение в ответе
if response_data.get("message") == "Авторизация успешна.":
user = response_data.get("user") # Достаем пользователя из ответа
if user.get("id") == 0:
self.page.open(Loger(text="Неверные данные"))
else:
self.Load_user_inf(response=user)
self.page.go("/user_info")
elif response_data.get("message") == "Неверные данные":
self.page.open(Loger(text="Неверные данные"))
else:
print("Ошибка:", response.status_code, response.text)
except requests.exceptions.RequestException as e:
print(f"Ошибка запроса: {e}")

32
app/pages/my_data.py Normal file
View File

@@ -0,0 +1,32 @@
import flet as ft
import designer as des
class My_data(ft.View):
def __init__(self,page:ft.Page,route:str="/my_data"):
super().__init__(
bgcolor=des.color[2],
route=route,
controls=[
ft.Column(
controls=[
ft.Container(
padding=ft.padding.all(20),
border_radius=ft.border_radius.all(10),
height=70,
expand=True,
bgcolor=des.color[3],
content=ft.Row(
expand=True,
controls=[
des.Button(text="профиль"),
des.Button(text="мои данные",on_click = self.go_to_my_data),
des.Button(text="заполнить данные", on_click=self.go_to_data),
]
)
),
]
)
]
)

5
app/pages/test.py Normal file
View File

@@ -0,0 +1,5 @@
import flet as ft
import designer as ds
import requests
from user_data import User_data as ud

48
app/pages/user_info.py Normal file
View File

@@ -0,0 +1,48 @@
import flet as ft
from designer import color, Button,Text
from user_data import User_data
class User_info(ft.View):
def __init__(self, page:ft.Page):
super().__init__(
route="/user_info",
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="мои данные",on_click = self.go_to_my_data),
Button(text="заполнить данные", on_click=self.go_to_data),
]
)
),
ft.Container(
expand=True,
content=ft.Column(
controls=[
ft.Row(controls=[Text(value="Имя ПОО"),Text(value=User_data.name_poo)]),
ft.Row(controls=[Text(value="ИНН"),Text(value=User_data.inn)]),
ft.Row(controls=[Text(value="Mail"),Text(value=User_data.mail)])
]
)
)
]
)
]
)
def go_to_info(self,e):
self.page.go("/user_info")
def go_to_my_data(self,e):
self.page.go("/my_data")
def go_to_data(self,e):
self.page.go("/add_new_data")