Skip to content

Commit

Permalink
Updates the existing migration to south_migrations
Browse files Browse the repository at this point in the history
  • Loading branch information
coordt committed Jun 9, 2015
1 parent 7c73bd5 commit 28ef4d5
Show file tree
Hide file tree
Showing 2 changed files with 30 additions and 23 deletions.
18 changes: 9 additions & 9 deletions categories/migration.py → categories/south_migration.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ def migrate_app(sender, app, created_models=None, verbosity=False, *args, **kwar
"""
from .fields import CategoryM2MField, CategoryFKField
from .models import Category
from .settings import FIELD_REGISTRY
from .registration import registry
import sys
import StringIO

Expand All @@ -26,7 +26,7 @@ def migrate_app(sender, app, created_models=None, verbosity=False, *args, **kwar
else:
app_name = app.__name__.split('.')[-2]

fields = [fld for fld in FIELD_REGISTRY.keys() if fld.startswith(app_name)]
fields = [fld for fld in registry._field_registry.keys() if fld.startswith(app_name)]
# call the south commands to add the fields/tables
for fld in fields:
app_name, model_name, field_name = fld.split('.')
Expand All @@ -35,12 +35,12 @@ def migrate_app(sender, app, created_models=None, verbosity=False, *args, **kwar
# always best to be sure.
mdl = models.get_model(app_name, model_name)

if isinstance(FIELD_REGISTRY[fld], CategoryFKField):
if isinstance(registry._field_registry[fld], CategoryFKField):
try:
db.start_transaction()
table_name = mdl._meta.db_table
FIELD_REGISTRY[fld].default = -1
db.add_column(table_name, field_name, FIELD_REGISTRY[fld], keep_default=False)
registry._field_registry[fld].default = -1
db.add_column(table_name, field_name, registry._field_registry[fld], keep_default=False)
db.commit_transaction()
if verbosity:
print (_('Added ForeignKey %(field_name)s to %(model_name)s') %
Expand All @@ -54,7 +54,7 @@ def migrate_app(sender, app, created_models=None, verbosity=False, *args, **kwar
else:
sys.stderr = org_stderror
raise e
elif isinstance(FIELD_REGISTRY[fld], CategoryM2MField):
elif isinstance(registry._field_registry[fld], CategoryM2MField):
table_name = '%s_%s' % (mdl._meta.db_table, 'categories')
try:
db.start_transaction()
Expand Down Expand Up @@ -87,7 +87,7 @@ def drop_field(app_name, model_name, field_name):
# Table is typically appname_modelname, but it could be different
# always best to be sure.
from .fields import CategoryM2MField, CategoryFKField
from .settings import FIELD_REGISTRY
from .registration import registry
try:
from south.db import db
except ImportError:
Expand All @@ -97,7 +97,7 @@ def drop_field(app_name, model_name, field_name):

fld = '%s.%s.%s' % (app_name, model_name, field_name)

if isinstance(FIELD_REGISTRY[fld], CategoryFKField):
if isinstance(registry._field_registry[fld], CategoryFKField):
print (_('Dropping ForeignKey %(field_name)s from %(model_name)s') %
{'field_name': field_name, 'model_name': model_name})
try:
Expand All @@ -108,7 +108,7 @@ def drop_field(app_name, model_name, field_name):
except DatabaseError, e:
db.rollback_transaction()
raise e
elif isinstance(FIELD_REGISTRY[fld], CategoryM2MField):
elif isinstance(registry._field_registry[fld], CategoryM2MField):
print (_('Dropping Many2Many table between %(model_name)s and %(category_table)s') %
{'model_name': model_name, 'category_table': 'category'})
try:
Expand Down
35 changes: 21 additions & 14 deletions categories/tests/test_registration.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,10 @@
# Test adding 1 fk dict
# test adding many-to-many
# test adding 1 fk, 1 m2m

import django
from django.test import TestCase

from categories.registration import (_process_registry, register_fk,
register_m2m)
from categories.registration import _process_registry, registry


class CategoryRegistrationTest(TestCase):
Expand All @@ -18,15 +17,15 @@ def test_foreignkey_string(self):
FK_REGISTRY = {
'flatpages.flatpage': 'category'
}
_process_registry(FK_REGISTRY, register_fk)
_process_registry(FK_REGISTRY, registry.register_fk)
from django.contrib.flatpages.models import FlatPage
self.assertTrue('category' in FlatPage()._meta.get_all_field_names())

def test_foreignkey_dict(self):
FK_REGISTRY = {
'flatpages.flatpage': {'name': 'category'}
}
_process_registry(FK_REGISTRY, register_fk)
_process_registry(FK_REGISTRY, registry.register_fk)
from django.contrib.flatpages.models import FlatPage
self.assertTrue('category' in FlatPage()._meta.get_all_field_names())

Expand All @@ -36,16 +35,24 @@ def test_foreignkey_list(self):
{'name': 'category', 'related_name': 'cats'},
)
}
_process_registry(FK_REGISTRY, register_fk)
_process_registry(FK_REGISTRY, registry.register_fk)
from django.contrib.flatpages.models import FlatPage
self.assertTrue('category' in FlatPage()._meta.get_all_field_names())

if django.VERSION[1] >= 7:
def test_new_foreignkey_string(self):
registry.register_model('flatpages', 'flatpage', 'ForeignKey', 'category')
from django.contrib.flatpages.models import FlatPage
self.assertTrue('category' in FlatPage()._meta.get_all_field_names())


class Categorym2mTest(TestCase):
def test_m2m_string(self):
M2M_REGISTRY = {
'flatpages.flatpage': 'categories'
}
_process_registry(M2M_REGISTRY, register_m2m)
from django.contrib.flatpages.models import FlatPage
self.assertTrue('category' in FlatPage()._meta.get_all_field_names())


# class Categorym2mTest(TestCase):
# def test_m2m_string(self):
# M2M_REGISTRY = {
# 'flatpages.flatpage': 'categories'
# }
# _process_registry(M2M_REGISTRY, register_m2m)
# from django.contrib.flatpages.models import FlatPage
# self.assertTrue('category' in FlatPage()._meta.get_all_field_names())

0 comments on commit 28ef4d5

Please sign in to comment.