loaddata.py 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. from django.conf import settings
  2. from django.core.management.base import BaseCommand, CommandError
  3. from django.db import (connections, router, transaction, DEFAULT_DB_ALIAS,
  4. IntegrityError, DatabaseError)
  5. from django.utils import timezone
  6. from misago.setup.fixtures import load_app_fixtures, update_app_fixtures
  7. from misago.setup.models import Fixture
  8. from optparse import make_option
  9. class Command(BaseCommand):
  10. """
  11. Loads Misago fixtures
  12. """
  13. help = 'Load Misago fixtures'
  14. option_list = BaseCommand.option_list + (
  15. make_option('--quiet',
  16. action='store_true',
  17. dest='quiet',
  18. default=False,
  19. help='Dont display output from this message'),
  20. )
  21. def handle(self, *args, **options):
  22. if not options['quiet']:
  23. self.stdout.write('\nLoading data from fixtures...')
  24. fixture_data = {}
  25. for fixture in Fixture.objects.all():
  26. fixture_data[fixture.app_name] = fixture
  27. loaded = 0
  28. updated = 0
  29. for app in settings.INSTALLED_APPS_COMPLETE:
  30. if app in fixture_data:
  31. if update_app_fixtures(app):
  32. updated += 1
  33. if not options['quiet']:
  34. self.stdout.write('\nUpdating fixtures from %s' % app)
  35. else:
  36. if load_app_fixtures(app):
  37. loaded += 1
  38. Fixture.objects.create(app_name=app)
  39. if not options['quiet']:
  40. self.stdout.write('\nLoading fixtures from %s' % app)
  41. if not options['quiet']:
  42. self.stdout.write('\nLoaded %s fixtures and updated %s fixtures.\n' % (loaded, updated))