from __future__ import absolute_import

from django.core.management.base import BaseCommand

from zerver.models import Message
import datetime
import time

class Command(BaseCommand):
    help = """Render all historical messages that haven't been rendered yet.

Usage: python manage.py render_old_messages"""

    def handle(self, *args, **options):
        total_rendered = 0
        while True:
            messages = Message.objects.filter(rendered_content_version=None)[0:100]
            if len(messages) == 0:
                break
            for message in messages:
                message.maybe_render_content(None, save=True)
            total_rendered += len(messages)
            print datetime.datetime.now(), total_rendered
            # Put in some sleep so this can run safely on low resource machines
            time.sleep(0.25)
