from django.core.management.base import LabelCommand, CommandError
from ldt.ldt_utils.models import Content
from optparse import make_option
from django.db import transaction
class Command(LabelCommand):
help = 'init front project for content'
option_list = LabelCommand.option_list + (
make_option('--noinput', action='store_false', dest='interactive', default=True,
help='Tells to NOT prompt the user for input of any kind.'),
make_option('--all-yes', action='store_true', dest='allyes',
default=False, help='Answer yes to all question'),
)
def handle_label(self, label, **options):
interactive = options.get('interactive')
allyes = options.get('allyes')
try:
content = Content.objects.get_by_natural_key(label)
except Content.DoesNotExist:
raise CommandError("Content \"%s\" does not exists." % label)
if content is None:
raise CommandError("Content \"%s\" does not exists." % label)
do_delete = allyes
if interactive and (not do_delete) and content.front_project is not None:
confirm = raw_input("""The content already has a front project. Do you want to delete it ?
Type 'yes' to delete, or 'no' to keep: """)
do_delete = (confirm == "yes")
with transaction.atomic():
if do_delete:
fp = content.front_project
content.front_project = None
content.save()
fp.contents.clear()
fp.delete()
content.create_front_project()
self.stdout.write('Successfully created front project for content "%s"' % label)