mirror of
https://github.com/kjanat/livegraphs-django.git
synced 2026-02-13 17:55:44 +01:00
- build(pre-commit): upgrade hooks (django-upgrade 1.29.1, uv 0.9.7, ruff 0.14.3, bandit 1.8.6) - build(pre-commit): add uv-lock hook, tombi TOML formatter, prettier-plugin-packagejson - build(pre-commit): disable Django check hooks (commented out) - build(pre-commit): switch npx → bunx for prettier execution - build(node): add bun.lock, update prettier config with schema + packagejson plugin - style: apply ruff format to all Python files (comments, spacing, imports) - style: apply prettier format to all JS/CSS files (comment styles, spacing) - style: apply tombi format to pyproject.toml (reordered sections, consistent formatting) - chore: remove emoji from bash script comments for consistency BREAKING CHANGE: Django check and migration check hooks disabled in pre-commit config
55 lines
2.0 KiB
Python
55 lines
2.0 KiB
Python
from django.contrib import messages
|
|
from django.contrib.admin.views.decorators import staff_member_required
|
|
from django.contrib.auth.decorators import login_required, user_passes_test
|
|
from django.shortcuts import get_object_or_404, redirect
|
|
|
|
from .models import ExternalDataSource
|
|
from .tasks import periodic_fetch_chat_data, refresh_specific_source
|
|
from .utils import fetch_and_store_chat_data
|
|
|
|
# Create your views here
|
|
|
|
|
|
def is_superuser(user):
|
|
return user.is_superuser
|
|
|
|
|
|
@login_required
|
|
@user_passes_test(is_superuser)
|
|
def manual_data_refresh(request):
|
|
if request.method == "POST":
|
|
try:
|
|
# Try to use Celery first
|
|
try:
|
|
# Asynchronous with Celery
|
|
periodic_fetch_chat_data.delay()
|
|
messages.success(
|
|
request,
|
|
"Manual data refresh triggered successfully. The data will be updated shortly.",
|
|
)
|
|
except Exception:
|
|
# Fall back to synchronous if Celery is not available
|
|
fetch_and_store_chat_data()
|
|
messages.success(
|
|
request,
|
|
"Manual data refresh completed successfully (synchronous mode).",
|
|
)
|
|
except Exception as e:
|
|
messages.error(request, f"Failed to refresh data: {e}")
|
|
return redirect(request.headers.get("referer", "dashboard")) # Redirect to previous page or dashboard
|
|
|
|
|
|
@staff_member_required
|
|
def refresh_specific_datasource(request, source_id):
|
|
"""View to trigger refresh of a specific data source. Used as a backup for admin URLs."""
|
|
source = get_object_or_404(ExternalDataSource, pk=source_id)
|
|
|
|
try:
|
|
# Try to use Celery
|
|
task = refresh_specific_source.delay(source_id)
|
|
messages.success(request, f"Data refresh task started for {source.name} (Task ID: {task.id})")
|
|
except Exception as e:
|
|
messages.error(request, f"Failed to refresh data source {source.name}: {e}")
|
|
|
|
return redirect(request.headers.get("referer", "/admin/data_integration/externaldatasource/"))
|