kryten-webqueue 0.34.0__tar.gz → 0.34.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {kryten_webqueue-0.34.0 → kryten_webqueue-0.34.1}/CHANGELOG.md +13 -0
- {kryten_webqueue-0.34.0 → kryten_webqueue-0.34.1}/PKG-INFO +1 -1
- {kryten_webqueue-0.34.0 → kryten_webqueue-0.34.1}/kryten_webqueue/jobs/job_scheduler.py +44 -16
- {kryten_webqueue-0.34.0 → kryten_webqueue-0.34.1}/kryten_webqueue/routes/admin_job_schedules.py +24 -18
- {kryten_webqueue-0.34.0 → kryten_webqueue-0.34.1}/pyproject.toml +1 -1
- {kryten_webqueue-0.34.0 → kryten_webqueue-0.34.1}/.github/workflows/gitleaks.yml +0 -0
- {kryten_webqueue-0.34.0 → kryten_webqueue-0.34.1}/.github/workflows/python-publish.yml +0 -0
- {kryten_webqueue-0.34.0 → kryten_webqueue-0.34.1}/.github/workflows/release.yml +0 -0
- {kryten_webqueue-0.34.0 → kryten_webqueue-0.34.1}/.gitignore +0 -0
- {kryten_webqueue-0.34.0 → kryten_webqueue-0.34.1}/.gitleaks.toml +0 -0
- {kryten_webqueue-0.34.0 → kryten_webqueue-0.34.1}/.pre-commit-config.yaml +0 -0
- {kryten_webqueue-0.34.0 → kryten_webqueue-0.34.1}/AGENT-WORKFLOW-GUIDE.md +0 -0
- {kryten_webqueue-0.34.0 → kryten_webqueue-0.34.1}/README.md +0 -0
- {kryten_webqueue-0.34.0 → kryten_webqueue-0.34.1}/config.example.json +0 -0
- {kryten_webqueue-0.34.0 → kryten_webqueue-0.34.1}/deploy/kryten-webqueue.service +0 -0
- {kryten_webqueue-0.34.0 → kryten_webqueue-0.34.1}/deploy/nginx-queue.conf +0 -0
- {kryten_webqueue-0.34.0 → kryten_webqueue-0.34.1}/docs/IMPLEMENTATION_SPEC.md +0 -0
- {kryten_webqueue-0.34.0 → kryten_webqueue-0.34.1}/docs/IMPL_API_GATE.md +0 -0
- {kryten_webqueue-0.34.0 → kryten_webqueue-0.34.1}/docs/IMPL_ECONOMY.md +0 -0
- {kryten_webqueue-0.34.0 → kryten_webqueue-0.34.1}/docs/IMPL_KRYTEN_PY.md +0 -0
- {kryten_webqueue-0.34.0 → kryten_webqueue-0.34.1}/docs/IMPL_ROBOT.md +0 -0
- {kryten_webqueue-0.34.0 → kryten_webqueue-0.34.1}/docs/Kryten-Economy Service Quality Survey Report at v0.13.0.md +0 -0
- {kryten_webqueue-0.34.0 → kryten_webqueue-0.34.1}/docs/Kryten-Webqueue Service Quality Survey Report at v0.27.1.md +0 -0
- {kryten_webqueue-0.34.0 → kryten_webqueue-0.34.1}/docs/Log for incorrect promo insertion problem.txt +0 -0
- {kryten_webqueue-0.34.0 → kryten_webqueue-0.34.1}/docs/PLAN_PRESENCE_AND_PROMOS.md +0 -0
- {kryten_webqueue-0.34.0 → kryten_webqueue-0.34.1}/docs/PRE_PLAN_GAPS.md +0 -0
- {kryten_webqueue-0.34.0 → kryten_webqueue-0.34.1}/docs/PRODUCT_PLAN.md +0 -0
- {kryten_webqueue-0.34.0 → kryten_webqueue-0.34.1}/docs/SPEC_EMOTE_REHOST.md +0 -0
- {kryten_webqueue-0.34.0 → kryten_webqueue-0.34.1}/docs/SPEC_JOBS_AND_BROWSE.md +0 -0
- {kryten_webqueue-0.34.0 → kryten_webqueue-0.34.1}/docs/UX_POLISH_PLAN.md +0 -0
- {kryten_webqueue-0.34.0 → kryten_webqueue-0.34.1}/kryten_webqueue/__init__.py +0 -0
- {kryten_webqueue-0.34.0 → kryten_webqueue-0.34.1}/kryten_webqueue/__main__.py +0 -0
- {kryten_webqueue-0.34.0 → kryten_webqueue-0.34.1}/kryten_webqueue/api_gate/__init__.py +0 -0
- {kryten_webqueue-0.34.0 → kryten_webqueue-0.34.1}/kryten_webqueue/api_gate/client.py +0 -0
- {kryten_webqueue-0.34.0 → kryten_webqueue-0.34.1}/kryten_webqueue/app.py +0 -0
- {kryten_webqueue-0.34.0 → kryten_webqueue-0.34.1}/kryten_webqueue/auth/__init__.py +0 -0
- {kryten_webqueue-0.34.0 → kryten_webqueue-0.34.1}/kryten_webqueue/auth/otp.py +0 -0
- {kryten_webqueue-0.34.0 → kryten_webqueue-0.34.1}/kryten_webqueue/auth/rate_limit.py +0 -0
- {kryten_webqueue-0.34.0 → kryten_webqueue-0.34.1}/kryten_webqueue/auth/session.py +0 -0
- {kryten_webqueue-0.34.0 → kryten_webqueue-0.34.1}/kryten_webqueue/catalog/__init__.py +0 -0
- {kryten_webqueue-0.34.0 → kryten_webqueue-0.34.1}/kryten_webqueue/catalog/db/__init__.py +0 -0
- {kryten_webqueue-0.34.0 → kryten_webqueue-0.34.1}/kryten_webqueue/catalog/db/_catalog.py +0 -0
- {kryten_webqueue-0.34.0 → kryten_webqueue-0.34.1}/kryten_webqueue/catalog/db/_connection.py +0 -0
- {kryten_webqueue-0.34.0 → kryten_webqueue-0.34.1}/kryten_webqueue/catalog/db/_feedback.py +0 -0
- {kryten_webqueue-0.34.0 → kryten_webqueue-0.34.1}/kryten_webqueue/catalog/db/_playlists.py +0 -0
- {kryten_webqueue-0.34.0 → kryten_webqueue-0.34.1}/kryten_webqueue/catalog/db/_queue.py +0 -0
- {kryten_webqueue-0.34.0 → kryten_webqueue-0.34.1}/kryten_webqueue/catalog/images.py +0 -0
- {kryten_webqueue-0.34.0 → kryten_webqueue-0.34.1}/kryten_webqueue/catalog/mediacms.py +0 -0
- {kryten_webqueue-0.34.0 → kryten_webqueue-0.34.1}/kryten_webqueue/catalog/sync.py +0 -0
- {kryten_webqueue-0.34.0 → kryten_webqueue-0.34.1}/kryten_webqueue/config.py +0 -0
- {kryten_webqueue-0.34.0 → kryten_webqueue-0.34.1}/kryten_webqueue/integrations/__init__.py +0 -0
- {kryten_webqueue-0.34.0 → kryten_webqueue-0.34.1}/kryten_webqueue/integrations/cmsutils/__init__.py +0 -0
- {kryten_webqueue-0.34.0 → kryten_webqueue-0.34.1}/kryten_webqueue/integrations/cmsutils/_common.py +0 -0
- {kryten_webqueue-0.34.0 → kryten_webqueue-0.34.1}/kryten_webqueue/integrations/cmsutils/enrichmeta.py +0 -0
- {kryten_webqueue-0.34.0 → kryten_webqueue-0.34.1}/kryten_webqueue/integrations/cmsutils/enrichtitles.py +0 -0
- {kryten_webqueue-0.34.0 → kryten_webqueue-0.34.1}/kryten_webqueue/integrations/cmsutils/enrichtv.py +0 -0
- {kryten_webqueue-0.34.0 → kryten_webqueue-0.34.1}/kryten_webqueue/integrations/cmsutils/fetchurls.py +0 -0
- {kryten_webqueue-0.34.0 → kryten_webqueue-0.34.1}/kryten_webqueue/integrations/cmsutils/motdposters.py +0 -0
- {kryten_webqueue-0.34.0 → kryten_webqueue-0.34.1}/kryten_webqueue/integrations/cmsutils/playedmovies.py +0 -0
- {kryten_webqueue-0.34.0 → kryten_webqueue-0.34.1}/kryten_webqueue/integrations/ytpipe/__init__.py +0 -0
- {kryten_webqueue-0.34.0 → kryten_webqueue-0.34.1}/kryten_webqueue/integrations/ytpipe/downloader.py +0 -0
- {kryten_webqueue-0.34.0 → kryten_webqueue-0.34.1}/kryten_webqueue/jobs/__init__.py +0 -0
- {kryten_webqueue-0.34.0 → kryten_webqueue-0.34.1}/kryten_webqueue/jobs/fetchurls_auth.py +0 -0
- {kryten_webqueue-0.34.0 → kryten_webqueue-0.34.1}/kryten_webqueue/jobs/manager.py +0 -0
- {kryten_webqueue-0.34.0 → kryten_webqueue-0.34.1}/kryten_webqueue/jobs/rehost_emotes.py +0 -0
- {kryten_webqueue-0.34.0 → kryten_webqueue-0.34.1}/kryten_webqueue/jobs/tasks.py +0 -0
- {kryten_webqueue-0.34.0 → kryten_webqueue-0.34.1}/kryten_webqueue/logging_config.py +0 -0
- {kryten_webqueue-0.34.0 → kryten_webqueue-0.34.1}/kryten_webqueue/playlists/__init__.py +0 -0
- {kryten_webqueue-0.34.0 → kryten_webqueue-0.34.1}/kryten_webqueue/playlists/bulk_add.py +0 -0
- {kryten_webqueue-0.34.0 → kryten_webqueue-0.34.1}/kryten_webqueue/playlists/fire.py +0 -0
- {kryten_webqueue-0.34.0 → kryten_webqueue-0.34.1}/kryten_webqueue/playlists/importer.py +0 -0
- {kryten_webqueue-0.34.0 → kryten_webqueue-0.34.1}/kryten_webqueue/playlists/ordering.py +0 -0
- {kryten_webqueue-0.34.0 → kryten_webqueue-0.34.1}/kryten_webqueue/playlists/scheduler.py +0 -0
- {kryten_webqueue-0.34.0 → kryten_webqueue-0.34.1}/kryten_webqueue/promos/__init__.py +0 -0
- {kryten_webqueue-0.34.0 → kryten_webqueue-0.34.1}/kryten_webqueue/promos/director.py +0 -0
- {kryten_webqueue-0.34.0 → kryten_webqueue-0.34.1}/kryten_webqueue/queue/__init__.py +0 -0
- {kryten_webqueue-0.34.0 → kryten_webqueue-0.34.1}/kryten_webqueue/queue/completion.py +0 -0
- {kryten_webqueue-0.34.0 → kryten_webqueue-0.34.1}/kryten_webqueue/queue/ordering.py +0 -0
- {kryten_webqueue-0.34.0 → kryten_webqueue-0.34.1}/kryten_webqueue/queue/poller.py +0 -0
- {kryten_webqueue-0.34.0 → kryten_webqueue-0.34.1}/kryten_webqueue/queue/presence.py +0 -0
- {kryten_webqueue-0.34.0 → kryten_webqueue-0.34.1}/kryten_webqueue/queue/race_poller.py +0 -0
- {kryten_webqueue-0.34.0 → kryten_webqueue-0.34.1}/kryten_webqueue/queue/shadow.py +0 -0
- {kryten_webqueue-0.34.0 → kryten_webqueue-0.34.1}/kryten_webqueue/routes/__init__.py +0 -0
- {kryten_webqueue-0.34.0 → kryten_webqueue-0.34.1}/kryten_webqueue/routes/admin_catalog.py +0 -0
- {kryten_webqueue-0.34.0 → kryten_webqueue-0.34.1}/kryten_webqueue/routes/admin_feedback.py +0 -0
- {kryten_webqueue-0.34.0 → kryten_webqueue-0.34.1}/kryten_webqueue/routes/admin_jobs.py +0 -0
- {kryten_webqueue-0.34.0 → kryten_webqueue-0.34.1}/kryten_webqueue/routes/admin_moderation.py +0 -0
- {kryten_webqueue-0.34.0 → kryten_webqueue-0.34.1}/kryten_webqueue/routes/admin_playlists.py +0 -0
- {kryten_webqueue-0.34.0 → kryten_webqueue-0.34.1}/kryten_webqueue/routes/admin_promos.py +0 -0
- {kryten_webqueue-0.34.0 → kryten_webqueue-0.34.1}/kryten_webqueue/routes/admin_queue.py +0 -0
- {kryten_webqueue-0.34.0 → kryten_webqueue-0.34.1}/kryten_webqueue/routes/admin_schedules.py +0 -0
- {kryten_webqueue-0.34.0 → kryten_webqueue-0.34.1}/kryten_webqueue/routes/auth.py +0 -0
- {kryten_webqueue-0.34.0 → kryten_webqueue-0.34.1}/kryten_webqueue/routes/catalog.py +0 -0
- {kryten_webqueue-0.34.0 → kryten_webqueue-0.34.1}/kryten_webqueue/routes/feedback.py +0 -0
- {kryten_webqueue-0.34.0 → kryten_webqueue-0.34.1}/kryten_webqueue/routes/pages.py +0 -0
- {kryten_webqueue-0.34.0 → kryten_webqueue-0.34.1}/kryten_webqueue/routes/queue.py +0 -0
- {kryten_webqueue-0.34.0 → kryten_webqueue-0.34.1}/kryten_webqueue/routes/user.py +0 -0
- {kryten_webqueue-0.34.0 → kryten_webqueue-0.34.1}/kryten_webqueue/static/css/main.css +0 -0
- {kryten_webqueue-0.34.0 → kryten_webqueue-0.34.1}/kryten_webqueue/static/js/admin-playlists.js +0 -0
- {kryten_webqueue-0.34.0 → kryten_webqueue-0.34.1}/kryten_webqueue/static/js/admin-promos.js +0 -0
- {kryten_webqueue-0.34.0 → kryten_webqueue-0.34.1}/kryten_webqueue/static/js/admin-queue-mgmt.js +0 -0
- {kryten_webqueue-0.34.0 → kryten_webqueue-0.34.1}/kryten_webqueue/static/js/admin-schedules.js +0 -0
- {kryten_webqueue-0.34.0 → kryten_webqueue-0.34.1}/kryten_webqueue/static/js/admin.js +0 -0
- {kryten_webqueue-0.34.0 → kryten_webqueue-0.34.1}/kryten_webqueue/static/js/main.js +0 -0
- {kryten_webqueue-0.34.0 → kryten_webqueue-0.34.1}/kryten_webqueue/templates/admin/index.html +0 -0
- {kryten_webqueue-0.34.0 → kryten_webqueue-0.34.1}/kryten_webqueue/templates/admin/playlists.html +0 -0
- {kryten_webqueue-0.34.0 → kryten_webqueue-0.34.1}/kryten_webqueue/templates/admin/promos.html +0 -0
- {kryten_webqueue-0.34.0 → kryten_webqueue-0.34.1}/kryten_webqueue/templates/admin/queue_mgmt.html +0 -0
- {kryten_webqueue-0.34.0 → kryten_webqueue-0.34.1}/kryten_webqueue/templates/admin/schedules.html +0 -0
- {kryten_webqueue-0.34.0 → kryten_webqueue-0.34.1}/kryten_webqueue/templates/auth/login.html +0 -0
- {kryten_webqueue-0.34.0 → kryten_webqueue-0.34.1}/kryten_webqueue/templates/base.html +0 -0
- {kryten_webqueue-0.34.0 → kryten_webqueue-0.34.1}/kryten_webqueue/templates/catalog/browse.html +0 -0
- {kryten_webqueue-0.34.0 → kryten_webqueue-0.34.1}/kryten_webqueue/templates/catalog/item_detail.html +0 -0
- {kryten_webqueue-0.34.0 → kryten_webqueue-0.34.1}/kryten_webqueue/templates/catalog/item_not_found.html +0 -0
- {kryten_webqueue-0.34.0 → kryten_webqueue-0.34.1}/kryten_webqueue/templates/feedback/index.html +0 -0
- {kryten_webqueue-0.34.0 → kryten_webqueue-0.34.1}/kryten_webqueue/templates/queue/index.html +0 -0
- {kryten_webqueue-0.34.0 → kryten_webqueue-0.34.1}/kryten_webqueue/templates/race.html +0 -0
- {kryten_webqueue-0.34.0 → kryten_webqueue-0.34.1}/kryten_webqueue/templates/user/dashboard.html +0 -0
- {kryten_webqueue-0.34.0 → kryten_webqueue-0.34.1}/kryten_webqueue/ws/__init__.py +0 -0
- {kryten_webqueue-0.34.0 → kryten_webqueue-0.34.1}/kryten_webqueue/ws/handler.py +0 -0
- {kryten_webqueue-0.34.0 → kryten_webqueue-0.34.1}/kryten_webqueue/ws/manager.py +0 -0
- {kryten_webqueue-0.34.0 → kryten_webqueue-0.34.1}/tests/__init__.py +0 -0
- {kryten_webqueue-0.34.0 → kryten_webqueue-0.34.1}/tests/test_config_persistence.py +0 -0
- {kryten_webqueue-0.34.0 → kryten_webqueue-0.34.1}/tests/test_feedback.py +0 -0
- {kryten_webqueue-0.34.0 → kryten_webqueue-0.34.1}/tests/test_fetchurls_sharepoint.py +0 -0
- {kryten_webqueue-0.34.0 → kryten_webqueue-0.34.1}/tests/test_phase1.py +0 -0
- {kryten_webqueue-0.34.0 → kryten_webqueue-0.34.1}/tests/test_phase2_jobs.py +0 -0
- {kryten_webqueue-0.34.0 → kryten_webqueue-0.34.1}/tests/test_phase3_jobs.py +0 -0
- {kryten_webqueue-0.34.0 → kryten_webqueue-0.34.1}/tests/test_phase4_live_fixes.py +0 -0
- {kryten_webqueue-0.34.0 → kryten_webqueue-0.34.1}/tests/test_playlist_import.py +0 -0
- {kryten_webqueue-0.34.0 → kryten_webqueue-0.34.1}/tests/test_presence_refund.py +0 -0
- {kryten_webqueue-0.34.0 → kryten_webqueue-0.34.1}/tests/test_promo_director.py +0 -0
- {kryten_webqueue-0.34.0 → kryten_webqueue-0.34.1}/tests/test_promo_pool_exclusion.py +0 -0
- {kryten_webqueue-0.34.0 → kryten_webqueue-0.34.1}/tests/test_queue_announce.py +0 -0
- {kryten_webqueue-0.34.0 → kryten_webqueue-0.34.1}/tests/test_race_poller.py +0 -0
- {kryten_webqueue-0.34.0 → kryten_webqueue-0.34.1}/tests/test_recently_played_hide.py +0 -0
- {kryten_webqueue-0.34.0 → kryten_webqueue-0.34.1}/tests/test_save_results_to_playlist.py +0 -0
- {kryten_webqueue-0.34.0 → kryten_webqueue-0.34.1}/tests/test_schedule_lock.py +0 -0
- {kryten_webqueue-0.34.0 → kryten_webqueue-0.34.1}/tests/test_search_facets.py +0 -0
|
@@ -1,5 +1,18 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [0.34.1] - 2026-08-12
|
|
4
|
+
|
|
5
|
+
### Fixed
|
|
6
|
+
|
|
7
|
+
- `JobScheduler._register()`: bad cron expressions in the DB (e.g. hour=27)
|
|
8
|
+
are now logged at WARNING and skipped rather than raising `ValueError` during
|
|
9
|
+
startup and preventing the service from starting.
|
|
10
|
+
- `JobScheduler.upsert()`: validates the cron expression via APScheduler before
|
|
11
|
+
persisting; raises `ValueError` with a clear message so the API route can
|
|
12
|
+
return HTTP 400 instead of saving an unrunnable schedule.
|
|
13
|
+
- `/admin/job-schedules` POST and PUT: APScheduler validation errors now surface
|
|
14
|
+
as HTTP 400 with the rejection reason.
|
|
15
|
+
|
|
3
16
|
## [0.34.0] - 2026-08-11
|
|
4
17
|
|
|
5
18
|
### Added
|
|
@@ -57,21 +57,30 @@ class JobScheduler:
|
|
|
57
57
|
)
|
|
58
58
|
return False
|
|
59
59
|
minute, hour, day, month, day_of_week = parts
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
self.
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
60
|
+
try:
|
|
61
|
+
trigger = CronTrigger(
|
|
62
|
+
minute=minute,
|
|
63
|
+
hour=hour,
|
|
64
|
+
day=day,
|
|
65
|
+
month=month,
|
|
66
|
+
day_of_week=day_of_week,
|
|
67
|
+
timezone="UTC",
|
|
68
|
+
)
|
|
69
|
+
self._aps.add_job(
|
|
70
|
+
self._fire,
|
|
71
|
+
trigger=trigger,
|
|
72
|
+
args=[job_name],
|
|
73
|
+
id=f"jsch_{job_name}",
|
|
74
|
+
replace_existing=True,
|
|
75
|
+
)
|
|
76
|
+
except (ValueError, Exception) as exc: # noqa: BLE001 - bad stored cron must not crash startup
|
|
77
|
+
logger.warning(
|
|
78
|
+
"JobScheduler: skipping invalid cron %r for %r: %s",
|
|
79
|
+
cron_expression,
|
|
80
|
+
job_name,
|
|
81
|
+
exc,
|
|
82
|
+
)
|
|
83
|
+
return False
|
|
75
84
|
logger.info("JobScheduler: registered %r cron=%r", job_name, cron_expression)
|
|
76
85
|
return True
|
|
77
86
|
|
|
@@ -134,7 +143,26 @@ class JobScheduler:
|
|
|
134
143
|
is_active: bool = True,
|
|
135
144
|
created_by: str | None = None,
|
|
136
145
|
) -> None:
|
|
137
|
-
"""Persist a schedule and (re)register it with APScheduler.
|
|
146
|
+
"""Persist a schedule and (re)register it with APScheduler.
|
|
147
|
+
|
|
148
|
+
Raises ValueError if cron_expression is rejected by APScheduler.
|
|
149
|
+
"""
|
|
150
|
+
# Validate before persisting so a bad expression is rejected at save time.
|
|
151
|
+
if is_active:
|
|
152
|
+
parts = (cron_expression or "").strip().split()
|
|
153
|
+
if len(parts) != 5:
|
|
154
|
+
raise ValueError(
|
|
155
|
+
f"cron_expression must have exactly 5 fields (min hour dom mon dow), got: {cron_expression!r}"
|
|
156
|
+
)
|
|
157
|
+
minute, hour, day, month, day_of_week = parts
|
|
158
|
+
try:
|
|
159
|
+
CronTrigger(
|
|
160
|
+
minute=minute, hour=hour, day=day,
|
|
161
|
+
month=month, day_of_week=day_of_week, timezone="UTC",
|
|
162
|
+
)
|
|
163
|
+
except Exception as exc:
|
|
164
|
+
raise ValueError(f"Invalid cron expression {cron_expression!r}: {exc}") from exc
|
|
165
|
+
|
|
138
166
|
params_json = json.dumps(params) if params is not None else None
|
|
139
167
|
await self._db.upsert_job_schedule(
|
|
140
168
|
job_name,
|
{kryten_webqueue-0.34.0 → kryten_webqueue-0.34.1}/kryten_webqueue/routes/admin_job_schedules.py
RENAMED
|
@@ -40,15 +40,18 @@ async def upsert_job_schedule(request: Request, user: dict = Depends(require_adm
|
|
|
40
40
|
raise HTTPException(400, "cron_expression must have exactly 5 fields (min hour dom mon dow)")
|
|
41
41
|
|
|
42
42
|
job_scheduler = request.app.state.job_scheduler
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
43
|
+
try:
|
|
44
|
+
await job_scheduler.upsert(
|
|
45
|
+
job_name,
|
|
46
|
+
cron_expression,
|
|
47
|
+
params=body.get("params") or None,
|
|
48
|
+
label=body.get("label") or None,
|
|
49
|
+
run_next_job=body.get("run_next_job") or None,
|
|
50
|
+
is_active=bool(body.get("is_active", True)),
|
|
51
|
+
created_by=user["username"],
|
|
52
|
+
)
|
|
53
|
+
except ValueError as exc:
|
|
54
|
+
raise HTTPException(400, str(exc))
|
|
52
55
|
return {"success": True}
|
|
53
56
|
|
|
54
57
|
|
|
@@ -65,15 +68,18 @@ async def update_job_schedule(
|
|
|
65
68
|
raise HTTPException(400, "cron_expression must have exactly 5 fields (min hour dom mon dow)")
|
|
66
69
|
|
|
67
70
|
job_scheduler = request.app.state.job_scheduler
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
71
|
+
try:
|
|
72
|
+
await job_scheduler.upsert(
|
|
73
|
+
job_name,
|
|
74
|
+
cron_expression,
|
|
75
|
+
params=body.get("params") or None,
|
|
76
|
+
label=body.get("label") or None,
|
|
77
|
+
run_next_job=body.get("run_next_job") or None,
|
|
78
|
+
is_active=bool(body.get("is_active", True)),
|
|
79
|
+
created_by=user["username"],
|
|
80
|
+
)
|
|
81
|
+
except ValueError as exc:
|
|
82
|
+
raise HTTPException(400, str(exc))
|
|
77
83
|
return {"success": True}
|
|
78
84
|
|
|
79
85
|
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{kryten_webqueue-0.34.0 → kryten_webqueue-0.34.1}/docs/Log for incorrect promo insertion problem.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{kryten_webqueue-0.34.0 → kryten_webqueue-0.34.1}/kryten_webqueue/integrations/cmsutils/__init__.py
RENAMED
|
File without changes
|
{kryten_webqueue-0.34.0 → kryten_webqueue-0.34.1}/kryten_webqueue/integrations/cmsutils/_common.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{kryten_webqueue-0.34.0 → kryten_webqueue-0.34.1}/kryten_webqueue/integrations/cmsutils/enrichtv.py
RENAMED
|
File without changes
|
{kryten_webqueue-0.34.0 → kryten_webqueue-0.34.1}/kryten_webqueue/integrations/cmsutils/fetchurls.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{kryten_webqueue-0.34.0 → kryten_webqueue-0.34.1}/kryten_webqueue/integrations/ytpipe/__init__.py
RENAMED
|
File without changes
|
{kryten_webqueue-0.34.0 → kryten_webqueue-0.34.1}/kryten_webqueue/integrations/ytpipe/downloader.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{kryten_webqueue-0.34.0 → kryten_webqueue-0.34.1}/kryten_webqueue/routes/admin_moderation.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{kryten_webqueue-0.34.0 → kryten_webqueue-0.34.1}/kryten_webqueue/static/js/admin-playlists.js
RENAMED
|
File without changes
|
|
File without changes
|
{kryten_webqueue-0.34.0 → kryten_webqueue-0.34.1}/kryten_webqueue/static/js/admin-queue-mgmt.js
RENAMED
|
File without changes
|
{kryten_webqueue-0.34.0 → kryten_webqueue-0.34.1}/kryten_webqueue/static/js/admin-schedules.js
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{kryten_webqueue-0.34.0 → kryten_webqueue-0.34.1}/kryten_webqueue/templates/admin/index.html
RENAMED
|
File without changes
|
{kryten_webqueue-0.34.0 → kryten_webqueue-0.34.1}/kryten_webqueue/templates/admin/playlists.html
RENAMED
|
File without changes
|
{kryten_webqueue-0.34.0 → kryten_webqueue-0.34.1}/kryten_webqueue/templates/admin/promos.html
RENAMED
|
File without changes
|
{kryten_webqueue-0.34.0 → kryten_webqueue-0.34.1}/kryten_webqueue/templates/admin/queue_mgmt.html
RENAMED
|
File without changes
|
{kryten_webqueue-0.34.0 → kryten_webqueue-0.34.1}/kryten_webqueue/templates/admin/schedules.html
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{kryten_webqueue-0.34.0 → kryten_webqueue-0.34.1}/kryten_webqueue/templates/catalog/browse.html
RENAMED
|
File without changes
|
{kryten_webqueue-0.34.0 → kryten_webqueue-0.34.1}/kryten_webqueue/templates/catalog/item_detail.html
RENAMED
|
File without changes
|
|
File without changes
|
{kryten_webqueue-0.34.0 → kryten_webqueue-0.34.1}/kryten_webqueue/templates/feedback/index.html
RENAMED
|
File without changes
|
{kryten_webqueue-0.34.0 → kryten_webqueue-0.34.1}/kryten_webqueue/templates/queue/index.html
RENAMED
|
File without changes
|
|
File without changes
|
{kryten_webqueue-0.34.0 → kryten_webqueue-0.34.1}/kryten_webqueue/templates/user/dashboard.html
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|