mirror of https://github.com/zulip/zulip.git
import: Replace generic Exception with CommandError.
This change improves error handling in `do_import_realm` by replacing the use of a generic Exception with CommandError. The updated approach provides clearer, user-friendly error messages when there is a version mismatch between the exported data and the Zulip server. Fixes #32292.
This commit is contained in:
parent
ffa7e0ac08
commit
ca14366e38
|
@ -13,6 +13,7 @@ import pyvips
|
|||
from bs4 import BeautifulSoup
|
||||
from django.conf import settings
|
||||
from django.core.cache import cache
|
||||
from django.core.management.base import CommandError
|
||||
from django.core.validators import validate_email
|
||||
from django.db import connection, transaction
|
||||
from django.db.backends.utils import CursorWrapper
|
||||
|
@ -2122,10 +2123,10 @@ def check_migration_status(exported_migration_status: MigrationStatusJson) -> No
|
|||
exported_primary_version = exported_migration_status["zulip_version"].split(".")[0]
|
||||
local_primary_version = local_migration_status["zulip_version"].split(".")[0]
|
||||
if exported_primary_version != local_primary_version:
|
||||
raise Exception(
|
||||
"Export was generated on a different Zulip major version.\n"
|
||||
f"Export={exported_migration_status['zulip_version']}\n"
|
||||
f"Server={local_migration_status['zulip_version']}"
|
||||
raise CommandError(
|
||||
"Error: Export was generated on a different Zulip major version.\n"
|
||||
f"Export version: {exported_migration_status['zulip_version']}\n"
|
||||
f"Server version: {local_migration_status['zulip_version']}"
|
||||
)
|
||||
exported_migrations_by_app = exported_migration_status["migrations_by_app"]
|
||||
local_migrations_by_app = local_migration_status["migrations_by_app"]
|
||||
|
@ -2160,13 +2161,13 @@ def check_migration_status(exported_migration_status: MigrationStatusJson) -> No
|
|||
]
|
||||
|
||||
error_message = (
|
||||
"Export was generated on a different Zulip version.\n"
|
||||
f"Export={exported_migration_status['zulip_version']}\n"
|
||||
f"Server={local_migration_status['zulip_version']}\n"
|
||||
"Error: Export was generated on a different Zulip version.\n"
|
||||
f"Export version: {exported_migration_status['zulip_version']}\n"
|
||||
f"Server version: {local_migration_status['zulip_version']}\n"
|
||||
"\n"
|
||||
"Database formats differ between the exported realm and this server.\n"
|
||||
"Printing migrations that differ between the versions:\n"
|
||||
"--- exported realm\n"
|
||||
"+++ this server"
|
||||
) + "\n".join(sorted_error_log)
|
||||
raise Exception(error_message)
|
||||
raise CommandError(error_message)
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
Export was generated on a different Zulip version.
|
||||
Export={version_placeholder}
|
||||
Server={version_placeholder}
|
||||
Error: Export was generated on a different Zulip version.
|
||||
Export version: {version_placeholder}
|
||||
Server version: {version_placeholder}
|
||||
|
||||
Database formats differ between the exported realm and this server.
|
||||
Printing migrations that differ between the versions:
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
Export was generated on a different Zulip version.
|
||||
Export={version_placeholder}
|
||||
Server={version_placeholder}
|
||||
Error: Export was generated on a different Zulip version.
|
||||
Export version: {version_placeholder}
|
||||
Server version: {version_placeholder}
|
||||
|
||||
Database formats differ between the exported realm and this server.
|
||||
Printing migrations that differ between the versions:
|
||||
|
|
|
@ -11,6 +11,7 @@ from unittest.mock import patch
|
|||
import orjson
|
||||
from django.conf import settings
|
||||
from django.core.exceptions import ValidationError
|
||||
from django.core.management.base import CommandError
|
||||
from django.db.models import Q, QuerySet
|
||||
from django.utils.timezone import now as timezone_now
|
||||
from typing_extensions import override
|
||||
|
@ -2199,7 +2200,7 @@ class RealmImportExportTest(ExportFile):
|
|||
|
||||
with (
|
||||
patch("zerver.lib.import_realm.ZULIP_VERSION", "8.0"),
|
||||
self.assertRaises(Exception) as e,
|
||||
self.assertRaises(CommandError) as e,
|
||||
self.assertLogs(level="INFO"),
|
||||
):
|
||||
do_import_realm(
|
||||
|
@ -2207,9 +2208,9 @@ class RealmImportExportTest(ExportFile):
|
|||
"test-zulip",
|
||||
)
|
||||
expected_error_message = (
|
||||
"Export was generated on a different Zulip major version.\n"
|
||||
f"Export={ZULIP_VERSION}\n"
|
||||
"Server=8.0"
|
||||
"Error: Export was generated on a different Zulip major version.\n"
|
||||
f"Export version: {ZULIP_VERSION}\n"
|
||||
"Server version: 8.0"
|
||||
)
|
||||
self.assertEqual(expected_error_message, str(e.exception))
|
||||
|
||||
|
|
Loading…
Reference in New Issue