Source code for tcms.testcases.migrations.0001_initial

# -*- coding: utf-8 -*-
from django.conf import settings
from django.db import migrations, models

import tcms.core.models.base

test_case_statuss = ["PROPOSED", "CONFIRMED", "DISABLED", "NEED_UPDATE"]


CASE_STATUS_ID_COLUMN = "case_status_id"
CATEGORY_ID_COLUMN = "category_id"
if settings.DATABASES["default"]["ENGINE"].find("sqlite") > -1:
    CASE_STATUS_ID_COLUMN = ""
    CATEGORY_ID_COLUMN = ""


[docs] def forwards_add_initial_data(apps, schema_editor): bug_system_model = apps.get_model("testcases", "BugSystem") bug_system_model.objects.bulk_create( [ bug_system_model( name="Bugzilla", description="1-7 digit, e.g. 1001234", url_reg_exp="https://bugzilla.example.com/show_bug.cgi?id=%s", validate_reg_exp=r"^\d{1,7}$", ), bug_system_model( name="JIRA", description="e.g. KIWI-222", url_reg_exp="https://jira.example.com/browse/%s", validate_reg_exp=r"^[A-Z0-9]+-\d+$", ), ] ) test_case_status_model = apps.get_model("testcases", "TestCaseStatus") test_case_status_model.objects.bulk_create( [ test_case_status_model(name=name, description="") for name in test_case_statuss ] )
[docs] def reverse_add_initial_data(apps, schema_editor): bug_system_model = apps.get_model("testcases", "BugSystem") bug_system_model.objects.filter(name__in=["Bugzilla", "JIRA"]).delete() test_case_status_model = apps.get_model("testcases", "TestCaseStatus") test_case_status_model.objects.filter(name__in=test_case_statuss).delete()
[docs] class Migration(migrations.Migration): dependencies = [ ("management", "0003_squashed"), ("testplans", "0005_squashed"), migrations.swappable_dependency(settings.AUTH_USER_MODEL), ] operations = [ migrations.CreateModel( name="TestCaseStatus", fields=[ ( "id", models.AutoField( max_length=6, serialize=False, primary_key=True, db_column=CASE_STATUS_ID_COLUMN, ), ), ("name", models.CharField(max_length=255)), ("description", models.TextField(null=True, blank=True)), ], options={ "verbose_name": "Test case status", "verbose_name_plural": "Test case statuses", }, bases=(models.Model, tcms.core.models.base.UrlMixin), ), migrations.CreateModel( name="Category", fields=[ ( "id", models.AutoField( serialize=False, primary_key=True, db_column=CATEGORY_ID_COLUMN ), ), ("name", models.CharField(max_length=255)), ("description", models.TextField(blank=True)), ( "product", models.ForeignKey( related_name="category", to="management.Product", on_delete=models.CASCADE, ), ), ], options={ "verbose_name_plural": "test case categories", }, bases=(models.Model, tcms.core.models.base.UrlMixin), ), migrations.CreateModel( name="TestCase", fields=[ ("case_id", models.AutoField(serialize=False, primary_key=True)), ( "create_date", models.DateTimeField(auto_now_add=True, db_column="creation_date"), ), ( "is_automated", models.IntegerField(default=0, db_column="isautomated"), ), ("is_automated_proposed", models.BooleanField(default=False)), ("script", models.TextField(blank=True, null=True)), ("arguments", models.TextField(blank=True, null=True)), ( "extra_link", models.CharField( default=None, max_length=1024, null=True, blank=True ), ), ("summary", models.CharField(max_length=255)), ( "requirement", models.CharField(max_length=255, blank=True, null=True), ), ("alias", models.CharField(max_length=255, blank=True)), ("notes", models.TextField(blank=True, null=True)), ], bases=(models.Model, tcms.core.models.base.UrlMixin), ), migrations.AddField( model_name="testcase", name="author", field=models.ForeignKey( on_delete=models.deletion.CASCADE, related_name="cases_as_author", to=settings.AUTH_USER_MODEL, ), ), migrations.AddField( model_name="testcase", name="case_status", field=models.ForeignKey( on_delete=models.deletion.CASCADE, to="testcases.TestCaseStatus" ), ), migrations.AddField( model_name="testcase", name="category", field=models.ForeignKey( on_delete=models.deletion.CASCADE, related_name="category_case", to="testcases.Category", ), ), migrations.CreateModel( name="TestCaseComponent", fields=[ ( "id", models.AutoField( verbose_name="ID", serialize=False, auto_created=True, primary_key=True, ), ), ( "case", models.ForeignKey( to="testcases.TestCase", on_delete=models.CASCADE ), ), ( "component", models.ForeignKey( to="management.Component", on_delete=models.CASCADE ), ), ], ), migrations.AddField( model_name="testcase", name="component", field=models.ManyToManyField( related_name="cases", through="testcases.TestCaseComponent", to="management.Component", ), ), migrations.AddField( model_name="testcase", name="default_tester", field=models.ForeignKey( blank=True, null=True, on_delete=models.deletion.CASCADE, related_name="cases_as_default_tester", to=settings.AUTH_USER_MODEL, ), ), migrations.CreateModel( name="TestCasePlan", fields=[ ( "id", models.AutoField( verbose_name="ID", serialize=False, auto_created=True, primary_key=True, ), ), ("sortkey", models.IntegerField(null=True, blank=True)), ( "case", models.ForeignKey( to="testcases.TestCase", on_delete=models.CASCADE ), ), ( "plan", models.ForeignKey( to="testplans.TestPlan", on_delete=models.CASCADE ), ), ], ), migrations.AddField( model_name="testcase", name="plan", field=models.ManyToManyField( related_name="case", through="testcases.TestCasePlan", to="testplans.TestPlan", ), ), migrations.AddField( model_name="testcase", name="priority", field=models.ForeignKey( on_delete=models.deletion.CASCADE, related_name="priority_case", to="management.Priority", ), ), migrations.AddField( model_name="testcase", name="reviewer", field=models.ForeignKey( null=True, on_delete=models.deletion.CASCADE, related_name="cases_as_reviewer", to=settings.AUTH_USER_MODEL, ), ), migrations.CreateModel( name="TestCaseTag", fields=[ ( "id", models.AutoField( verbose_name="ID", serialize=False, auto_created=True, primary_key=True, ), ), ( "case", models.ForeignKey( to="testcases.TestCase", on_delete=models.CASCADE ), ), ( "tag", models.ForeignKey(to="management.Tag", on_delete=models.CASCADE), ), ], ), migrations.AddField( model_name="testcase", name="tag", field=models.ManyToManyField( related_name="case", through="testcases.TestCaseTag", to="management.Tag", ), ), migrations.CreateModel( name="HistoricalTestCase", fields=[ ("case_id", models.IntegerField(blank=True, db_index=True)), ( "create_date", models.DateTimeField( blank=True, db_column="creation_date", editable=False ), ), ( "is_automated", models.IntegerField(db_column="isautomated", default=0), ), ("is_automated_proposed", models.BooleanField(default=False)), ("script", models.TextField(blank=True, null=True)), ("arguments", models.TextField(blank=True, null=True)), ( "extra_link", models.CharField( blank=True, default=None, max_length=1024, null=True ), ), ("summary", models.CharField(max_length=255)), ( "requirement", models.CharField(blank=True, max_length=255, null=True), ), ("alias", models.CharField(blank=True, max_length=255)), ("notes", models.TextField(blank=True, null=True)), ("history_id", models.AutoField(primary_key=True, serialize=False)), ("history_change_reason", models.TextField(null=True)), ("history_date", models.DateTimeField()), ( "history_type", models.CharField( choices=[("+", "Created"), ("~", "Changed"), ("-", "Deleted")], max_length=1, ), ), ( "author", models.ForeignKey( blank=True, db_constraint=False, null=True, on_delete=models.deletion.DO_NOTHING, related_name="+", to=settings.AUTH_USER_MODEL, ), ), ( "case_status", models.ForeignKey( blank=True, db_constraint=False, null=True, on_delete=models.deletion.DO_NOTHING, related_name="+", to="testcases.TestCaseStatus", ), ), ( "category", models.ForeignKey( blank=True, db_constraint=False, null=True, on_delete=models.deletion.DO_NOTHING, related_name="+", to="testcases.Category", ), ), ( "default_tester", models.ForeignKey( blank=True, db_constraint=False, null=True, on_delete=models.deletion.DO_NOTHING, related_name="+", to=settings.AUTH_USER_MODEL, ), ), ( "history_user", models.ForeignKey( null=True, on_delete=models.deletion.SET_NULL, related_name="+", to=settings.AUTH_USER_MODEL, ), ), ( "priority", models.ForeignKey( blank=True, db_constraint=False, null=True, on_delete=models.deletion.DO_NOTHING, related_name="+", to="management.Priority", ), ), ( "reviewer", models.ForeignKey( blank=True, db_constraint=False, null=True, on_delete=models.deletion.DO_NOTHING, related_name="+", to=settings.AUTH_USER_MODEL, ), ), ], options={ "verbose_name": "historical test case", "ordering": ("-history_date", "-history_id"), "get_latest_by": "history_date", }, ), migrations.CreateModel( name="Bug", fields=[ ( "id", models.AutoField( verbose_name="ID", serialize=False, auto_created=True, primary_key=True, ), ), ("bug_id", models.CharField(max_length=25)), ("summary", models.CharField(max_length=255, null=True, blank=True)), ("description", models.TextField(null=True, blank=True)), ( "case", models.ForeignKey( related_name="case_bug", to="testcases.TestCase", on_delete=models.CASCADE, ), ), ], bases=(models.Model, tcms.core.models.base.UrlMixin), ), migrations.CreateModel( name="BugSystem", fields=[ ( "id", models.AutoField( verbose_name="ID", serialize=False, auto_created=True, primary_key=True, ), ), ("name", models.CharField(max_length=255, unique=True)), ("description", models.TextField(blank=True)), ( "url_reg_exp", models.CharField( max_length=8192, help_text="A valid Python format string such as " "http://bugs.example.com/%s", verbose_name="URL format string", ), ), ( "validate_reg_exp", models.CharField( max_length=128, help_text="A valid JavaScript regular " "expression such as ^\\d$", verbose_name="RegExp for ID validation", ), ), ( "api_url", models.CharField( blank=True, max_length=1024, null=True, verbose_name="API URL", help_text="This is the URL to which API requests " "will be sent. Leave empty to disable!", ), ), ( "api_password", models.CharField( blank=True, max_length=256, null=True, verbose_name="API password or token", ), ), ( "api_username", models.CharField( blank=True, max_length=256, null=True, verbose_name="API username", ), ), ( "tracker_type", models.CharField( default="IssueTrackerType", max_length=128, help_text="This determines how Kiwi TCMS " "integrates with the IT system", verbose_name="Type", ), ), ( "base_url", models.CharField( max_length=1024, null=True, blank=True, verbose_name="Base URL", help_text="""Base URL, for example\ <strong>https://bugzilla.example.com</strong>! Leave empty to disable! """, ), ), ], options={ "verbose_name": "Bug tracker", "verbose_name_plural": "Bug trackers", }, bases=(models.Model, tcms.core.models.base.UrlMixin), ), migrations.AddField( model_name="bug", name="bug_system", field=models.ForeignKey( default=1, to="testcases.BugSystem", on_delete=models.CASCADE ), ), migrations.CreateModel( name="TestCaseEmailSettings", fields=[ ( "id", models.AutoField( verbose_name="ID", serialize=False, auto_created=True, primary_key=True, ), ), ("notify_on_case_update", models.BooleanField(default=False)), ("notify_on_case_delete", models.BooleanField(default=False)), ("auto_to_case_author", models.BooleanField(default=False)), ("auto_to_case_tester", models.BooleanField(default=False)), ("auto_to_run_manager", models.BooleanField(default=False)), ("auto_to_run_tester", models.BooleanField(default=False)), ("auto_to_case_run_assignee", models.BooleanField(default=False)), ( "case", models.OneToOneField( related_name="email_settings", to="testcases.TestCase", on_delete=models.CASCADE, ), ), ("cc_list", models.TextField(default="")), ], ), migrations.CreateModel( name="TestCaseText", fields=[ ( "id", models.AutoField( verbose_name="ID", serialize=False, auto_created=True, primary_key=True, ), ), ("case_text_version", models.IntegerField()), ( "create_date", models.DateTimeField(auto_now_add=True, db_column="creation_ts"), ), ("action", models.TextField(blank=True)), ("effect", models.TextField(blank=True)), ("setup", models.TextField(blank=True)), ("breakdown", models.TextField(blank=True)), ( "author", models.ForeignKey( to=settings.AUTH_USER_MODEL, db_column="who", on_delete=models.CASCADE, ), ), ( "case", models.ForeignKey( related_name="text", to="testcases.TestCase", on_delete=models.CASCADE, ), ), ], options={ "ordering": ["case", "-case_text_version"], }, bases=(models.Model, tcms.core.models.base.UrlMixin), ), migrations.AlterUniqueTogether( name="testcasetext", unique_together={("case", "case_text_version")}, ), migrations.AlterUniqueTogether( name="testcaseplan", unique_together={("plan", "case")}, ), migrations.AlterUniqueTogether( name="category", unique_together={("product", "name")}, ), migrations.RunPython(forwards_add_initial_data, reverse_add_initial_data), ]