management: Move commands to all use ZulipBaseCommand.

This commit is contained in:
Alex Vandiver 2024-05-24 14:49:56 +00:00 committed by Tim Abbott
parent a68bc645ed
commit 88be3246a0
36 changed files with 92 additions and 77 deletions

View File

@ -3,12 +3,12 @@ import time
from datetime import timedelta from datetime import timedelta
from typing import Any, Dict from typing import Any, Dict
from django.core.management.base import BaseCommand
from django.utils.timezone import now as timezone_now from django.utils.timezone import now as timezone_now
from typing_extensions import override from typing_extensions import override
from analytics.lib.counts import ALL_COUNT_STATS, CountStat from analytics.lib.counts import ALL_COUNT_STATS, CountStat
from analytics.models import installation_epoch from analytics.models import installation_epoch
from zerver.lib.management import ZulipBaseCommand
from zerver.lib.timestamp import TimeZoneNotUTCError, floor_to_day, floor_to_hour, verify_UTC from zerver.lib.timestamp import TimeZoneNotUTCError, floor_to_day, floor_to_hour, verify_UTC
from zerver.models import Realm from zerver.models import Realm
@ -20,7 +20,7 @@ states = {
} }
class Command(BaseCommand): class Command(ZulipBaseCommand):
help = """Checks FillState table. help = """Checks FillState table.
Run as a cron job that runs every hour.""" Run as a cron job that runs every hour."""

View File

@ -1,13 +1,14 @@
from argparse import ArgumentParser from argparse import ArgumentParser
from typing import Any from typing import Any
from django.core.management.base import BaseCommand, CommandError from django.core.management.base import CommandError
from typing_extensions import override from typing_extensions import override
from analytics.lib.counts import do_drop_all_analytics_tables from analytics.lib.counts import do_drop_all_analytics_tables
from zerver.lib.management import ZulipBaseCommand
class Command(BaseCommand): class Command(ZulipBaseCommand):
help = """Clear analytics tables.""" help = """Clear analytics tables."""
@override @override

View File

@ -1,13 +1,14 @@
from argparse import ArgumentParser from argparse import ArgumentParser
from typing import Any from typing import Any
from django.core.management.base import BaseCommand, CommandError from django.core.management.base import CommandError
from typing_extensions import override from typing_extensions import override
from analytics.lib.counts import ALL_COUNT_STATS, do_drop_single_stat from analytics.lib.counts import ALL_COUNT_STATS, do_drop_single_stat
from zerver.lib.management import ZulipBaseCommand
class Command(BaseCommand): class Command(ZulipBaseCommand):
help = """Clear analytics tables.""" help = """Clear analytics tables."""
@override @override

View File

@ -3,7 +3,6 @@ from datetime import timedelta
from typing import Any, Dict, List, Mapping, Type, Union from typing import Any, Dict, List, Mapping, Type, Union
from django.core.files.uploadedfile import UploadedFile from django.core.files.uploadedfile import UploadedFile
from django.core.management.base import BaseCommand
from django.utils.timezone import now as timezone_now from django.utils.timezone import now as timezone_now
from typing_extensions import TypeAlias, override from typing_extensions import TypeAlias, override
@ -21,6 +20,7 @@ from analytics.models import (
from zerver.actions.create_realm import do_create_realm from zerver.actions.create_realm import do_create_realm
from zerver.actions.users import do_change_user_role from zerver.actions.users import do_change_user_role
from zerver.lib.create_user import create_user from zerver.lib.create_user import create_user
from zerver.lib.management import ZulipBaseCommand
from zerver.lib.storage import static_path from zerver.lib.storage import static_path
from zerver.lib.stream_color import STREAM_ASSIGNMENT_COLORS from zerver.lib.stream_color import STREAM_ASSIGNMENT_COLORS
from zerver.lib.timestamp import floor_to_day from zerver.lib.timestamp import floor_to_day
@ -38,7 +38,7 @@ from zerver.models import (
from zerver.models.groups import SystemGroups from zerver.models.groups import SystemGroups
class Command(BaseCommand): class Command(ZulipBaseCommand):
help = """Populates analytics tables with randomly generated data.""" help = """Populates analytics tables with randomly generated data."""
DAYS_OF_DATA = 100 DAYS_OF_DATA = 100

View File

@ -5,19 +5,18 @@ from datetime import timezone
from typing import Any, Dict from typing import Any, Dict
from django.conf import settings from django.conf import settings
from django.core.management.base import BaseCommand
from django.utils.dateparse import parse_datetime from django.utils.dateparse import parse_datetime
from django.utils.timezone import now as timezone_now from django.utils.timezone import now as timezone_now
from typing_extensions import override from typing_extensions import override
from analytics.lib.counts import ALL_COUNT_STATS, logger, process_count_stat from analytics.lib.counts import ALL_COUNT_STATS, logger, process_count_stat
from zerver.lib.management import abort_unless_locked from zerver.lib.management import ZulipBaseCommand, abort_unless_locked
from zerver.lib.remote_server import send_server_data_to_push_bouncer from zerver.lib.remote_server import send_server_data_to_push_bouncer
from zerver.lib.timestamp import floor_to_hour from zerver.lib.timestamp import floor_to_hour
from zerver.models import Realm from zerver.models import Realm
class Command(BaseCommand): class Command(ZulipBaseCommand):
help = """Fills Analytics tables. help = """Fills Analytics tables.
Run as a cron job that runs every hour.""" Run as a cron job that runs every hour."""

View File

@ -1,13 +1,12 @@
from typing import Any from typing import Any
from django.core.management.base import BaseCommand
from typing_extensions import override from typing_extensions import override
from zerver.lib.management import abort_unless_locked from zerver.lib.management import ZulipBaseCommand, abort_unless_locked
from zerver.lib.retention import archive_messages, clean_archived_data from zerver.lib.retention import archive_messages, clean_archived_data
class Command(BaseCommand): class Command(ZulipBaseCommand):
@override @override
@abort_unless_locked @abort_unless_locked
def handle(self, *args: Any, **options: str) -> None: def handle(self, *args: Any, **options: str) -> None:

View File

@ -3,15 +3,16 @@ import time
from typing import Any, Callable, Optional from typing import Any, Callable, Optional
from django.conf import settings from django.conf import settings
from django.core.management.base import BaseCommand, CommandError, CommandParser from django.core.management.base import CommandError, CommandParser
from typing_extensions import override from typing_extensions import override
from zerver.lib.management import ZulipBaseCommand
from zerver.lib.partial import partial from zerver.lib.partial import partial
from zerver.lib.rate_limiter import RateLimitedUser, client from zerver.lib.rate_limiter import RateLimitedUser, client
from zerver.models.users import get_user_profile_by_id from zerver.models.users import get_user_profile_by_id
class Command(BaseCommand): class Command(ZulipBaseCommand):
help = """Checks Redis to make sure our rate limiting system hasn't grown a bug help = """Checks Redis to make sure our rate limiting system hasn't grown a bug
and left Redis with a bunch of data and left Redis with a bunch of data

View File

@ -1,12 +1,11 @@
from typing import Any from typing import Any
from django.core.management.base import BaseCommand
from typing_extensions import override from typing_extensions import override
from zerver.lib.management import check_config from zerver.lib.management import ZulipBaseCommand, check_config
class Command(BaseCommand): class Command(ZulipBaseCommand):
help = """Checks /etc/zulip/settings.py for common configuration issues.""" help = """Checks /etc/zulip/settings.py for common configuration issues."""
@override @override

View File

@ -16,12 +16,13 @@ Test out the realm:
go to browser and use your dev url go to browser and use your dev url
""" """
from django.core.management.base import BaseCommand, CommandError, CommandParser from django.core.management.base import CommandError, CommandParser
from zerver.data_import.mattermost import do_convert_data from zerver.data_import.mattermost import do_convert_data
from zerver.lib.management import ZulipBaseCommand
class Command(BaseCommand): class Command(ZulipBaseCommand):
help = """Convert the mattermost data into Zulip data format.""" help = """Convert the mattermost data into Zulip data format."""
@override @override

View File

@ -2,13 +2,14 @@ import argparse
import os import os
from typing import Any from typing import Any
from django.core.management.base import BaseCommand, CommandError, CommandParser from django.core.management.base import CommandError, CommandParser
from typing_extensions import override from typing_extensions import override
from zerver.data_import.rocketchat import do_convert_data from zerver.data_import.rocketchat import do_convert_data
from zerver.lib.management import ZulipBaseCommand
class Command(BaseCommand): class Command(ZulipBaseCommand):
help = """Convert the Rocketchat data into Zulip data format.""" help = """Convert the Rocketchat data into Zulip data format."""
@override @override

View File

@ -4,13 +4,14 @@ import tempfile
from typing import Any from typing import Any
from django.conf import settings from django.conf import settings
from django.core.management.base import BaseCommand, CommandError, CommandParser from django.core.management.base import CommandError, CommandParser
from typing_extensions import override from typing_extensions import override
from zerver.data_import.slack import do_convert_data from zerver.data_import.slack import do_convert_data
from zerver.lib.management import ZulipBaseCommand
class Command(BaseCommand): class Command(ZulipBaseCommand):
help = """Convert the Slack data into Zulip data format.""" help = """Convert the Slack data into Zulip data format."""
@override @override

View File

@ -1,12 +1,12 @@
from typing import Any from typing import Any
from django.core.management.base import BaseCommand
from typing_extensions import override from typing_extensions import override
from zerver.lib.management import ZulipBaseCommand
from zerver.lib.onboarding import create_if_missing_realm_internal_bots from zerver.lib.onboarding import create_if_missing_realm_internal_bots
class Command(BaseCommand): class Command(ZulipBaseCommand):
help = """\ help = """\
Create realm internal bots if absent, in all realms. Create realm internal bots if absent, in all realms.

View File

@ -2,18 +2,18 @@ from argparse import ArgumentParser
from datetime import timedelta from datetime import timedelta
from typing import Any from typing import Any
from django.core.management.base import BaseCommand, CommandError from django.core.management.base import CommandError
from django.utils.timezone import now as timezone_now from django.utils.timezone import now as timezone_now
from typing_extensions import override from typing_extensions import override
from zerver.actions.uploads import do_delete_old_unclaimed_attachments from zerver.actions.uploads import do_delete_old_unclaimed_attachments
from zerver.lib.attachments import get_old_unclaimed_attachments from zerver.lib.attachments import get_old_unclaimed_attachments
from zerver.lib.management import abort_unless_locked from zerver.lib.management import ZulipBaseCommand, abort_unless_locked
from zerver.lib.upload import all_message_attachments, delete_message_attachments from zerver.lib.upload import all_message_attachments, delete_message_attachments
from zerver.models import ArchivedAttachment, Attachment from zerver.models import ArchivedAttachment, Attachment
class Command(BaseCommand): class Command(ZulipBaseCommand):
help = """Remove unclaimed attachments from storage older than a supplied help = """Remove unclaimed attachments from storage older than a supplied
numerical value indicating the limit of how old the attachment can be. numerical value indicating the limit of how old the attachment can be.
The default is five weeks.""" The default is five weeks."""

View File

@ -10,12 +10,12 @@ import time
from typing import Any from typing import Any
from django.conf import settings from django.conf import settings
from django.core.management.base import BaseCommand
from django.db import transaction from django.db import transaction
from django.utils.timezone import now as timezone_now from django.utils.timezone import now as timezone_now
from typing_extensions import override from typing_extensions import override
from zerver.lib.logging_util import log_to_file from zerver.lib.logging_util import log_to_file
from zerver.lib.management import ZulipBaseCommand
from zerver.lib.send_email import EmailNotDeliveredError, deliver_scheduled_emails from zerver.lib.send_email import EmailNotDeliveredError, deliver_scheduled_emails
from zerver.models import ScheduledEmail from zerver.models import ScheduledEmail
@ -24,7 +24,7 @@ logger = logging.getLogger(__name__)
log_to_file(logger, settings.EMAIL_DELIVERER_LOG_PATH) log_to_file(logger, settings.EMAIL_DELIVERER_LOG_PATH)
class Command(BaseCommand): class Command(ZulipBaseCommand):
help = """Send emails queued by various parts of Zulip help = """Send emails queued by various parts of Zulip
for later delivery. for later delivery.

View File

@ -4,19 +4,19 @@ from datetime import timedelta
from typing import Any from typing import Any
from django.conf import settings from django.conf import settings
from django.core.management.base import BaseCommand
from django.utils.timezone import now as timezone_now from django.utils.timezone import now as timezone_now
from typing_extensions import override from typing_extensions import override
from zerver.actions.scheduled_messages import try_deliver_one_scheduled_message from zerver.actions.scheduled_messages import try_deliver_one_scheduled_message
from zerver.lib.logging_util import log_to_file from zerver.lib.logging_util import log_to_file
from zerver.lib.management import ZulipBaseCommand
## Setup ## ## Setup ##
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
log_to_file(logger, settings.DELIVER_SCHEDULED_MESSAGES_LOG_PATH) log_to_file(logger, settings.DELIVER_SCHEDULED_MESSAGES_LOG_PATH)
class Command(BaseCommand): class Command(ZulipBaseCommand):
help = """Deliver scheduled messages from the ScheduledMessage table. help = """Deliver scheduled messages from the ScheduledMessage table.
Run this command under supervisor. Run this command under supervisor.

View File

@ -26,10 +26,11 @@ from imaplib import IMAP4_SSL
from typing import Any, Generator from typing import Any, Generator
from django.conf import settings from django.conf import settings
from django.core.management.base import BaseCommand, CommandError from django.core.management.base import CommandError
from typing_extensions import override from typing_extensions import override
from zerver.lib.email_mirror import logger, process_message from zerver.lib.email_mirror import logger, process_message
from zerver.lib.management import ZulipBaseCommand
## Setup ## ## Setup ##
@ -79,7 +80,7 @@ def get_imap_messages() -> Generator[EmailMessage, None, None]:
mbox.logout() mbox.logout()
class Command(BaseCommand): class Command(ZulipBaseCommand):
help = __doc__ help = __doc__
@override @override

View File

@ -3,20 +3,19 @@ from datetime import timedelta
from typing import Any from typing import Any
from django.conf import settings from django.conf import settings
from django.core.management.base import BaseCommand
from django.utils.timezone import now as timezone_now from django.utils.timezone import now as timezone_now
from typing_extensions import override from typing_extensions import override
from zerver.lib.digest import DIGEST_CUTOFF, enqueue_emails from zerver.lib.digest import DIGEST_CUTOFF, enqueue_emails
from zerver.lib.logging_util import log_to_file from zerver.lib.logging_util import log_to_file
from zerver.lib.management import abort_unless_locked from zerver.lib.management import ZulipBaseCommand, abort_unless_locked
## Logging setup ## ## Logging setup ##
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
log_to_file(logger, settings.DIGEST_LOG_PATH) log_to_file(logger, settings.DIGEST_LOG_PATH)
class Command(BaseCommand): class Command(ZulipBaseCommand):
help = """Enqueue digest emails for users that haven't checked the app help = """Enqueue digest emails for users that haven't checked the app
in a while. in a while.
""" """

View File

@ -3,9 +3,9 @@ from argparse import ArgumentParser
from typing import IO, Any from typing import IO, Any
import orjson import orjson
from django.core.management.base import BaseCommand
from typing_extensions import override from typing_extensions import override
from zerver.lib.management import ZulipBaseCommand
from zerver.lib.queue import queue_json_publish from zerver.lib.queue import queue_json_publish
@ -31,7 +31,7 @@ def enqueue_file(queue_name: str, f: IO[str]) -> None:
queue_json_publish(queue_name, data, error) queue_json_publish(queue_name, data, error)
class Command(BaseCommand): class Command(ZulipBaseCommand):
help = """Read JSON lines from a file and enqueue them to a worker queue. help = """Read JSON lines from a file and enqueue them to a worker queue.
Each line in the file should either be a JSON payload or two tab-separated Each line in the file should either be a JSON payload or two tab-separated

View File

@ -4,13 +4,13 @@ import os
from argparse import ArgumentParser from argparse import ArgumentParser
from typing import Any from typing import Any
from django.core.management.base import BaseCommand
from typing_extensions import override from typing_extensions import override
from zerver.lib.export import export_usermessages_batch from zerver.lib.export import export_usermessages_batch
from zerver.lib.management import ZulipBaseCommand
class Command(BaseCommand): class Command(ZulipBaseCommand):
help = """UserMessage fetching helper for export.py""" help = """UserMessage fetching helper for export.py"""
@override @override

View File

@ -1,13 +1,13 @@
from argparse import ArgumentParser from argparse import ArgumentParser
from typing import Any, Optional from typing import Any, Optional
from django.core.management.base import BaseCommand
from typing_extensions import override from typing_extensions import override
from zerver.lib.cache_helpers import cache_fillers, fill_remote_cache from zerver.lib.cache_helpers import cache_fillers, fill_remote_cache
from zerver.lib.management import ZulipBaseCommand
class Command(BaseCommand): class Command(ZulipBaseCommand):
@override @override
def add_arguments(self, parser: ArgumentParser) -> None: def add_arguments(self, parser: ArgumentParser) -> None:
parser.add_argument( parser.add_argument(

View File

@ -2,15 +2,15 @@ import argparse
import os import os
from typing import Any from typing import Any
from django.core.management.base import BaseCommand
from django.db import DEFAULT_DB_ALIAS from django.db import DEFAULT_DB_ALIAS
from typing_extensions import override from typing_extensions import override
from scripts.lib.zulip_tools import get_dev_uuid_var_path from scripts.lib.zulip_tools import get_dev_uuid_var_path
from zerver.lib.management import ZulipBaseCommand
from zerver.lib.test_fixtures import get_migration_status from zerver.lib.test_fixtures import get_migration_status
class Command(BaseCommand): class Command(ZulipBaseCommand):
help = "Get status of migrations." help = "Get status of migrations."
@override @override

View File

@ -8,14 +8,15 @@ from typing import Any
from django.conf import settings from django.conf import settings
from django.core.exceptions import ValidationError from django.core.exceptions import ValidationError
from django.core.management import call_command from django.core.management import call_command
from django.core.management.base import BaseCommand, CommandError, CommandParser from django.core.management.base import CommandError, CommandParser
from typing_extensions import override from typing_extensions import override
from zerver.forms import OverridableValidationError, check_subdomain_available from zerver.forms import OverridableValidationError, check_subdomain_available
from zerver.lib.import_realm import do_import_realm from zerver.lib.import_realm import do_import_realm
from zerver.lib.management import ZulipBaseCommand
class Command(BaseCommand): class Command(ZulipBaseCommand):
help = """Import extracted Zulip database dump directories into a fresh Zulip instance. help = """Import extracted Zulip database dump directories into a fresh Zulip instance.
This command should be used only on a newly created, empty Zulip instance to This command should be used only on a newly created, empty Zulip instance to

View File

@ -9,11 +9,12 @@ from types import FrameType
from typing import Any, Iterator, List, Optional from typing import Any, Iterator, List, Optional
from django.conf import settings from django.conf import settings
from django.core.management.base import BaseCommand, CommandError from django.core.management.base import CommandError
from django.utils import autoreload from django.utils import autoreload
from sentry_sdk import configure_scope from sentry_sdk import configure_scope
from typing_extensions import override from typing_extensions import override
from zerver.lib.management import ZulipBaseCommand
from zerver.worker.queue_processors import get_active_worker_queues, get_worker from zerver.worker.queue_processors import get_active_worker_queues, get_worker
@ -33,7 +34,7 @@ def log_and_exit_if_exception(
sys.exit(1) sys.exit(1)
class Command(BaseCommand): class Command(ZulipBaseCommand):
@override @override
def add_arguments(self, parser: ArgumentParser) -> None: def add_arguments(self, parser: ArgumentParser) -> None:
parser.add_argument("--queue_name", metavar="<queue name>", help="queue to process") parser.add_argument("--queue_name", metavar="<queue name>", help="queue to process")

View File

@ -2,14 +2,14 @@ from argparse import ArgumentParser
from typing import Any from typing import Any
from django.core.management import CommandError from django.core.management import CommandError
from django.core.management.base import BaseCommand
from typing_extensions import override from typing_extensions import override
from zerver.lib.management import ZulipBaseCommand
from zerver.lib.queue import SimpleQueueClient from zerver.lib.queue import SimpleQueueClient
from zerver.worker.queue_processors import get_active_worker_queues from zerver.worker.queue_processors import get_active_worker_queues
class Command(BaseCommand): class Command(ZulipBaseCommand):
@override @override
def add_arguments(self, parser: ArgumentParser) -> None: def add_arguments(self, parser: ArgumentParser) -> None:
parser.add_argument(dest="queue_name", nargs="?", help="queue to purge") parser.add_argument(dest="queue_name", nargs="?", help="queue to purge")

View File

@ -1,13 +1,13 @@
from argparse import ArgumentParser from argparse import ArgumentParser
from typing import Any from typing import Any
from django.core.management.base import BaseCommand
from typing_extensions import override from typing_extensions import override
from zerver.lib.management import ZulipBaseCommand
from zproject.backends import query_ldap from zproject.backends import query_ldap
class Command(BaseCommand): class Command(ZulipBaseCommand):
@override @override
def add_arguments(self, parser: ArgumentParser) -> None: def add_arguments(self, parser: ArgumentParser) -> None:
parser.add_argument("email", metavar="<email>", help="email of user to query") parser.add_argument("email", metavar="<email>", help="email of user to query")

View File

@ -7,10 +7,12 @@ from urllib.parse import SplitResult
from asgiref.sync import async_to_sync, sync_to_async from asgiref.sync import async_to_sync, sync_to_async
from django.conf import settings from django.conf import settings
from django.core.management.base import BaseCommand, CommandError, CommandParser from django.core.management.base import CommandError, CommandParser
from tornado.platform.asyncio import AsyncIOMainLoop from tornado.platform.asyncio import AsyncIOMainLoop
from typing_extensions import override from typing_extensions import override
from zerver.lib.management import ZulipBaseCommand
settings.RUNNING_INSIDE_TORNADO = True settings.RUNNING_INSIDE_TORNADO = True
if settings.PRODUCTION: if settings.PRODUCTION:
settings.SECURE_PROXY_SSL_HEADER = ("HTTP_X_FORWARDED_PROTO", "https") settings.SECURE_PROXY_SSL_HEADER = ("HTTP_X_FORWARDED_PROTO", "https")
@ -34,7 +36,7 @@ if settings.USING_RABBITMQ:
asyncio.set_event_loop_policy(NoAutoCreateEventLoopPolicy()) asyncio.set_event_loop_policy(NoAutoCreateEventLoopPolicy())
class Command(BaseCommand): class Command(ZulipBaseCommand):
help = "Starts a Tornado Web server wrapping Django." help = "Starts a Tornado Web server wrapping Django."
@override @override

View File

@ -1,13 +1,14 @@
from typing import Any from typing import Any
from django.conf import settings from django.conf import settings
from django.core.management.base import BaseCommand, CommandError, CommandParser from django.core.management.base import CommandError, CommandParser
from typing_extensions import override from typing_extensions import override
from zerver.lib.management import ZulipBaseCommand
from zerver.lib.transfer import transfer_uploads_to_s3 from zerver.lib.transfer import transfer_uploads_to_s3
class Command(BaseCommand): class Command(ZulipBaseCommand):
help = """Transfer uploads to S3 """ help = """Transfer uploads to S3 """
@override @override

View File

@ -1,6 +1,5 @@
from typing import Any, Dict, List from typing import Any, Dict, List
from django.core.management.base import BaseCommand
from typing_extensions import override from typing_extensions import override
from zerver.actions.create_user import do_create_user from zerver.actions.create_user import do_create_user
@ -9,13 +8,14 @@ from zerver.actions.reactions import do_add_reaction
from zerver.actions.streams import bulk_add_subscriptions from zerver.actions.streams import bulk_add_subscriptions
from zerver.actions.user_settings import do_change_avatar_fields from zerver.actions.user_settings import do_change_avatar_fields
from zerver.lib.emoji import get_emoji_data from zerver.lib.emoji import get_emoji_data
from zerver.lib.management import ZulipBaseCommand
from zerver.lib.streams import ensure_stream from zerver.lib.streams import ensure_stream
from zerver.lib.upload import upload_avatar_image from zerver.lib.upload import upload_avatar_image
from zerver.models import Message, UserProfile from zerver.models import Message, UserProfile
from zerver.models.realms import get_realm from zerver.models.realms import get_realm
class Command(BaseCommand): class Command(ZulipBaseCommand):
help = """Add a mock conversation to the development environment. help = """Add a mock conversation to the development environment.
Usage: ./manage.py add_mock_conversation Usage: ./manage.py add_mock_conversation

View File

@ -1,16 +1,17 @@
from datetime import datetime, timezone from datetime import datetime, timezone
from typing import Any from typing import Any
from django.core.management.base import BaseCommand, CommandParser from django.core.management.base import CommandParser
from django.utils.timezone import now as timezone_now from django.utils.timezone import now as timezone_now
from typing_extensions import override from typing_extensions import override
from corporate.lib.stripe import RemoteServerBillingSession from corporate.lib.stripe import RemoteServerBillingSession
from scripts.lib.zulip_tools import TIMESTAMP_FORMAT from scripts.lib.zulip_tools import TIMESTAMP_FORMAT
from zerver.lib.management import ZulipBaseCommand
from zilencer.models import RemoteZulipServer from zilencer.models import RemoteZulipServer
class Command(BaseCommand): class Command(ZulipBaseCommand):
help = "Assigns an existing RemoteZulipServer to the legacy plan" help = "Assigns an existing RemoteZulipServer to the legacy plan"
@override @override

View File

@ -1,11 +1,13 @@
from typing import Any from typing import Any
import orjson import orjson
from django.core.management.base import BaseCommand, CommandParser from django.core.management.base import CommandParser
from typing_extensions import override from typing_extensions import override
from zerver.lib.management import ZulipBaseCommand
class Command(BaseCommand):
class Command(ZulipBaseCommand):
help = """ help = """
Compare rendered messages from files. Compare rendered messages from files.
Usage: ./manage.py compare_messages <dump1> <dump2> Usage: ./manage.py compare_messages <dump1> <dump2>

View File

@ -3,14 +3,14 @@ from typing import Any
import bmemcached import bmemcached
from django.conf import settings from django.conf import settings
from django.core.cache import cache from django.core.cache import cache
from django.core.management.base import BaseCommand
from django.db.models import F from django.db.models import F
from typing_extensions import override from typing_extensions import override
from zerver.lib.management import ZulipBaseCommand
from zerver.models import UserMessage from zerver.models import UserMessage
class Command(BaseCommand): class Command(ZulipBaseCommand):
help = """Script to mark all messages as unread.""" help = """Script to mark all messages as unread."""
@override @override

View File

@ -6,7 +6,7 @@ from typing import Any, Dict, Optional
import stripe import stripe
from django.conf import settings from django.conf import settings
from django.core.management.base import BaseCommand, CommandParser from django.core.management.base import CommandParser
from django.utils.timezone import now as timezone_now from django.utils.timezone import now as timezone_now
from typing_extensions import override from typing_extensions import override
@ -24,6 +24,7 @@ from zerver.actions.create_realm import do_create_realm
from zerver.actions.create_user import do_create_user from zerver.actions.create_user import do_create_user
from zerver.actions.streams import bulk_add_subscriptions from zerver.actions.streams import bulk_add_subscriptions
from zerver.apps import flush_cache from zerver.apps import flush_cache
from zerver.lib.management import ZulipBaseCommand
from zerver.lib.remote_server import get_realms_info_for_push_bouncer from zerver.lib.remote_server import get_realms_info_for_push_bouncer
from zerver.lib.streams import create_stream_if_needed from zerver.lib.streams import create_stream_if_needed
from zerver.models import Realm, UserProfile from zerver.models import Realm, UserProfile
@ -63,7 +64,7 @@ class CustomerProfile:
remote_server_plan_start_date: str = "billing_cycle_end_date" remote_server_plan_start_date: str = "billing_cycle_end_date"
class Command(BaseCommand): class Command(ZulipBaseCommand):
help = "Populate database with different types of realms that can exist." help = "Populate database with different types of realms that can exist."
@override @override

View File

@ -11,7 +11,7 @@ from django.conf import settings
from django.contrib.sessions.models import Session from django.contrib.sessions.models import Session
from django.core.files.base import File from django.core.files.base import File
from django.core.management import call_command from django.core.management import call_command
from django.core.management.base import BaseCommand, CommandParser from django.core.management.base import CommandParser
from django.core.validators import validate_email from django.core.validators import validate_email
from django.db import connection from django.db import connection
from django.db.models import F from django.db.models import F
@ -36,6 +36,7 @@ from zerver.actions.user_settings import do_change_user_setting
from zerver.actions.users import do_change_user_role from zerver.actions.users import do_change_user_role
from zerver.lib.bulk_create import bulk_create_streams from zerver.lib.bulk_create import bulk_create_streams
from zerver.lib.generate_test_data import create_test_data, generate_topics from zerver.lib.generate_test_data import create_test_data, generate_topics
from zerver.lib.management import ZulipBaseCommand
from zerver.lib.onboarding import create_if_missing_realm_internal_bots from zerver.lib.onboarding import create_if_missing_realm_internal_bots
from zerver.lib.push_notifications import logger as push_notifications_logger from zerver.lib.push_notifications import logger as push_notifications_logger
from zerver.lib.remote_server import get_realms_info_for_push_bouncer from zerver.lib.remote_server import get_realms_info_for_push_bouncer
@ -201,7 +202,7 @@ def create_alert_words(realm_id: int) -> None:
AlertWord.objects.bulk_create(recs) AlertWord.objects.bulk_create(recs)
class Command(BaseCommand): class Command(ZulipBaseCommand):
help = "Populate a test database" help = "Populate a test database"
@override @override

View File

@ -2,14 +2,15 @@ import csv
from timeit import timeit from timeit import timeit
from typing import Any, Union from typing import Any, Union
from django.core.management.base import BaseCommand, CommandParser from django.core.management.base import CommandParser
from typing_extensions import override from typing_extensions import override
from zerver.lib.management import ZulipBaseCommand
from zerver.lib.queue import SimpleQueueClient, queue_json_publish from zerver.lib.queue import SimpleQueueClient, queue_json_publish
from zerver.worker.test import BatchNoopWorker, NoopWorker from zerver.worker.test import BatchNoopWorker, NoopWorker
class Command(BaseCommand): class Command(ZulipBaseCommand):
help = """Times the overhead of enqueuing and dequeuing messages from RabbitMQ.""" help = """Times the overhead of enqueuing and dequeuing messages from RabbitMQ."""
@override @override

View File

@ -2,10 +2,11 @@ import os
from typing import Any, Iterator from typing import Any, Iterator
import orjson import orjson
from django.core.management.base import BaseCommand, CommandParser from django.core.management.base import CommandParser
from django.db.models import QuerySet from django.db.models import QuerySet
from typing_extensions import override from typing_extensions import override
from zerver.lib.management import ZulipBaseCommand
from zerver.lib.markdown import render_message_markdown from zerver.lib.markdown import render_message_markdown
from zerver.models import Message from zerver.models import Message
@ -19,7 +20,7 @@ def queryset_iterator(queryset: QuerySet[Message], chunksize: int = 5000) -> Ite
queryset = queryset.filter(id__gt=msg_id) queryset = queryset.filter(id__gt=msg_id)
class Command(BaseCommand): class Command(ZulipBaseCommand):
help = """ help = """
Render messages to a file. Render messages to a file.
Usage: ./manage.py render_messages <destination> [--amount=10000] Usage: ./manage.py render_messages <destination> [--amount=10000]

View File

@ -2,15 +2,15 @@ import os
from configparser import ConfigParser from configparser import ConfigParser
from typing import Any from typing import Any
from django.core.management.base import BaseCommand
from typing_extensions import override from typing_extensions import override
from zerver.lib.management import ZulipBaseCommand
from zerver.models import UserProfile from zerver.models import UserProfile
from zerver.models.realms import get_realm from zerver.models.realms import get_realm
from zerver.models.users import get_user_by_delivery_email from zerver.models.users import get_user_by_delivery_email
class Command(BaseCommand): class Command(ZulipBaseCommand):
help = """Sync your API key from ~/.zuliprc into your development instance""" help = """Sync your API key from ~/.zuliprc into your development instance"""
@override @override