After Graduate Update

This commit is contained in:
Daniel 2025-11-26 19:31:33 +03:00
parent b92a91ab37
commit c6917dd85e
69 changed files with 7540 additions and 0 deletions

View file

@ -0,0 +1,94 @@
from PyQt6.QtWidgets import (
QWidget,
QLabel,
QFormLayout,
QPushButton,
QMessageBox,
QLineEdit,
QVBoxLayout,
)
from PyQt6.QtCore import Qt
from res.colors import ACCENT_COLOR, SECONDARY_COLOR, ACCENT_COLOR_HOVER
from res.fonts import MAIN_FONT
class AuthPage(QWidget):
def __init__(self):
super().__init__()
self.setup_window()
self.init_ui()
self.set_styles()
def setup_window(self):
self.setWindowTitle("Авторизация")
self.setFixedSize(400, 250)
def init_ui(self):
self.main_layout = QVBoxLayout()
self.form_layout: QFormLayout = QFormLayout()
self.title = QLabel("Авторизация")
self.title.setObjectName("title")
self.username_label = QLabel("Логин:")
self.password_label = QLabel("Пароль:")
self.username_input = QLineEdit()
self.password_input = QLineEdit()
self.password_input.setEchoMode(QLineEdit.EchoMode.Password)
self.login_button = QPushButton("Войти")
self.form_layout.addRow(self.username_label, self.username_input)
self.form_layout.addRow(self.password_label, self.password_input)
self.form_layout.addRow(self.login_button)
self.setLayout(self.main_layout)
self.main_layout.addWidget(self.title, alignment=Qt.AlignmentFlag.AlignHCenter)
self.main_layout.addStretch()
self.main_layout.addLayout(self.form_layout)
self.main_layout.addStretch()
self.login_button.clicked.connect(self.handle_login)
def handle_login(self):
username = self.username_input.text()
password = self.password_input.text()
if not username or not password:
QMessageBox.warning(self, "Ошибка", "Пожалуйста, заполните все поля.")
return
from pages.partners_page import PartnersPage
self.partners_page = PartnersPage()
self.partners_page.show()
self.close()
def set_styles(self):
self.setStyleSheet(
"""QLabel { font-size: 16px; font-family: %(MAIN_FONT)s}
#title {
font-size: 24px;
font-weight: bold;
color: %(ACCENT_COLOR)s;
}
QPushButton {
background-color: %(ACCENT_COLOR)s;
border: 1px solid black;
color: %(SECONDARY_COLOR)s;
font-weight: bold;
padding: 5px;
}
QPushButton:hover {
background-color: %(ACCENT_COLOR_HOVER)s;
}
"""
% {
"ACCENT_COLOR": ACCENT_COLOR,
"SECONDARY_COLOR": SECONDARY_COLOR,
"MAIN_FONT": MAIN_FONT,
"ACCENT_COLOR_HOVER": ACCENT_COLOR_HOVER,
}
)

View file

@ -0,0 +1,130 @@
from PyQt6.QtWidgets import QWidget, QLabel, QVBoxLayout, QScrollArea, QVBoxLayout
from PyQt6.QtCore import Qt
from components.partner_card import PartnerCard, PartnersInfo
from res.colors import ACCENT_COLOR
class PartnersPage(QWidget):
def __init__(self):
super().__init__()
self.setup_window()
self.init_ui()
self.load_partners()
def setup_window(self):
self.setWindowTitle("Партнеры")
self.resize(800, 600)
def init_ui(self):
main_layout = QVBoxLayout()
self.setLayout(main_layout)
# Заголовок
title = QLabel("Партнеры")
title.setObjectName("title")
title.setStyleSheet(
f"""
#title {{
font-size: 24px;
font-weight: bold;
color: {ACCENT_COLOR};
margin-bottom: 20px;
}}
"""
)
main_layout.addWidget(title, alignment=Qt.AlignmentFlag.AlignHCenter)
# Создаем область прокрутки
scroll_area = QScrollArea()
scroll_area.setWidgetResizable(True)
scroll_content = QWidget()
self.partners_layout = QVBoxLayout(scroll_content)
scroll_area.setWidget(scroll_content)
main_layout.addWidget(scroll_area)
def handle_partner_double_click(self, partner_info: PartnersInfo):
from components.edit_partner_dialog import EditPartnerDialog
dialog = EditPartnerDialog(partner_info, self)
dialog.exec()
def load_partners(self):
# Тестовые данные партнеров
test_partners = [
{
"id": 1,
"type_name": "Золотой партнер",
"partner_name": "ООО 'ТехноПрофи'",
"first_name_director": "Иван",
"last_name_director": "Петров",
"middle_name_director": "Сергеевич",
"phone_partner": "+7 (495) 123-45-67",
"rating": 4.8,
"discount": 15.0
},
{
"id": 2,
"type_name": "Серебряный партнер",
"partner_name": "ИП Сидоров А.В.",
"first_name_director": "Алексей",
"last_name_director": "Сидоров",
"middle_name_director": "Викторович",
"phone_partner": "+7 (495) 234-56-78",
"rating": 4.2,
"discount": 10.0
},
{
"id": 3,
"type_name": "Бронзовый партнер",
"partner_name": "ООО 'СтройМастер'",
"first_name_director": "Мария",
"last_name_director": "Иванова",
"middle_name_director": "Олеговна",
"phone_partner": "+7 (495) 345-67-89",
"rating": 3.9,
"discount": 7.5
},
{
"id": 4,
"type_name": "Золотой партнер",
"partner_name": "АО 'ПромИнвест'",
"first_name_director": "Сергей",
"last_name_director": "Козлов",
"middle_name_director": "Анатольевич",
"phone_partner": "+7 (495) 456-78-90",
"rating": 4.9,
"discount": 18.0
},
{
"id": 5,
"type_name": "Стандартный партнер",
"partner_name": "ООО 'ТоргСервис'",
"first_name_director": "Ольга",
"last_name_director": "Смирнова",
"middle_name_director": "Дмитриевна",
"phone_partner": "+7 (495) 567-89-01",
"rating": 3.5,
"discount": 5.0
}
]
# Создаем карточки партнеров на основе тестовых данных
for partner in test_partners:
partner_info = PartnersInfo(
id=partner["id"],
type_name=partner["type_name"],
partner_name=partner["partner_name"],
first_name_director=partner["first_name_director"],
last_name_director=partner["last_name_director"],
middle_name_director=partner["middle_name_director"],
phone_partner=partner["phone_partner"],
rating=partner["rating"],
discount=partner["discount"],
)
# Создаем и добавляем карточку партнера
partner_card = PartnerCard(partner_info)
partner_card.doubleClicked.connect(self.handle_partner_double_click)
self.partners_layout.addWidget(partner_card)
self.partners_layout.addStretch()