management: Delete fix_unreads command.

This command was part of the complex migration to introduce the
`unread_msgs` data structure as the source of truth for unreads.
Effectively, it's a migration to remove anomalies that we ran several
times before turning it into the final 0104_fix_unreads.py migration.

Fixes part of #18898.
This commit is contained in:
Gaurav Pandey 2021-06-25 12:49:35 +05:30 committed by Tim Abbott
parent af08bcdb3f
commit 1d12fcd168
1 changed files with 0 additions and 57 deletions

View File

@ -1,57 +0,0 @@
import logging
from argparse import ArgumentParser
from typing import Any, List, Optional
from django.db import connection
from zerver.lib.fix_unreads import fix
from zerver.lib.management import CommandError, ZulipBaseCommand
from zerver.models import Realm, UserProfile
logging.getLogger("zulip.fix_unreads").setLevel(logging.INFO)
class Command(ZulipBaseCommand):
help = """Fix problems related to unread counts."""
def add_arguments(self, parser: ArgumentParser) -> None:
parser.add_argument(
"emails", metavar="<emails>", nargs="*", help="email address to spelunk"
)
parser.add_argument("--all", action="store_true", help="fix all users in specified realm")
self.add_realm_args(parser)
def fix_all_users(self, realm: Realm) -> None:
user_profiles = list(
UserProfile.objects.filter(
realm=realm,
is_bot=False,
)
)
for user_profile in user_profiles:
fix(user_profile)
connection.commit()
def fix_emails(self, realm: Optional[Realm], emails: List[str]) -> None:
for email in emails:
try:
user_profile = self.get_user(email, realm)
except CommandError:
print(f"e-mail {email} doesn't exist in the realm {realm}, skipping")
return
fix(user_profile)
connection.commit()
def handle(self, *args: Any, **options: Any) -> None:
realm = self.get_realm(options)
if options["all"]:
if realm is None:
raise CommandError("You must specify a realm if you choose the --all option.")
self.fix_all_users(realm)
return
self.fix_emails(realm, options["emails"])