Migrated built-in AppCommands to use handle_app_config.

This commit is contained in:
Aymeric Augustin 2013-12-27 15:17:56 +01:00
parent bb8ec71f61
commit a7add2f296
9 changed files with 51 additions and 26 deletions

View File

@ -18,5 +18,9 @@ class Command(AppCommand):
output_transaction = True
def handle_app(self, app, **options):
return '\n'.join(sql_create(app, self.style, connections[options.get('database')]))
def handle_app_config(self, app_config, **options):
if app_config.models_module is None:
return
connection = connections[options.get('database')]
statements = sql_create(app_config.models_module, self.style, connection)
return '\n'.join(statements)

View File

@ -18,5 +18,9 @@ class Command(AppCommand):
output_transaction = True
def handle_app(self, app, **options):
return '\n'.join(sql_all(app, self.style, connections[options.get('database')]))
def handle_app_config(self, app_config, **options):
if app_config.models_module is None:
return
connection = connections[options.get('database')]
statements = sql_all(app_config.models_module, self.style, connection)
return '\n'.join(statements)

View File

@ -18,5 +18,9 @@ class Command(AppCommand):
output_transaction = True
def handle_app(self, app, **options):
return '\n'.join(sql_delete(app, self.style, connections[options.get('database')]))
def handle_app_config(self, app_config, **options):
if app_config.models_module is None:
return
connection = connections[options.get('database')]
statements = sql_delete(app_config.models_module, self.style, connection)
return '\n'.join(statements)

View File

@ -18,5 +18,9 @@ class Command(AppCommand):
output_transaction = True
def handle_app(self, app, **options):
return '\n'.join(sql_custom(app, self.style, connections[options.get('database')]))
def handle_app_config(self, app_config, **options):
if app_config.models_module is None:
return
connection = connections[options.get('database')]
statements = sql_custom(app_config.models_module, self.style, connection)
return '\n'.join(statements)

View File

@ -19,5 +19,9 @@ class Command(AppCommand):
output_transaction = True
def handle_app(self, app, **options):
return '\n'.join(sql_destroy_indexes(app, self.style, connections[options.get('database')]))
def handle_app_config(self, app_config, **options):
if app_config.models_module is None:
return
connection = connections[options.get('database')]
statements = sql_destroy_indexes(app_config.models_module, self.style, connection)
return '\n'.join(statements)

View File

@ -19,5 +19,9 @@ class Command(AppCommand):
output_transaction = True
def handle_app(self, app, **options):
return '\n'.join(sql_indexes(app, self.style, connections[options.get('database')]))
def handle_app_config(self, app_config, **options):
if app_config.models_module is None:
return
connection = connections[options.get('database')]
statements = sql_indexes(app_config.models_module, self.style, connection)
return '\n'.join(statements)

View File

@ -19,6 +19,10 @@ class Command(AppCommand):
output_transaction = True
def handle_app(self, app, **options):
def handle_app_config(self, app_config, **options):
if app_config.models_module is None:
return
connection = connections[options.get('database')]
return '\n'.join(connection.ops.sequence_reset_sql(self.style, apps.get_models(app, include_auto_created=True)))
models = apps.get_models(app_config.models_module, include_auto_created=True)
statements = connection.ops.sequence_reset_sql(self.style, models)
return '\n'.join(statements)

View File

@ -6,5 +6,5 @@ class Command(AppCommand):
requires_model_validation = False
args = '[appname ...]'
def handle_app(self, app, **options):
print('EXECUTE:AppCommand app=%s, options=%s' % (app, sorted(options.items())))
def handle_app_config(self, app_config, **options):
print('EXECUTE:AppCommand name=%s, options=%s' % (app_config.name, sorted(options.items())))

View File

@ -1416,27 +1416,24 @@ class CommandTypes(AdminScriptTestCase):
args = ['app_command', 'auth']
out, err = self.run_manage(args)
self.assertNoOutput(err)
self.assertOutput(out, "EXECUTE:AppCommand app=<module 'django.contrib.auth.models'")
self.assertOutput(out, "module 'django.contrib.auth.models' from")
self.assertOutput(out, str_prefix("'>, options=[('no_color', False), ('pythonpath', None), ('settings', None), ('traceback', None), ('verbosity', %(_)s'1')]"))
self.assertOutput(out, "EXECUTE:AppCommand name=django.contrib.auth, options=")
self.assertOutput(out, str_prefix(", options=[('no_color', False), ('pythonpath', None), ('settings', None), ('traceback', None), ('verbosity', %(_)s'1')]"))
def test_app_command_no_apps(self):
"User AppCommands raise an error when no app name is provided"
args = ['app_command']
out, err = self.run_manage(args)
self.assertOutput(err, 'Error: Enter at least one appname.')
self.assertOutput(err, 'Error: Enter at least one application label.')
def test_app_command_multiple_apps(self):
"User AppCommands raise an error when multiple app names are provided"
args = ['app_command', 'auth', 'contenttypes']
out, err = self.run_manage(args)
self.assertNoOutput(err)
self.assertOutput(out, "EXECUTE:AppCommand app=<module 'django.contrib.auth.models'")
self.assertOutput(out, "module 'django.contrib.auth.models' from")
self.assertOutput(out, str_prefix("'>, options=[('no_color', False), ('pythonpath', None), ('settings', None), ('traceback', None), ('verbosity', %(_)s'1')]"))
self.assertOutput(out, "EXECUTE:AppCommand app=<module 'django.contrib.contenttypes.models'")
self.assertOutput(out, "module 'django.contrib.contenttypes.models' from")
self.assertOutput(out, str_prefix("'>, options=[('no_color', False), ('pythonpath', None), ('settings', None), ('traceback', None), ('verbosity', %(_)s'1')]"))
self.assertOutput(out, "EXECUTE:AppCommand name=django.contrib.auth, options=")
self.assertOutput(out, str_prefix(", options=[('no_color', False), ('pythonpath', None), ('settings', None), ('traceback', None), ('verbosity', %(_)s'1')]"))
self.assertOutput(out, "EXECUTE:AppCommand name=django.contrib.contenttypes, options=")
self.assertOutput(out, str_prefix(", options=[('no_color', False), ('pythonpath', None), ('settings', None), ('traceback', None), ('verbosity', %(_)s'1')]"))
def test_app_command_invalid_appname(self):
"User AppCommands can execute when a single app name is provided"