south.management.commands.migrationcheck: 49 total statements, 0.0% covered

Generated: Wed 2013-03-13 10:33 CET

Source file: /media/Envs/Envs/filer-gallery/lib/python2.7/site-packages/south/management/commands/migrationcheck.py

Stats: 0 executed, 39 missed, 10 excluded, 18 ignored

  1. from django.core.exceptions import ImproperlyConfigured
  2. from django.core.management import call_command, CommandError
  3. from django.core.management.base import BaseCommand
  4. from django.conf import settings
  5. from django.db.models import loading
  6. from django.test import simple
  7. from south.migration import Migrations
  8. from south.exceptions import NoMigrations
  9. from south.hacks import hacks
  10. class Command(BaseCommand):
  11. help = "Runs migrations for each app in turn, detecting missing depends_on values."
  12. usage_str = "Usage: ./manage.py migrationcheck"
  13. def handle(self, check_app_name=None, **options):
  14. runner = simple.DjangoTestSuiteRunner(verbosity=0)
  15. err_msg = "Failed to migrate %s; see output for hints at missing dependencies:\n"
  16. hacks.patch_flush_during_test_db_creation()
  17. failures = 0
  18. if check_app_name is None:
  19. app_names = settings.INSTALLED_APPS
  20. else:
  21. app_names = [check_app_name]
  22. for app_name in app_names:
  23. app_label = app_name.split(".")[-1]
  24. if app_name == 'south':
  25. continue
  26. try:
  27. Migrations(app_name)
  28. except (NoMigrations, ImproperlyConfigured):
  29. continue
  30. app = loading.get_app(app_label)
  31. verbosity = int(options.get('verbosity', 1))
  32. if verbosity >= 1:
  33. self.stderr.write("processing %s\n" % app_name)
  34. old_config = runner.setup_databases()
  35. try:
  36. call_command('migrate', app_label, noinput=True, verbosity=verbosity)
  37. for model in loading.get_models(app):
  38. dummy = model._default_manager.exists()
  39. except (KeyboardInterrupt, SystemExit):
  40. raise
  41. except Exception, e:
  42. failures += 1
  43. if verbosity >= 1:
  44. self.stderr.write(err_msg % app_name)
  45. self.stderr.write("%s\n" % e)
  46. finally:
  47. runner.teardown_databases(old_config)
  48. if failures > 0:
  49. raise CommandError("Missing depends_on found in %s app(s)." % failures)
  50. self.stderr.write("No missing depends_on found.\n")
  51. #
  52. #for each app:
  53. # start with blank db.
  54. # syncdb only south (and contrib?)
  55. #
  56. # migrate a single app all the way up. any errors is missing depends_on.
  57. # for all models of that app, try the default manager:
  58. # from django.db.models import loading
  59. # for m in loading.get_models(loading.get_app('a')):
  60. # m._default_manager.exists()
  61. # Any error is also a missing depends on.