def handle(self, *args, **options): ops = [] for model in apps.get_models(include_auto_created=True): if not hasattr(model, 'VersionModel') or model._meta.proxy: continue ops.extend(self.build_operations(model)) if options['initial']: m = Migration('0003_triggers', 'share') m.dependencies = [('share', '0002_create_share_user')] else: ml = MigrationLoader(connection=connection) ml.build_graph() last_share_migration = [ x[1] for x in ml.graph.leaf_nodes() if x[0] == 'share' ][0] next_number = '{0:04d}'.format(int(last_share_migration[0:4]) + 1) m = Migration( '{}_update_trigger_migrations_{}'.format( next_number, datetime.datetime.now().strftime("%Y%m%d_%H%M")), 'share') m.dependencies = [('share', '0002_create_share_user'), ('share', last_share_migration)] m.operations = ops self.write_migration(m)
def handle(self, *args, **options): ops = [] for model in apps.get_models(include_auto_created=True): if not hasattr(model, 'VersionModel') or model._meta.proxy: continue ops.extend(self.build_operations(model)) if options['initial']: m = Migration('0003_triggers', 'share') m.dependencies = [('share', '0002_create_share_user')] else: ml = MigrationLoader(connection=connection) ml.build_graph() last_share_migration = [x[1] for x in ml.graph.leaf_nodes() if x[0] == 'share'][0] next_number = '{0:04d}'.format(int(last_share_migration[0:4]) + 1) m = Migration('{}_update_trigger_migrations_{}'.format(next_number, datetime.datetime.now().strftime("%Y%m%d_%H%M")), 'share') m.dependencies = [('share', '0002_create_share_user'), ('share', last_share_migration)] m.operations = ops self.write_migration(m)
def _get_delete_model_migration(self, dependencies=[]): database_operations = [] state_operations = [] state_operations.append(migrations.DeleteModel(name=self.model_name)) migration = Migration('delete_model', self.source_app) migration.dependencies = dependencies migration.operations = [ migrations.SeparateDatabaseAndState( database_operations=database_operations, state_operations=state_operations, ) ] return migration
def _get_rename_table_migration(self, dependencies=[]): database_operations = [] state_operations = [] database_operations.append( migrations.AlterModelTable( self.model_name.lower(), '{}_{}'.format(self.dest_app, self.model_name.lower()))) migration = Migration('rename_table', self.source_app) migration.dependencies = dependencies migration.operations = [ migrations.SeparateDatabaseAndState( database_operations=database_operations, state_operations=state_operations) ] return migration
def _get_create_model_migration(self, dependencies=[]): database_operations = [] state_operations = [] model_state = self.to_state.models[self.dest_app, self.model_name.lower()] model_opts = self.to_state.apps.get_model(self.dest_app, self.model_name)._meta related_fields = {} for field in model_opts.local_fields: if field.remote_field: if field.remote_field.model: if not field.remote_field.parent_link: related_fields[field.name] = field if (getattr(field.remote_field, 'through', None) and not field.remote_field.through._meta.auto_created): related_fields[field.name] = field for field in model_opts.local_many_to_many: if field.remote_field.model: related_fields[field.name] = field if getattr(field.remote_field, 'through', None ) and not field.remote_field.through._meta.auto_created: related_fields[field.name] = field state_operations.append( migrations.CreateModel( name=model_state.name, fields=[ d for d in model_state.fields if d[0] not in related_fields ], options=model_state.options, bases=model_state.bases, managers=model_state.managers, )) migration = Migration('create_model', self.dest_app) migration.dependencies = dependencies migration.operations = [ migrations.SeparateDatabaseAndState( database_operations=database_operations, state_operations=state_operations, ) ] return migration
def _get_model_fk_migrations(self, dependencies=[]): _migrations = [] model_opts = self.to_state.apps.get_model(self.dest_app, self.model_name)._meta for field in model_opts.get_fields(include_hidden=True): if field.is_relation: operations = [] operations.append( migrations.AlterField( model_name=field.related_model._meta.model_name, name=field.remote_field.name, field=field.remote_field, )) migration = Migration('alter_model_fk', field.related_model._meta.app_label) migration.dependencies = dependencies migration.operations = operations _migrations.append(migration) return _migrations