Skip to content

Commit

Permalink
Merge 52785bf into d680847
Browse files Browse the repository at this point in the history
  • Loading branch information
nedbat committed Nov 10, 2015
2 parents d680847 + 52785bf commit 03cb69b
Show file tree
Hide file tree
Showing 2 changed files with 36 additions and 35 deletions.
35 changes: 0 additions & 35 deletions milestones/migrations/0001_initial.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,40 +4,6 @@
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):
Expand Down Expand Up @@ -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),
]
36 changes: 36 additions & 0 deletions milestones/migrations/0002_data__seed_relationship_types.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
# -*- 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),
]

0 comments on commit 03cb69b

Please sign in to comment.