from django.core.management.base import BaseCommand, CommandError
import csv

class Command(BaseCommand):
    args = '<filename>'

    def handle(self, *args, **options):
        from django.db import models
        from pycon.core import safe_ascii_encode
        if len(args) != 1:
            raise CommandError('Enter at least one appname.')

        try:
            models = models.get_app('propmgr')
        except (ImproperlyConfigured, ImportError), e:
            raise CommandError(
                "%s. Are you sure your INSTALLED_APPS setting is correct?" % e)

        f = file(args[0],'w')
        csvf = csv.writer(f)
        props = models.Proposal.objects.filter(status='A', published=True)
        for prop in props:
            fancy_title = "%.3d %s %s (" % (prop.id, prop.level, prop.title)
            sub = unicode(prop.submitter)
            auths = [ unicode(u) for u in prop.coauthors.all() ]
            auths.insert(0, sub)
            auths = ', '.join(auths)
            fancy_title += auths
            fancy_title += ')'
            csvf.writerow([prop.id, prop.duration, prop.get_level_display(),
                           safe_ascii_encode(auths), prop.categories,
                           safe_ascii_encode(prop.title),
                           safe_ascii_encode(fancy_title)])
