105 lines
3.6 KiB
Python
105 lines
3.6 KiB
Python
|
# Generated by Django 4.1.3 on 2023-01-18 03:31
|
||
|
|
||
|
import django.core.validators
|
||
|
from django.db import migrations, models
|
||
|
import django.db.models.deletion
|
||
|
|
||
|
|
||
|
def link_departments(apps, schema_editor):
|
||
|
CertificationDefinition = apps.get_model("paperwork", "CertificationDefinition")
|
||
|
Department = apps.get_model("paperwork", "Department")
|
||
|
for certification_definition in CertificationDefinition.objects.all():
|
||
|
department, created = Department.objects.get_or_create(
|
||
|
name=certification_definition.old_department
|
||
|
)
|
||
|
certification_definition.department = department
|
||
|
certification_definition.save()
|
||
|
|
||
|
|
||
|
class Migration(migrations.Migration):
|
||
|
dependencies = [
|
||
|
("membershipworks", "0001_initial"),
|
||
|
("paperwork", "0005_certificationdefinition_mailing_list"),
|
||
|
]
|
||
|
|
||
|
operations = [
|
||
|
migrations.CreateModel(
|
||
|
name="Department",
|
||
|
fields=[
|
||
|
(
|
||
|
"id",
|
||
|
models.BigAutoField(
|
||
|
auto_created=True,
|
||
|
primary_key=True,
|
||
|
serialize=False,
|
||
|
verbose_name="ID",
|
||
|
),
|
||
|
),
|
||
|
(
|
||
|
"name",
|
||
|
models.CharField(
|
||
|
help_text="This will also be used to generate the mailing list name",
|
||
|
max_length=64,
|
||
|
validators=[
|
||
|
django.core.validators.RegexValidator("^[-_ A-Za-z0-9]*$")
|
||
|
],
|
||
|
),
|
||
|
),
|
||
|
(
|
||
|
"list_reply_to_address",
|
||
|
models.EmailField(blank=True, max_length=254),
|
||
|
),
|
||
|
(
|
||
|
"list_moderator_flag",
|
||
|
models.ForeignKey(
|
||
|
blank=True,
|
||
|
null=True,
|
||
|
db_constraint=False,
|
||
|
on_delete=django.db.models.deletion.PROTECT,
|
||
|
to="membershipworks.flag",
|
||
|
),
|
||
|
),
|
||
|
(
|
||
|
"parent",
|
||
|
models.ForeignKey(
|
||
|
blank=True,
|
||
|
null=True,
|
||
|
on_delete=django.db.models.deletion.PROTECT,
|
||
|
related_name="children",
|
||
|
to="paperwork.department",
|
||
|
),
|
||
|
),
|
||
|
],
|
||
|
),
|
||
|
# rename the old field so that we can reuse the name
|
||
|
migrations.RenameField(
|
||
|
model_name="certificationdefinition",
|
||
|
old_name="department",
|
||
|
new_name="old_department",
|
||
|
),
|
||
|
# Create nullable foreign key to department
|
||
|
migrations.AddField(
|
||
|
model_name="certificationdefinition",
|
||
|
name="department",
|
||
|
field=models.ForeignKey(
|
||
|
on_delete=django.db.models.deletion.PROTECT,
|
||
|
to="paperwork.department",
|
||
|
null=True,
|
||
|
),
|
||
|
),
|
||
|
# create new Departments and link them to Certification Definitions
|
||
|
migrations.RunPython(link_departments, atomic=True),
|
||
|
# make department not nullable
|
||
|
migrations.AlterField(
|
||
|
model_name="certificationdefinition",
|
||
|
name="department",
|
||
|
field=models.ForeignKey(
|
||
|
on_delete=django.db.models.deletion.PROTECT, to="paperwork.department"
|
||
|
),
|
||
|
),
|
||
|
migrations.RemoveField(
|
||
|
model_name="certificationdefinition",
|
||
|
name="old_department",
|
||
|
),
|
||
|
]
|