from django.core.management.base import BaseCommand, CommandError
from django.contrib.flatpages.models import FlatPage
from django.utils.encoding import smart_str, force_unicode
from django.contrib.sites.models import Site
import imp

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

    def handle(self, *args, **options):
        from django.db import models
        if len(args) != 1 and len(args) != 2:
            raise CommandError('an output filename must be supplied.')

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

        if len(args) == 2:
            comment = args[1]
        else:
            comment = u'Initial import from ' + args[0]

        export = imp.load_module('export', open(args[0], 'U'), args[0] + '.py', ('.py', 'U', 1))
        for url, content in export.pages:
            print "importing", url
            rstp = models.FlatPageHistory()
            page = FlatPage()
            page.url = force_unicode(url)
            page.title = u'Error: Page faild to save properly'
            page.content = models.WARNING + u'Error: Page failed to save properly.'
            page.enable_comments = False
            page.registration_required = False
            page.save()
            page.sites = [ Site.objects.get_current() ]
            page.save()
            rstp.page = page
            rstp.content = force_unicode(content)
            rstp.username = u'importer'
            rstp.comment = comment
            rstp.save()
