I actually had to do a bit more work than I thought, because I needed to account
for plugins. In this commit I changed the MigrationManager and DatabaseData ob- jects to account for FOUNDATIONS in any plugin's (or main program's) models.py file.
This commit is contained in:
parent
f2b2008da5
commit
08cd10d84f
@ -29,7 +29,7 @@ class MigrationManager(object):
|
||||
to the latest migrations, etc.
|
||||
"""
|
||||
|
||||
def __init__(self, name, models, migration_registry, session,
|
||||
def __init__(self, name, models, foundations, migration_registry, session,
|
||||
printer=simple_printer):
|
||||
"""
|
||||
Args:
|
||||
@ -40,6 +40,7 @@ class MigrationManager(object):
|
||||
"""
|
||||
self.name = unicode(name)
|
||||
self.models = models
|
||||
self.foundations = foundations
|
||||
self.session = session
|
||||
self.migration_registry = migration_registry
|
||||
self._sorted_migrations = None
|
||||
@ -145,12 +146,11 @@ class MigrationManager(object):
|
||||
Create the table foundations (default rows) as layed out in FOUNDATIONS
|
||||
in mediagoblin.db.models
|
||||
"""
|
||||
from mediagoblin.db.models import FOUNDATIONS as MAIN_FOUNDATIONS
|
||||
for Model, rows in MAIN_FOUNDATIONS.items():
|
||||
print u'\n--> Laying foundations for %s table' % Model.__name__
|
||||
for Model, rows in self.foundations.items():
|
||||
print u'\n + Laying foundations for %s table' % (Model.__name__)
|
||||
for parameters in rows:
|
||||
row = Model(**parameters)
|
||||
row.save()
|
||||
new_row = Model(**parameters)
|
||||
new_row.save()
|
||||
|
||||
def create_new_migration_record(self):
|
||||
"""
|
||||
@ -215,8 +215,7 @@ class MigrationManager(object):
|
||||
self.init_tables()
|
||||
# auto-set at latest migration number
|
||||
self.create_new_migration_record()
|
||||
if self.name==u'__main__':
|
||||
self.populate_table_foundations()
|
||||
self.populate_table_foundations()
|
||||
|
||||
self.printer(u"done.\n")
|
||||
self.set_current_migration()
|
||||
|
@ -32,14 +32,15 @@ def dbupdate_parse_setup(subparser):
|
||||
|
||||
|
||||
class DatabaseData(object):
|
||||
def __init__(self, name, models, migrations):
|
||||
def __init__(self, name, models, foundations, migrations):
|
||||
self.name = name
|
||||
self.models = models
|
||||
self.foundations = foundations
|
||||
self.migrations = migrations
|
||||
|
||||
def make_migration_manager(self, session):
|
||||
return MigrationManager(
|
||||
self.name, self.models, self.migrations, session)
|
||||
self.name, self.models, self.foundations, self.migrations, session)
|
||||
|
||||
|
||||
def gather_database_data(plugins):
|
||||
@ -54,10 +55,11 @@ def gather_database_data(plugins):
|
||||
# Add main first
|
||||
from mediagoblin.db.models import MODELS as MAIN_MODELS
|
||||
from mediagoblin.db.migrations import MIGRATIONS as MAIN_MIGRATIONS
|
||||
from mediagoblin.db.models import FOUNDATIONS as MAIN_FOUNDATIONS
|
||||
|
||||
managed_dbdata.append(
|
||||
DatabaseData(
|
||||
u'__main__', MAIN_MODELS, MAIN_MIGRATIONS))
|
||||
u'__main__', MAIN_MODELS, MAIN_FOUNDATIONS, MAIN_MIGRATIONS))
|
||||
|
||||
for plugin in plugins:
|
||||
try:
|
||||
@ -83,13 +85,26 @@ forgotten to add it? ({1})'.format(plugin, exc))
|
||||
|
||||
migrations = {}
|
||||
except AttributeError as exc:
|
||||
_log.debug('Cloud not find MIGRATIONS in {0}.migrations, have you \
|
||||
_log.debug('Could not find MIGRATIONS in {0}.migrations, have you \
|
||||
forgotten to add it? ({1})'.format(plugin, exc))
|
||||
migrations = {}
|
||||
|
||||
try:
|
||||
foundations = import_component('{0}.models:FOUNDATIONS'.format(plugin))
|
||||
except ImportError as exc:
|
||||
_log.debug('No foundations found for {0}: {1}'.format(
|
||||
plugin,
|
||||
exc))
|
||||
|
||||
foundations = []
|
||||
except AttributeError as exc:
|
||||
_log.debug('Could not find FOUNDATIONS in {0}.models, have you \
|
||||
forgotten to add it? ({1})'.format(plugin, exc))
|
||||
foundations = {}
|
||||
|
||||
if models:
|
||||
managed_dbdata.append(
|
||||
DatabaseData(plugin, models, migrations))
|
||||
DatabaseData(plugin, models, foundations, migrations))
|
||||
|
||||
|
||||
return managed_dbdata
|
||||
|
Loading…
x
Reference in New Issue
Block a user