Commit 52785bfb by Ned Batchelder

Convert data migration to Django migration

parent d6808475
......@@ -4,40 +4,6 @@ from __future__ import unicode_literals
from django.db import models, migrations
import django.utils.timezone
import model_utils.fields
from milestones.data import fetch_milestone_relationship_types
# See this link for forwards_func and reverse_func
# https://docs.djangoproject.com/en/1.8/ref/migration-operations/#runpython
def forwards_func(apps, schema_editor):
"""
Adds database entries for milestone relationship types defined in data.py
Performs existence checks before adding in order to avoid integrity errors
"""
milestone_relationship_type_model = apps.get_model("milestones", "MilestoneRelationshipType")
db_alias = schema_editor.connection.alias
for name in fetch_milestone_relationship_types().values():
try:
milestone_relationship_type_model.objects.using(db_alias).get(name=name)
except milestone_relationship_type_model.DoesNotExist:
milestone_relationship_type_model.objects.using(db_alias).create(
name=name,
description='Autogenerated milestone relationship type "{}"'.format(name),
)
def reverse_func(apps, schema_editor):
"""
forwards_func() creates MilestoneRelationshipType instances,
so reverse_func() should delete them.
"""
milestone_relationship_type_model = apps.get_model("milestones", "MilestoneRelationshipType")
db_alias = schema_editor.connection.alias
for name in fetch_milestone_relationship_types().values():
milestone_relationship_type_model.objects.using(db_alias).filter(name=name).delete()
class Migration(migrations.Migration):
......@@ -143,5 +109,4 @@ class Migration(migrations.Migration):
name='coursecontentmilestone',
unique_together=set([('course_id', 'content_id', 'milestone')]),
),
migrations.RunPython(forwards_func, reverse_func, False),
]
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import migrations, models
from milestones.data import fetch_milestone_relationship_types
def seed_relationship_types(apps, schema_editor):
"""Seed the relationship types."""
MilestoneRelationshipType = apps.get_model("milestones", "MilestoneRelationshipType")
db_alias = schema_editor.connection.alias
for name in fetch_milestone_relationship_types().values():
MilestoneRelationshipType.objects.using(db_alias).get_or_create(
name=name,
description='Autogenerated milestone relationship type "{}"'.format(name),
)
def delete_relationship_types(apps, schema_editor):
"""Clean up any relationships we made."""
MilestoneRelationshipType = apps.get_model("milestones", "MilestoneRelationshipType")
db_alias = schema_editor.connection.alias
for name in fetch_milestone_relationship_types().values():
MilestoneRelationshipType.objects.using(db_alias).filter(name=name).delete()
class Migration(migrations.Migration):
dependencies = [
('milestones', '0001_initial'),
]
operations = [
migrations.RunPython(seed_relationship_types, delete_relationship_types),
]
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment