Untitled
4ae4d
plain_text
4 months ago
7.0 kB
5
Indexable
diff --git a/src/bot/core/handlers/events_filters.py b/src/bot/core/handlers/events_filters.py
index 443c4e0..9f4368f 100644
--- a/src/bot/core/handlers/events_filters.py
+++ b/src/bot/core/handlers/events_filters.py
@@ -112,9 +112,16 @@ def events_filters_open_handler(
flt = get_events_filter(context, ctx_name=ctx_name)
summary = format_events_filter_summary(flt)
+ locked_mode = _locked_mode_for_ctx(ctx_name)
+ locked_note = ""
+ if locked_mode == "participant":
+ locked_note = "\n\n🔒 Режим зафиксирован: *участник*"
+ elif locked_mode == "organizer":
+ locked_note = "\n\n🔒 Режим зафиксирован: *организатор*"
+
bot.messaging.send_message(
peer=event.peer,
- text=f"🧰 *Фильтры*\n\n{summary}\n\nВыбери, что изменить:",
+ text=f"🧰 *Фильтры*\n\n{summary}{locked_note}\n\nВыбери, что изменить:",
interactive_media_groups=events_filters_menu_keyboard(ctx_name=ctx_name, offset=offset),
)
@@ -132,9 +139,17 @@ def events_filters_reset_handler(
# остаёмся в меню, чтобы пользователь видел что “сбросилось”
flt = get_events_filter(context, ctx_name=ctx_name)
summary = format_events_filter_summary(flt)
+
+ locked_mode = _locked_mode_for_ctx(ctx_name)
+ locked_note = ""
+ if locked_mode == "participant":
+ locked_note = "\n\n🔒 Режим зафиксирован: *участник*"
+ elif locked_mode == "organizer":
+ locked_note = "\n\n🔒 Режим зафиксирован: *организатор*"
+
bot.messaging.send_message(
peer=event.peer,
- text=f"🧰 *Фильтры*\n\n{summary}\n\nВыбери, что изменить:",
+ text=f"🧰 *Фильтры*\n\n{summary}{locked_note}\n\nВыбери, что изменить:",
interactive_media_groups=events_filters_menu_keyboard(ctx_name=ctx_name, offset=offset),
)
diff --git a/src/bot/core/handlers/events_ui.py b/src/bot/core/handlers/events_ui.py
index 56de814..6b537fe 100644
--- a/src/bot/core/handlers/events_ui.py
+++ b/src/bot/core/handlers/events_ui.py
@@ -257,8 +257,8 @@ def send_city_events_page(
flt = get_events_filter(context, ctx_name=ctx_name) if context is not None else None
summary = format_events_filter_summary(flt) if context is not None else None
- only_organizer: bool = ctx_name == "moderation"
- lock_mode: bool = ctx_name == "moderation"
+ only_organizer: bool = False
+ lock_mode: bool = False
page_events, has_prev, has_next, total = fetch_events_page(
event_service=event_service,
@@ -299,7 +299,11 @@ def send_part_events_page(
limit = EVENTS_PAGE_SIZE
flt = get_events_filter(context, ctx_name="part_events") if context is not None else None
- summary = format_events_filter_summary(flt) if context is not None else None
+ summary = (
+ format_events_filter_summary(flt, locked_mode="participant")
+ if context is not None
+ else None
+ )
page_events, has_prev, has_next, total = fetch_events_page(
event_service=event_service,
@@ -345,7 +349,11 @@ def send_points_page(
points_total = "?"
flt = get_events_filter(context, ctx_name="points") if context is not None else None
- summary = format_events_filter_summary(flt) if context is not None else None
+ summary = (
+ format_events_filter_summary(flt, locked_mode="participant")
+ if context is not None
+ else None
+ )
page_events, has_prev, has_next, total = fetch_events_page(
event_service=event_service,
@@ -393,7 +401,9 @@ def send_my_events_page(
limit = EVENTS_PAGE_SIZE
flt = get_events_filter(context, ctx_name="my_events") if context is not None else None
- summary = format_events_filter_summary(flt) if context is not None else None
+ summary = (
+ format_events_filter_summary(flt, locked_mode="organizer") if context is not None else None
+ )
page_events, has_prev, has_next, total = fetch_events_page(
event_service=event_service,
diff --git a/src/bot/core/markups/events_filters.py b/src/bot/core/markups/events_filters.py
index 8163e01..444fc1f 100644
--- a/src/bot/core/markups/events_filters.py
+++ b/src/bot/core/markups/events_filters.py
@@ -19,12 +19,19 @@ def events_filters_menu_keyboard(*, ctx_name: str, offset: int) -> list[Interact
Button(media_id="events_filters_city", value=v, label="🏙️ Город"),
]
).build()
- mid = MediaGroupBuilder(
- [
- Button(media_id="events_filters_date", value=v, label="🗓️ Дата/время"),
- Button(media_id="events_filters_mode", value=v, label="🎛️ Режим"),
- ]
- ).build()
+
+ if ctx_name == "part_events":
+ mid = MediaGroupBuilder(
+ [Button(media_id="events_filters_date", value=v, label="🗓️ Дата/время")]
+ ).build()
+ else:
+ mid = MediaGroupBuilder(
+ [
+ Button(media_id="events_filters_date", value=v, label="🗓️ Дата/время"),
+ Button(media_id="events_filters_mode", value=v, label="🎛️ Режим"),
+ ]
+ ).build()
+
bottom = MediaGroupBuilder(
[
Button(media_id="events_filters_apply", value=v, label="✅ Применить"),
diff --git a/src/bot/core/utils/events_filter.py b/src/bot/core/utils/events_filter.py
index 80f0903..64320cf 100644
--- a/src/bot/core/utils/events_filter.py
+++ b/src/bot/core/utils/events_filter.py
@@ -153,20 +153,29 @@ def build_events_search_params(
return params
-def format_events_filter_summary(flt: EventsFilter | None) -> str:
+def format_events_filter_summary(
+ flt: EventsFilter | None,
+ *,
+ locked_mode: EventsMode | None = None,
+) -> str:
f = flt or EventsFilter()
parts: list[str] = []
+ eff_mode: EventsMode = (
+ locked_mode if locked_mode in ("all", "participant", "organizer") else f.mode
+ )
+ suffix = " (заблокирован)" if locked_mode in ("participant", "organizer") else ""
+
if f.tag_names:
names = [str(x).strip() for x in f.tag_names if str(x).strip()]
parts.append("теги: " + ", ".join(names))
elif f.tag_ids:
parts.append(f"теги: {len(f.tag_ids)}")
- if f.mode == "participant":
- parts.append("режим: участвую")
- elif f.mode == "organizer":
- parts.append("режим: организую")
+ if eff_mode == "participant":
+ parts.append("режим: участвую" + suffix)
+ elif eff_mode == "organizer":
+ parts.append("режим: организую" + suffix)
if f.city_id:
if f.city_name:
Editor is loading...
Leave a Comment