Untitled

 avatar
4ae4d
plain_text
4 months ago
7.0 kB
6
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