#175: Override Migrate command

To additionaly run `sync_page_translation_fields`
To silence any missing migrations warnings
This commit is contained in:
Dario Marcelino 2018-02-23 15:35:32 +00:00
parent 2135d7d081
commit 69ae7dfbd8
8 changed files with 57 additions and 1 deletions

View file

@ -24,7 +24,10 @@ setup(
'wagtail_modeltranslation.templatetags',
'wagtail_modeltranslation.makemigrations',
'wagtail_modeltranslation.makemigrations.management',
'wagtail_modeltranslation.makemigrations.management.commands'],
'wagtail_modeltranslation.makemigrations.management.commands',
'wagtail_modeltranslation.migrate',
'wagtail_modeltranslation.migrate.management',
'wagtail_modeltranslation.migrate.management.commands'],
package_data={'wagtail_modeltranslation': ['static/wagtail_modeltranslation/css/*.css',
'static/wagtail_modeltranslation/js/*.js']},
install_requires=['wagtail(>=1.4)', 'django-modeltranslation(>=0.12.2)'],

View file

@ -0,0 +1,33 @@
from django.core.management.commands.migrate import Command as MigrateCommand
from django.db.migrations.autodetector import MigrationAutodetector
from .sync_page_translation_fields import Command as SyncPageTranslationFieldsCommand
# decorate MigrationAutodetector.changes so we can silence any wagtailcore migrations missing warnings
def changes_decorator(func):
def wrapper(self, graph, trim_to_apps=None, convert_apps=None, migration_name=None):
changes = func(self, graph, trim_to_apps, convert_apps, migration_name)
if 'wagtailcore' in changes:
del changes['wagtailcore']
return changes
return wrapper
class Command(MigrateCommand):
help = "Updates database schema. Manages both apps with migrations and those without. " \
"Updates Wagtail Page translation fields"
def handle(self, *args, **options):
old_autodetector_changes = MigrationAutodetector.changes
MigrationAutodetector.changes = changes_decorator(MigrationAutodetector.changes)
try:
super(Command, self).handle(*args, **options)
finally:
MigrationAutodetector.changes = old_autodetector_changes
# Run sync_page_translation_fields command
sync_page_command = SyncPageTranslationFieldsCommand()
# Update the dict of sync_page_command with the content of this one
sync_page_command.__dict__.update(self.__dict__)
sync_page_command.handle(*args, **options)

View file

@ -0,0 +1,3 @@
# coding: utf-8
default_app_config = 'wagtail_modeltranslation.migrate.apps.MigrateConfig'

View file

@ -0,0 +1,7 @@
from django.apps import AppConfig
class MigrateConfig(AppConfig):
name = 'wagtail_modeltranslation.migrate'
label = 'wagtail_modeltranslation_migrate'
verbose_name = "Wagtail Modeltranslation migrate"

View file

@ -0,0 +1,5 @@
from wagtail_modeltranslation.management.commands.migrate_translation import Command as MigrateCommand
class Command(MigrateCommand):
pass

View file

@ -0,0 +1,5 @@
from django.core.management.commands.migrate import Command as MigrateCommand
class Command(MigrateCommand):
pass