After Graduate Update
This commit is contained in:
parent
b92a91ab37
commit
c6917dd85e
69 changed files with 7540 additions and 0 deletions
94
robbery/master_pol-module_1_2/app/pages/auth_page.py
Normal file
94
robbery/master_pol-module_1_2/app/pages/auth_page.py
Normal 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,
|
||||
}
|
||||
)
|
||||
130
robbery/master_pol-module_1_2/app/pages/partners_page.py
Normal file
130
robbery/master_pol-module_1_2/app/pages/partners_page.py
Normal 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()
|
||||
Loading…
Add table
Add a link
Reference in a new issue