mirror of
https://github.com/ArchiveBox/ArchiveBox.git
synced 2026-09-14 11:06:13 +05:00
reuse snapshot admin change object
This commit is contained in:
parent
06659868af
commit
fc3e3aa485
@ -509,19 +509,18 @@ class SnapshotAdmin(SearchResultsAdminMixin, ConfigEditorMixin, BaseModelAdmin):
|
||||
return []
|
||||
return super().get_ordering(request)
|
||||
|
||||
def change_view(self, request, object_id, form_url="", extra_context=None):
|
||||
def render_change_form(self, request, context, add=False, change=False, form_url="", obj=None):
|
||||
self.request = request
|
||||
extra_context = extra_context or {}
|
||||
extra_context["CONFIG"] = request.archivebox_config
|
||||
snapshot = self.get_object(request, object_id)
|
||||
if snapshot and snapshot.status in {
|
||||
context["CONFIG"] = request.archivebox_config
|
||||
if obj and obj.status in {
|
||||
Snapshot.StatusChoices.QUEUED,
|
||||
Snapshot.StatusChoices.STARTED,
|
||||
Snapshot.StatusChoices.PAUSED,
|
||||
}:
|
||||
extra_context["progress_auto_expand"] = True
|
||||
extra_context["progress_endpoint"] = progress_endpoint("snapshot", snapshot.id)
|
||||
return super().change_view(request, object_id, form_url, extra_context | GLOBAL_CONTEXT)
|
||||
context["progress_auto_expand"] = True
|
||||
context["progress_endpoint"] = progress_endpoint("snapshot", obj.id)
|
||||
context.update(GLOBAL_CONTEXT)
|
||||
return super().render_change_form(request, context, add=add, change=change, form_url=form_url, obj=obj)
|
||||
|
||||
def changelist_view(self, request, extra_context=None):
|
||||
self.request = request
|
||||
|
||||
@ -912,6 +912,28 @@ class TestAdminSnapshotListView:
|
||||
assert response.status_code == 200
|
||||
assert f"/admin/core/snapshot/{snapshot.pk}/redo-failed/".encode() in response.content
|
||||
|
||||
def test_change_view_reuses_resolved_snapshot_for_progress_context(self, client, admin_user, snapshot):
|
||||
from django.db import connection
|
||||
from django.test.utils import CaptureQueriesContext
|
||||
|
||||
snapshot.status = snapshot.StatusChoices.STARTED
|
||||
snapshot.__class__.objects.filter(pk=snapshot.pk).update(status=snapshot.status)
|
||||
client.force_login(admin_user)
|
||||
url = reverse("admin:core_snapshot_change", args=[snapshot.pk])
|
||||
|
||||
with CaptureQueriesContext(connection) as captured_queries:
|
||||
response = client.get(url, HTTP_HOST=ADMIN_TEST_HOST)
|
||||
|
||||
snapshot_reads = [
|
||||
query["sql"]
|
||||
for query in captured_queries
|
||||
if 'FROM "core_snapshot"' in query["sql"] and '"core_snapshot"."id" =' in query["sql"]
|
||||
]
|
||||
assert response.status_code == 200
|
||||
assert response.context["progress_auto_expand"] is True
|
||||
assert response.context["progress_endpoint"].endswith(f"?snapshot_id={snapshot.pk}")
|
||||
assert len(snapshot_reads) == 1
|
||||
|
||||
def test_snapshot_view_url_uses_canonical_replay_url_for_mode(self, snapshot):
|
||||
from archivebox.core.admin_site import archivebox_admin
|
||||
from archivebox.core.admin_snapshots import SnapshotAdmin
|
||||
|
||||
Loading…
Reference in New Issue
Block a user