[manual] Rename Django app from zephyr to zerver.

This needs to be deployed to both staging and prod at the same
off-peak time (and the schema migration run).

At the time it is deployed, we need to make a few changes directly in
the database:

(1) UPDATE django_content_type set app_label='zerver' where app_label='zephyr';
(2) UPDATE south_migrationhistory set app_name='zerver' where app_name='zephyr';

(imported from commit eb3fd719571740189514ef0b884738cb30df1320)
This commit is contained in:
Tim Abbott
2013-07-29 17:03:31 -04:00
parent 950d271bc3
commit e111a2f9a5
406 changed files with 608 additions and 378 deletions

View File

@@ -0,0 +1,53 @@
from __future__ import absolute_import
from django.core.management.base import BaseCommand
from zerver.models import Subscription, Recipient, Message, Stream, \
get_user_profile_by_email
from django.db.models import Q
import datetime
import pytz
from optparse import make_option
class Command(BaseCommand):
help = """Delete all inactive tutorial stream subscriptions."""
option_list = BaseCommand.option_list + (
make_option('-f', '--for-real',
dest='for_real',
action='store_true',
default=False,
help="Actually deactive subscriptions. Default is a dry run."),
)
def has_sent_to(self, user_profile, recipient):
return Message.objects.filter(sender=user_profile, recipient=recipient).count() != 0
def handle(self, **options):
possible_tutorial_streams = Stream.objects.filter(Q(name__startswith='tutorial-'))
tutorial_bot = get_user_profile_by_email("tutorial-bot@zulip.com")
for stream in possible_tutorial_streams:
recipient = Recipient.objects.get(type=Recipient.STREAM, type_id=stream.id)
subscribers = Subscription.objects.filter(recipient=recipient, active=True)
if ((subscribers.count() == 1) and self.has_sent_to(tutorial_bot, recipient)):
# This is a tutorial stream.
most_recent_message = Message.objects.filter(
recipient=recipient).latest("pub_date")
# This cutoff must be more generous than the tutorial bot cutoff
# in the client code.
cutoff = datetime.datetime.now(tz=pytz.utc) - datetime.timedelta(hours=2)
if most_recent_message.pub_date < cutoff:
# The tutorial has expired, so delete the stream.
print stream.name, most_recent_message.pub_date
if options["for_real"]:
tutorial_user = subscribers[0]
tutorial_user.active = False
tutorial_user.save(update_fields=["active"])
if options["for_real"]:
print "Subscriptions deactivated."
else:
print "This was a dry run. Pass -f to actually deactivate."