From 9e65e80276aeb33c0f917d005e621a18158fffee Mon Sep 17 00:00:00 2001 From: Ben Sima Date: Tue, 2 Dec 2025 15:51:42 -0500 Subject: Fix Admin.py imports for bild local dep detection - Change 'from Biz.X import Y' to 'import Biz.X as X' style - bild only recognizes 'import X as Y' for local dep detection - Add setuptools to Python deps (required by newer nixpkgs) Amp-Thread-ID: https://ampcode.com/threads/T-fe8328a9-7709-4544-9d31-b099f04aa120 Co-authored-by: Amp --- Biz/PodcastItLater/Admin.py | 73 +++++++++++++++++++++------------------------ 1 file changed, 34 insertions(+), 39 deletions(-) (limited to 'Biz/PodcastItLater/Admin.py') diff --git a/Biz/PodcastItLater/Admin.py b/Biz/PodcastItLater/Admin.py index 3fc6f61..29332df 100644 --- a/Biz/PodcastItLater/Admin.py +++ b/Biz/PodcastItLater/Admin.py @@ -12,48 +12,44 @@ Admin pages and functionality for managing users and queue items. # : dep pytest-asyncio # : dep pytest-mock -# i need to import these unused because bild cannot get local transitive python -# dependencies yet -import Omni.App as App # noqa: F401 -import Omni.Log as Log # noqa: F401 -import Omni.Test as Test # noqa: F401 +import Biz.PodcastItLater.Admin.Handlers as Handlers +import Biz.PodcastItLater.Admin.Views as Views import sys -from Biz.PodcastItLater.Admin.Handlers import admin_metrics -from Biz.PodcastItLater.Admin.Handlers import admin_queue_status -from Biz.PodcastItLater.Admin.Handlers import admin_users -from Biz.PodcastItLater.Admin.Handlers import delete_queue_item -from Biz.PodcastItLater.Admin.Handlers import retry_queue_item -from Biz.PodcastItLater.Admin.Handlers import toggle_episode_public -from Biz.PodcastItLater.Admin.Handlers import update_user_status -# Import all views and handlers from the new modules -from Biz.PodcastItLater.Admin.Views import ActionButtons -from Biz.PodcastItLater.Admin.Views import ActionButtonsAttrs -from Biz.PodcastItLater.Admin.Views import AdminUsers -from Biz.PodcastItLater.Admin.Views import AdminUsersAttrs -from Biz.PodcastItLater.Admin.Views import AdminView -from Biz.PodcastItLater.Admin.Views import AdminViewAttrs -from Biz.PodcastItLater.Admin.Views import EpisodeTableRow -from Biz.PodcastItLater.Admin.Views import EpisodeTableRowAttrs -from Biz.PodcastItLater.Admin.Views import MetricCard -from Biz.PodcastItLater.Admin.Views import MetricCardAttrs -from Biz.PodcastItLater.Admin.Views import MetricsAttrs -from Biz.PodcastItLater.Admin.Views import MetricsDashboard -from Biz.PodcastItLater.Admin.Views import QueueTableRow -from Biz.PodcastItLater.Admin.Views import QueueTableRowAttrs -from Biz.PodcastItLater.Admin.Views import StatusBadge -from Biz.PodcastItLater.Admin.Views import StatusBadgeAttrs -from Biz.PodcastItLater.Admin.Views import TopEpisodesTable -from Biz.PodcastItLater.Admin.Views import TopEpisodesTableAttrs -from Biz.PodcastItLater.Admin.Views import TruncatedText -from Biz.PodcastItLater.Admin.Views import TruncatedTextAttrs -from Biz.PodcastItLater.Admin.Views import UserTableRow -from Biz.PodcastItLater.Admin.Views import UserTableRowAttrs -from Biz.PodcastItLater.Admin.Views import create_table_header +# Re-export all symbols for backward compatibility +ActionButtons = Views.ActionButtons +ActionButtonsAttrs = Views.ActionButtonsAttrs +AdminUsers = Views.AdminUsers +AdminUsersAttrs = Views.AdminUsersAttrs +AdminView = Views.AdminView +AdminViewAttrs = Views.AdminViewAttrs +EpisodeTableRow = Views.EpisodeTableRow +EpisodeTableRowAttrs = Views.EpisodeTableRowAttrs +MetricCard = Views.MetricCard +MetricCardAttrs = Views.MetricCardAttrs +MetricsAttrs = Views.MetricsAttrs +MetricsDashboard = Views.MetricsDashboard +QueueTableRow = Views.QueueTableRow +QueueTableRowAttrs = Views.QueueTableRowAttrs +StatusBadge = Views.StatusBadge +StatusBadgeAttrs = Views.StatusBadgeAttrs +TopEpisodesTable = Views.TopEpisodesTable +TopEpisodesTableAttrs = Views.TopEpisodesTableAttrs +TruncatedText = Views.TruncatedText +TruncatedTextAttrs = Views.TruncatedTextAttrs +UserTableRow = Views.UserTableRow +UserTableRowAttrs = Views.UserTableRowAttrs +create_table_header = Views.create_table_header + +admin_metrics = Handlers.admin_metrics +admin_queue_status = Handlers.admin_queue_status +admin_users = Handlers.admin_users +delete_queue_item = Handlers.delete_queue_item +retry_queue_item = Handlers.retry_queue_item +toggle_episode_public = Handlers.toggle_episode_public +update_user_status = Handlers.update_user_status -# Export all symbols for backward compatibility __all__ = [ - # Views "ActionButtons", "ActionButtonsAttrs", "AdminUsers", @@ -76,7 +72,6 @@ __all__ = [ "TruncatedTextAttrs", "UserTableRow", "UserTableRowAttrs", - # Handlers "admin_metrics", "admin_queue_status", "admin_users", -- cgit v1.2.3 From 0baab1972e30c0e4629e67152838e660b02a2537 Mon Sep 17 00:00:00 2001 From: Ben Sima Date: Mon, 15 Dec 2025 08:47:02 -0500 Subject: t-265.6: Add feedback collection endpoint for PIL - Add feedback table with migration in Core.py - Add FeedbackForm and FeedbackPage UI components - Add /feedback GET/POST routes and /api/feedback JSON endpoint - Add admin feedback view at /admin/feedback - Create Omni/Agent/Tools/Feedback.hs with feedback_list tool - Wire feedback tool into Telegram agent --- Biz/PodcastItLater/Admin.py | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'Biz/PodcastItLater/Admin.py') diff --git a/Biz/PodcastItLater/Admin.py b/Biz/PodcastItLater/Admin.py index 29332df..10ea7f6 100644 --- a/Biz/PodcastItLater/Admin.py +++ b/Biz/PodcastItLater/Admin.py @@ -40,7 +40,10 @@ TruncatedTextAttrs = Views.TruncatedTextAttrs UserTableRow = Views.UserTableRow UserTableRowAttrs = Views.UserTableRowAttrs create_table_header = Views.create_table_header +AdminFeedback = Views.AdminFeedback +AdminFeedbackAttrs = Views.AdminFeedbackAttrs +admin_feedback = Handlers.admin_feedback admin_metrics = Handlers.admin_metrics admin_queue_status = Handlers.admin_queue_status admin_users = Handlers.admin_users @@ -52,6 +55,8 @@ update_user_status = Handlers.update_user_status __all__ = [ "ActionButtons", "ActionButtonsAttrs", + "AdminFeedback", + "AdminFeedbackAttrs", "AdminUsers", "AdminUsersAttrs", "AdminView", @@ -72,6 +77,7 @@ __all__ = [ "TruncatedTextAttrs", "UserTableRow", "UserTableRowAttrs", + "admin_feedback", "admin_metrics", "admin_queue_status", "admin_users", -- cgit v1.2.3 From a7dcb30c7a465d9fce72b7fc3e605470b2b59814 Mon Sep 17 00:00:00 2001 From: Ben Sima Date: Tue, 16 Dec 2025 08:06:09 -0500 Subject: feat(deploy): Complete mini-PaaS deployment system (t-266) - Add Omni/Deploy/ with Manifest, Deployer, Systemd, Caddy modules - Manifest CLI: show, update, add-service, list, rollback commands - Deployer: polls S3 manifest, pulls closures, manages systemd units - Caddy integration for dynamic reverse proxy routes - bild: auto-cache to S3, outputs STORE_PATH for push.sh - push.sh: supports both NixOS and service deploys - Biz.nix: simplified to base OS + deployer only - Services (podcastitlater-web/worker) now deployer-managed - Documentation: README.md with operations guide --- Biz/PodcastItLater/Admin.py | 95 --------------------------------------------- 1 file changed, 95 deletions(-) delete mode 100644 Biz/PodcastItLater/Admin.py (limited to 'Biz/PodcastItLater/Admin.py') diff --git a/Biz/PodcastItLater/Admin.py b/Biz/PodcastItLater/Admin.py deleted file mode 100644 index 10ea7f6..0000000 --- a/Biz/PodcastItLater/Admin.py +++ /dev/null @@ -1,95 +0,0 @@ -""" -PodcastItLater Admin Interface. - -Admin pages and functionality for managing users and queue items. -""" - -# : out podcastitlater-admin -# : dep ludic -# : dep httpx -# : dep starlette -# : dep pytest -# : dep pytest-asyncio -# : dep pytest-mock - -import Biz.PodcastItLater.Admin.Handlers as Handlers -import Biz.PodcastItLater.Admin.Views as Views -import sys - -# Re-export all symbols for backward compatibility -ActionButtons = Views.ActionButtons -ActionButtonsAttrs = Views.ActionButtonsAttrs -AdminUsers = Views.AdminUsers -AdminUsersAttrs = Views.AdminUsersAttrs -AdminView = Views.AdminView -AdminViewAttrs = Views.AdminViewAttrs -EpisodeTableRow = Views.EpisodeTableRow -EpisodeTableRowAttrs = Views.EpisodeTableRowAttrs -MetricCard = Views.MetricCard -MetricCardAttrs = Views.MetricCardAttrs -MetricsAttrs = Views.MetricsAttrs -MetricsDashboard = Views.MetricsDashboard -QueueTableRow = Views.QueueTableRow -QueueTableRowAttrs = Views.QueueTableRowAttrs -StatusBadge = Views.StatusBadge -StatusBadgeAttrs = Views.StatusBadgeAttrs -TopEpisodesTable = Views.TopEpisodesTable -TopEpisodesTableAttrs = Views.TopEpisodesTableAttrs -TruncatedText = Views.TruncatedText -TruncatedTextAttrs = Views.TruncatedTextAttrs -UserTableRow = Views.UserTableRow -UserTableRowAttrs = Views.UserTableRowAttrs -create_table_header = Views.create_table_header -AdminFeedback = Views.AdminFeedback -AdminFeedbackAttrs = Views.AdminFeedbackAttrs - -admin_feedback = Handlers.admin_feedback -admin_metrics = Handlers.admin_metrics -admin_queue_status = Handlers.admin_queue_status -admin_users = Handlers.admin_users -delete_queue_item = Handlers.delete_queue_item -retry_queue_item = Handlers.retry_queue_item -toggle_episode_public = Handlers.toggle_episode_public -update_user_status = Handlers.update_user_status - -__all__ = [ - "ActionButtons", - "ActionButtonsAttrs", - "AdminFeedback", - "AdminFeedbackAttrs", - "AdminUsers", - "AdminUsersAttrs", - "AdminView", - "AdminViewAttrs", - "EpisodeTableRow", - "EpisodeTableRowAttrs", - "MetricCard", - "MetricCardAttrs", - "MetricsAttrs", - "MetricsDashboard", - "QueueTableRow", - "QueueTableRowAttrs", - "StatusBadge", - "StatusBadgeAttrs", - "TopEpisodesTable", - "TopEpisodesTableAttrs", - "TruncatedText", - "TruncatedTextAttrs", - "UserTableRow", - "UserTableRowAttrs", - "admin_feedback", - "admin_metrics", - "admin_queue_status", - "admin_users", - "create_table_header", - "delete_queue_item", - "retry_queue_item", - "toggle_episode_public", - "update_user_status", -] - - -def main() -> None: - """Admin tests are currently in Web.""" - if "test" in sys.argv: - sys.exit(0) -- cgit v1.2.3