mirror of
https://github.com/zulip/zulip.git
synced 2025-11-11 09:27:43 +00:00
Using sys.exit in a management command makes it impossible
to unit test the code in question. The correct approach to do the same
thing in Django management commands is to raise CommandError.
Followup of b570c0dafa
34 lines
1.4 KiB
Python
34 lines
1.4 KiB
Python
|
|
from typing import Any
|
|
|
|
from django.db import ProgrammingError
|
|
|
|
from confirmation.models import generate_realm_creation_url
|
|
from zerver.lib.management import ZulipBaseCommand, CommandError
|
|
from zerver.models import Realm
|
|
|
|
class Command(ZulipBaseCommand):
|
|
help = """
|
|
Outputs a randomly generated, 1-time-use link for Organization creation.
|
|
Whoever visits the link can create a new organization on this server, regardless of whether
|
|
settings.OPEN_REALM_CREATION is enabled. The link would expire automatically after
|
|
settings.REALM_CREATION_LINK_VALIDITY_DAYS.
|
|
|
|
Usage: ./manage.py generate_realm_creation_link """
|
|
|
|
def handle(self, *args: Any, **options: Any) -> None:
|
|
try:
|
|
# first check if the db has been initalized
|
|
Realm.objects.first()
|
|
except ProgrammingError:
|
|
raise CommandError("The Zulip database does not appear to exist. "
|
|
"Have you run initialize-database?")
|
|
|
|
url = generate_realm_creation_url(by_admin=True)
|
|
self.stdout.write(self.style.SUCCESS("Please visit the following "
|
|
"secure single-use link to register your "))
|
|
self.stdout.write(self.style.SUCCESS("new Zulip organization:\033[0m"))
|
|
self.stdout.write("")
|
|
self.stdout.write(self.style.SUCCESS(" \033[1;92m%s\033[0m" % (url,)))
|
|
self.stdout.write("")
|