mirror of
https://github.com/zulip/zulip.git
synced 2025-11-01 20:44:04 +00:00
We now set tos_version to "-1" for imported users and the ones created using API or using other methods like LDAP, SCIM and management commands. This value will help us to allow users to change email address visibility setting during first login.
67 lines
2.4 KiB
Python
67 lines
2.4 KiB
Python
import argparse
|
|
from typing import Any
|
|
|
|
from django.core.management.base import CommandError
|
|
|
|
from zerver.actions.create_realm import do_create_realm
|
|
from zerver.actions.create_user import do_create_user
|
|
from zerver.lib.management import ZulipBaseCommand
|
|
from zerver.models import UserProfile
|
|
|
|
|
|
class Command(ZulipBaseCommand):
|
|
help = """\
|
|
Create a new Zulip organization (realm) via the command line.
|
|
|
|
We recommend `./manage.py generate_realm_creation_link` for most
|
|
users, for several reasons:
|
|
|
|
* Has a more user-friendly web flow for account creation.
|
|
* Manages passwords in a more natural way.
|
|
* Automatically logs the user in during account creation.
|
|
|
|
This management command is available as an alternative for situations
|
|
where one wants to script the realm creation process.
|
|
|
|
Since every Zulip realm must have an owner, this command creates the
|
|
initial organization owner user for the new realm, using the same
|
|
workflow as `./manage.py create_user`.
|
|
"""
|
|
|
|
def add_arguments(self, parser: argparse.ArgumentParser) -> None:
|
|
parser.add_argument("realm_name", help="Name for the new organization")
|
|
parser.add_argument(
|
|
"--string-id",
|
|
help="Subdomain for the new organization. Empty if root domain.",
|
|
default="",
|
|
)
|
|
self.add_create_user_args(parser)
|
|
|
|
def handle(self, *args: Any, **options: str) -> None:
|
|
realm_name = options["realm_name"]
|
|
string_id = options["string_id"]
|
|
|
|
create_user_params = self.get_create_user_params(options)
|
|
|
|
try:
|
|
realm = do_create_realm(string_id=string_id, name=realm_name)
|
|
except AssertionError as e:
|
|
raise CommandError(str(e))
|
|
|
|
do_create_user(
|
|
create_user_params.email,
|
|
create_user_params.password,
|
|
realm,
|
|
create_user_params.full_name,
|
|
# Explicitly set tos_version=-1. This means that users
|
|
# created via this mechanism would be prompted to set
|
|
# the email_address_visibility setting on first login.
|
|
# For servers that have configured Terms of Service,
|
|
# users will also be prompted to accept the Terms of
|
|
# Service on first login.
|
|
role=UserProfile.ROLE_REALM_OWNER,
|
|
realm_creation=True,
|
|
tos_version=UserProfile.TOS_VERSION_BEFORE_FIRST_LOGIN,
|
|
acting_user=None,
|
|
)
|