from django.core.management.base import NoArgsCommand
from django.template import RequestContext, Context, loader

class Command(NoArgsCommand):
    help = ''

    def handle_noargs(self, **options):
        from django.db import models
        from django.conf import settings
        from pycon.core import mail
        if not hasattr(settings, 'PROPMGR_STATS_EMAIL_TO'):
            raise CommandError(
                "Could not find PROPMGR_STATS_EMAIL_TO in settings.")
        if not hasattr(settings, 'PROPMGR_FROM_EMAIL'):
            raise CommandError(
                "Could not find PROPMGR_FROM_EMAIL in settings.")
        try:
            app = models.get_app('propmgr')
        except (ImproperlyConfigured, ImportError), e:
            raise CommandError(
                "%s. Are you sure your INSTALLED_APPS setting is correct?" % e)


        print "loading template"
        t = loader.get_template("propmgr/email/proposal_stats.txt")
        print "loading stats"
        c = { 'stats': app.generate_proposal_stats(), 'settings': settings }
        print "rendering"
        message = t.render(Context(c))
        if not settings.PROPMGR_FROM_EMAIL and settings.DEBUG:
            print message
            return
        print "sending messages"
        mail.send_mail(getattr(settings, 'CONFERENCE_NAME', '') +
                       ' Talk Proposal Stats',
                       message, settings.PROPMGR_FROM_EMAIL,
                       settings.PROPMGR_STATS_EMAIL_TO,
                       replyto_email=getattr(settings,
                                             'PROPMGR_REPLYTO_EMAIL', None))
        print "Sent:\n", message
