realm_export: Return export id from POST which create it.

This commit is contained in:
Alex Vandiver 2023-05-16 17:14:14 +00:00 committed by Tim Abbott
parent 7811e99548
commit 3160c3cce0
4 changed files with 12 additions and 5 deletions

View File

@ -20,6 +20,11 @@ format used by the Zulip server that they are interacting with.
## Changes in Zulip 7.0
**Feature level 182**
* `POST /export/realm`: This endpoint now returns the ID of the data
export object created by the request.
**Feature level 181**
* [`GET /scheduled_messages`](/api/get-scheduled-messages), [`GET

View File

@ -33,7 +33,7 @@ DESKTOP_WARNING_VERSION = "5.4.3"
# Changes should be accompanied by documentation explaining what the
# new level means in api_docs/changelog.md, as well as "**Changes**"
# entries in the endpoint's documentation in `zulip.yaml`.
API_FEATURE_LEVEL = 181
API_FEATURE_LEVEL = 182
# Bump the minor PROVISION_VERSION to indicate that folks should provision
# only when going from an old version of the code to a newer version. Bump

View File

@ -159,7 +159,7 @@ class RealmExportTest(ZulipTestCase):
result = self.client_post("/json/export/realm")
self.assertTrue("INFO:root:Completed data export for zulip in " in info_logs.output[0])
mock_export.assert_called_once()
self.assert_json_success(result)
data = self.assert_json_success(result)
self.assertFalse(os.path.exists(tarball_path))
# Get the entry and test that iago initiated it.
@ -167,6 +167,7 @@ class RealmExportTest(ZulipTestCase):
event_type=RealmAuditLog.REALM_EXPORTED
).first()
assert audit_log_entry is not None
self.assertEqual(audit_log_entry.id, data["id"])
self.assertEqual(audit_log_entry.acting_user_id, admin.id)
# Test that the file is hosted, and the contents are as expected.
@ -226,14 +227,15 @@ class RealmExportTest(ZulipTestCase):
)
mock_export.assert_called_once()
# This is a success because the failure is swallowed in the queue worker
self.assert_json_success(result)
data = self.assert_json_success(result)
export_id = data["id"]
# Check that the export shows up as failed
result = self.client_get("/json/export/realm")
response_dict = self.assert_json_success(result)
export_dict = response_dict["exports"]
self.assert_length(export_dict, 1)
export_id = export_dict[0]["id"]
self.assertEqual(export_dict[0]["id"], export_id)
self.assertEqual(export_dict[0]["pending"], False)
self.assertIsNone(export_dict[0]["export_url"])
self.assertIsNone(export_dict[0]["deleted_timestamp"])

View File

@ -85,7 +85,7 @@ def export_realm(request: HttpRequest, user: UserProfile) -> HttpResponse:
"id": row.id,
}
transaction.on_commit(lambda: queue_json_publish("deferred_work", event))
return json_success(request)
return json_success(request, data={"id": row.id})
@require_realm_admin