test ferst

This commit is contained in:
jze9
2026-05-13 19:05:07 +05:00
commit 0ac1c8a862
33 changed files with 3702 additions and 0 deletions

76
web/views/login.py Normal file
View File

@@ -0,0 +1,76 @@
import flet as ft
import designer as d
import api_client as api
class LoginView:
def __init__(self, page: ft.Page):
self.page = page
self._username = d.text_field("Логин", prefix_icon=ft.icons.PERSON_OUTLINE)
self._password = d.text_field("Пароль", password=True, prefix_icon=ft.icons.LOCK_OUTLINE)
self._error = ft.Text("", color=d.ERROR, size=13)
self._btn = d.btn_primary("Войти", on_click=self._on_login, width=280)
def build_page_view(self) -> ft.View:
self._username.on_submit = self._on_login
self._password.on_submit = self._on_login
form = ft.Container(
content=ft.Column(
[
ft.Icon(ft.icons.NEWSPAPER, size=56, color=d.PRIMARY),
d.headline("Новостная CMS", size=24),
d.caption("Войдите в панель управления", color=d.TEXT_SECONDARY),
ft.Divider(height=20, color="transparent"),
self._username,
self._password,
self._error,
ft.Divider(height=8, color="transparent"),
self._btn,
],
horizontal_alignment=ft.CrossAxisAlignment.CENTER,
spacing=14,
width=320,
),
bgcolor=d.SURFACE,
border_radius=16,
padding=40,
shadow=ft.BoxShadow(blur_radius=24, color=ft.colors.with_opacity(0.10, ft.colors.BLACK)),
)
return ft.View(
route="/admin/login",
bgcolor=d.BACKGROUND,
controls=[
ft.Container(
content=form,
alignment=ft.alignment.center,
expand=True,
)
],
vertical_alignment=ft.MainAxisAlignment.CENTER,
horizontal_alignment=ft.CrossAxisAlignment.CENTER,
)
async def _on_login(self, e=None):
self._error.value = ""
username = self._username.value.strip()
password = self._password.value.strip()
if not username or not password:
self._error.value = "Заполните все поля"
self.page.update()
return
self._btn.disabled = True
self.page.update()
token = await api.admin_login(username, password)
self._btn.disabled = False
if token:
self.page.session.set("token", token)
self.page.session.set("username", username)
self.page.go("/admin")
else:
self._error.value = "Неверный логин или пароль"
self.page.update()