def test_run_in_specific_schema(self): good = Company.objects.create(schema='good', name='good') bad = Company.objects.create(schema='bad', name='bad') state = self.migrate([ self.create_model, RunInSchemas(self.run_sql, Company.objects.filter(name='good')) ]) Person = state.apps.get_model('schema_test_app.person') bad.activate() self.assertFalse(Person.objects.exists()) good.activate() self.assertTrue(Person.objects.exists())
class Migration(migrations.Migration): dependencies = [("task", "0005_task_refactor")] operations = [ migrations.AddField( model_name="group", name="search", field=tsvector_field.SearchVectorField( columns=[ tsvector_field.WeightedColumn("name", "A"), tsvector_field.WeightedColumn("description", "D"), ], language="german", ), ), RunInSchemas(tsvector_field.IndexSearchVector("group", "search")), migrations.AddField( model_name="task", name="search", field=tsvector_field.SearchVectorField( columns=[ tsvector_field.WeightedColumn("name", "A"), tsvector_field.WeightedColumn("description", "D"), ], language="german", ), ), RunInSchemas(tsvector_field.IndexSearchVector("task", "search")), migrations.AlterField( model_name="job", name="project", field=models.ForeignKey( on_delete=django.db.models.deletion.CASCADE, related_name="jobs", to="project.Project", ), ), ]
class Migration(migrations.Migration): dependencies = [("task", "0004_data_migration")] operations = [ migrations.AlterField( model_name="task", name="job", field=models.ForeignKey("task.Job", models.CASCADE, related_name="all_tasks"), ), migrations.AlterField( model_name="task", name="group", field=models.ForeignKey("task.Group", models.CASCADE, related_name="tasks"), ), migrations.RemoveField(model_name="task", name="taskgroup"), migrations.DeleteModel("taskgroup"), migrations.DeleteModel("oldjob"), migrations.AddField( model_name="task", name="token", field=models.BigIntegerField(verbose_name="api token", null=True), ), migrations.AddField( model_name="task", name="price", field=models.DecimalField(decimal_places=4, default=0.0, max_digits=14, verbose_name="Price"), ), migrations.AddField( model_name="task", name="total", field=models.DecimalField(decimal_places=4, default=0.0, max_digits=14, verbose_name="Total"), ), migrations.RenameField(model_name="task", old_name="is_optional", new_name="is_provisional"), migrations.AddField( model_name="task", name="variant_group", field=models.PositiveIntegerField(null=True), ), migrations.AddField( model_name="task", name="variant_serial", field=models.PositiveIntegerField(default=0), ), migrations.AddField( model_name="task", name="qty_equation", field=models.CharField(blank=True, default="", max_length=512), preserve_default=False, ), migrations.AddField( model_name="lineitem", name="token", field=models.BigIntegerField(verbose_name="api token", null=True), ), migrations.AddField( model_name="lineitem", name="is_hidden", field=models.BooleanField(default=False), ), migrations.RenameField(model_name="lineitem", old_name="unit_qty", new_name="qty"), migrations.AddField( model_name="lineitem", name="total", field=models.DecimalField(decimal_places=4, default=0.0, max_digits=14, verbose_name="Total"), ), migrations.RemoveField(model_name="lineitem", name="task_qty"), migrations.AddField( model_name="lineitem", name="order", field=models.PositiveIntegerField(db_index=True, default=1, editable=False), preserve_default=False, ), migrations.AlterModelOptions( name="lineitem", options={ "ordering": ("order", ), "verbose_name": "Line Item", "verbose_name_plural": "Line Items", }, ), # Add task to lineitem, allowing NULLs migrations.AddField( model_name="lineitem", name="task", field=models.ForeignKey( null=True, on_delete=django.db.models.deletion.CASCADE, related_name="lineitems", to="task.Task", ), ), migrations.AddField( model_name="lineitem", name="job", field=models.ForeignKey( null=True, on_delete=django.db.models.deletion.CASCADE, related_name="all_lineitems", to="task.Job", ), ), migrations.AddField( model_name="lineitem", name="price_equation", field=models.CharField(blank=True, default="", max_length=512), preserve_default=False, ), migrations.AddField( model_name="lineitem", name="qty_equation", field=models.CharField(blank=True, default="", max_length=512), preserve_default=False, ), migrations.AddField( model_name="lineitem", name="total_equation", field=models.CharField(blank=True, default="", max_length=512), preserve_default=False, ), # properly set all of the jobs migrations.RunSQL("SET CONSTRAINTS ALL IMMEDIATE", reverse_sql=migrations.RunSQL.noop), RunInSchemas(migrations.RunPython(upgrade_taskinstance_to_task)), # Now alter making it NOT NULL migrations.AlterField( model_name="lineitem", name="task", field=models.ForeignKey( on_delete=django.db.models.deletion.CASCADE, related_name="lineitems", to="task.Task", ), ), migrations.AlterField( model_name="lineitem", name="job", field=models.ForeignKey( on_delete=django.db.models.deletion.CASCADE, related_name="all_lineitems", to="task.Job", ), ), # Cleanup... migrations.RemoveField("lineitem", "taskinstance"), migrations.DeleteModel("taskinstance"), migrations.RunPython(remove_old_content_types), migrations.RemoveField(model_name="lineitem", name="billable"), migrations.RemoveField(model_name="lineitem", name="is_labor"), migrations.RemoveField(model_name="lineitem", name="is_material"), migrations.AddField( model_name="lineitem", name="complete", field=models.DecimalField(decimal_places=4, default=0.0, max_digits=14, verbose_name="Completed"), ), migrations.AddField( model_name="task", name="total_equation", field=models.CharField(blank=True, default="", max_length=512), preserve_default=False, ), migrations.AlterField( model_name="lineitem", name="unit", field=models.CharField(blank=True, max_length=512, verbose_name="Unit"), ), migrations.AlterField( model_name="task", name="complete", field=models.DecimalField(decimal_places=4, default=0.0, max_digits=14, verbose_name="Completed"), ), migrations.AlterField( model_name="task", name="unit", field=models.CharField(blank=True, max_length=512, verbose_name="Unit"), ), migrations.AddField( model_name="task", name="price_equation", field=models.CharField(blank=True, default="", max_length=512), preserve_default=False, ), migrations.AlterField( model_name="lineitem", name="name", field=models.CharField(blank=True, max_length=512, verbose_name="Name"), ), migrations.AlterField(model_name="task", name="description", field=models.TextField(blank=True)), ]
class Migration(migrations.Migration): dependencies = [("task", "0012_auto_20170613_1704")] operations = [RunInSchemas(migrations.RunPython(add_missing_job_accounts))]
class Migration(migrations.Migration): dependencies = [("document", "0011_auto_20170404_2058")] operations = [RunInSchemas(migrations.RunPython(migrate_json))]
class Migration(migrations.Migration): dependencies = [("task", "0003_group_refactor")] operations = [RunInSchemas(migrations.RunPython(copy_old_job_to_new_job))]
class Migration(migrations.Migration): dependencies = [("company", "0009_auto_20170313_2228")] operations = [RunInSchemas(migrations.RunPython(add_contracts))]
def test_in_schema_no_exception(self): # test that no exception is thrown self.migrate([ self.create_model, RunInSchemas(self.run_sql) ])
class Migration(migrations.Migration): dependencies = [ ("timetracking", "0012_auto_20170201_1525"), ("document", "0010_auto_20170214_0028"), ] operations = [ migrations.AlterModelOptions( name="timer", options={ "ordering": ("started", ), "verbose_name": "timer", "verbose_name_plural": "timers", }, ), migrations.RenameField(model_name="timer", old_name="end_latitude", new_name="ending_latitude"), migrations.RenameField(model_name="timer", old_name="end_longitude", new_name="ending_longitude"), migrations.RenameField(model_name="timer", old_name="start_latitude", new_name="starting_latitude"), migrations.RenameField( model_name="timer", old_name="start_longitude", new_name="starting_longitude", ), migrations.AlterField(model_name="timer", name="start", field=models.DateTimeField(db_index=True)), migrations.RenameField(model_name="timer", old_name="start", new_name="started"), migrations.RenameField(model_name="timer", old_name="end", new_name="stopped"), migrations.RemoveField(model_name="timer", name="date"), migrations.AlterField( model_name="timer", name="duration", field=models.IntegerField(default=0, help_text="in minutes"), ), migrations.AlterField( model_name="timer", name="kind", field=models.CharField( choices=[ ("work", "Work"), ("vacation", "Vacation"), ("sick", "Sick"), ("public_holiday", "Public holiday"), ("paid_leave", "Paid leave"), ("unpaid_leave", "Unpaid leave"), ], db_index=True, default="work", max_length=32, ), ), RunInSchemas(migrations.RunPython(update_timers)), ]