Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion db/models/invitation.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
from tortoise.fields import OnDelete

from db.models.base import TimestampedModel, UuidModel
from utils.role import Role
from utils.enums import Role


class Invitation(TimestampedModel, UuidModel):
Expand Down
2 changes: 1 addition & 1 deletion db/models/participation.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
from tortoise import fields

from utils.role import Role
from utils.enums import Role

from .base import TimestampedModel, UuidModel

Expand Down
58 changes: 44 additions & 14 deletions handlers/admin/campaign_list.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,11 @@
from aiogram import Router
from aiogram.types import CallbackQuery
from aiogram_dialog import Dialog, DialogManager, Window
from aiogram_dialog.widgets.kbd import Button, ScrollingGroup, Select, Start
from aiogram_dialog.widgets.kbd import Button, Row, ScrollingGroup, Select
from aiogram_dialog.widgets.text import Const, Format

from db.models.participation import Participation
from utils.enums import Mode
from utils.redirect import redirect

from . import states
Expand All @@ -22,8 +23,24 @@
# === Гетеры ===
async def get_campaigns_data(dialog_manager: DialogManager, **kwargs):
user: User = dialog_manager.middleware_data["user"]
campaigns = await Participation.filter(user=user).prefetch_related("campaign").all()
return {"campaigns": campaigns, "is_admin": user.admin, "has_campaigns": len(campaigns) > 0}
if "current_mode" not in dialog_manager.dialog_data:
value = Mode.Base
if user.admin:
value = Mode.Academy
dialog_manager.dialog_data["current_mode"] = value

campaigns = (
await Participation.filter(user=user)
.prefetch_related("campaign")
.filter(campaign__verified=dialog_manager.dialog_data["current_mode"] == Mode.Academy)
.all()
)
return {
"campaigns": campaigns,
"is_admin": user.admin,
"has_campaigns": len(campaigns) > 0,
"view_mode": f"(режим {dialog_manager.dialog_data['current_mode']})" if user.admin else "",
}


# === Кнопки ===
Expand All @@ -43,9 +60,20 @@ async def on_campaign_selected(
)


async def on_crete_campaign(msg: CallbackQuery, wdg: Button, mng: DialogManager):
await mng.start(
state=states.CreateCampaign.select_title, data={"verified": mng.dialog_data.get("mode") == Mode.Academy}
)


async def on_change_mode(msg: CallbackQuery, wdg: Button, mng: DialogManager):
mng.dialog_data["current_mode"] = Mode.Academy if mng.dialog_data.get("current_mode") == Mode.Base else Mode.Base
await mng.show()


# === Окна ===
campaign_list_window = Window(
Const("🏰 Ваши кампании\n\n"),
Format("🏰 Ваши кампании {view_mode}\n\n"),
Const(
"У вас пока нет доступных кампаний",
when=lambda data, widget, dialog_manager: not data.get("has_campaigns", False),
Expand All @@ -64,16 +92,18 @@ async def on_campaign_selected(
height=5,
id="campaigns",
),
Start(
Const("➕ Создать новую"),
id="create_campaign",
state=states.CreateCampaign.select_title,
),
Button(
Const("➕ Создать новую (Для академии)"),
id="create_verified_campaign",
on_click=lambda c, b, d: d.start(states.CreateCampaign.select_title, data={"verified": True}),
when="is_admin",
Row(
Button(
Const("➕ Создать новую"),
id="create_verified_campaign",
on_click=on_crete_campaign,
),
Button(
Const("🔀 Сменить режим"),
id="change_mode",
on_click=on_change_mode,
when="is_admin",
),
),
state=states.CampaignList.main,
getter=get_campaigns_data,
Expand Down
2 changes: 1 addition & 1 deletion handlers/admin/campaign_manage.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@

from db.models.campaign import Campaign
from db.models.participation import Participation
from utils.role import Role
from utils.enums import Role

from . import states

Expand Down
2 changes: 1 addition & 1 deletion handlers/admin/character_management.py
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@
from services.settings import settings
from utils.character import CharacterData as CharData
from utils.character import parse_character_data
from utils.role import Role
from utils.enums import Role

from . import states

Expand Down
2 changes: 1 addition & 1 deletion handlers/admin/create_campaign.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
from db.models.campaign import Campaign
from db.models.participation import Participation
from services.settings import settings
from utils.role import Role
from utils.enums import Role

from . import states

Expand Down
2 changes: 1 addition & 1 deletion handlers/admin/edit_campaign.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
from db.models.campaign import Campaign
from db.models.participation import Participation
from services.settings import settings
from utils.role import Role
from utils.enums import Role

from . import states

Expand Down
2 changes: 1 addition & 1 deletion handlers/admin/invitation.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,8 @@
from db.models.user import User
from services.invitation import handle_accept_invitation, invitation_getter
from services.settings import settings
from utils.enums import Role
from utils.invitation import generate_link, generate_qr
from utils.role import Role

from . import states

Expand Down
2 changes: 1 addition & 1 deletion handlers/admin/manage_master.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
from db.models.campaign import Campaign
from db.models.participation import Participation
from services.settings import settings
from utils.role import Role
from utils.enums import Role

from . import states

Expand Down
2 changes: 1 addition & 1 deletion services/campaigns.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
from aiogram_dialog.api.entities import MediaAttachment

from db.models import Campaign, Participation
from utils.role import Role
from utils.enums import Role


async def campaign_getter(dialog_manager: DialogManager, **kwargs):
Expand Down
2 changes: 1 addition & 1 deletion services/invitation.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@
from aiogram_dialog import DialogManager

from db.models import Invitation, Participation, User
from utils.enums import Role
from utils.invitation import get_invite_id
from utils.role import Role

from .settings import settings

Expand Down
14 changes: 14 additions & 0 deletions utils/enums.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
import enum


class Role(enum.IntEnum):
PLAYER = 0
MASTER = 1
OWNER = 2


class Mode(enum.StrEnum):
"""Режим работы основного меня admin бота"""

Base = "Базовый"
Academy = "Академия"
2 changes: 1 addition & 1 deletion utils/invitation.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@

from db.models import Invitation
from services.settings import settings
from utils.role import Role
from utils.enums import Role


async def generate_link(invitation: Invitation) -> str:
Expand Down
7 changes: 0 additions & 7 deletions utils/role.py

This file was deleted.