Cleanup unused media_data tables and migration info.
After converting everything, check what is actually used in the db. For media_types that are not used, drop all the media_data tables and remove the migration info.
This commit is contained in:
parent
e85a953951
commit
df1c94f52d
@ -15,6 +15,7 @@
|
|||||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
from copy import copy
|
from copy import copy
|
||||||
|
from itertools import chain, imap
|
||||||
|
|
||||||
from mediagoblin.init import setup_global_and_app_config
|
from mediagoblin.init import setup_global_and_app_config
|
||||||
|
|
||||||
@ -191,13 +192,18 @@ def convert_media_comments(mk_db):
|
|||||||
session.close()
|
session.close()
|
||||||
|
|
||||||
|
|
||||||
def convert_add_migration_versions():
|
media_types_tables = (
|
||||||
|
("mediagoblin.media_types.image", (ImageData,)),
|
||||||
|
("mediagoblin.media_types.video", (VideoData,)),
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
def convert_add_migration_versions(dummy_sql_db):
|
||||||
session = Session()
|
session = Session()
|
||||||
|
|
||||||
for name in ("__main__",
|
for name in chain(("__main__",),
|
||||||
"mediagoblin.media_types.image",
|
imap(lambda e: e[0], media_types_tables)):
|
||||||
"mediagoblin.media_types.video",
|
print "\tAdding %s" % (name,)
|
||||||
):
|
|
||||||
m = MigrationData(name=unicode(name), version=0)
|
m = MigrationData(name=unicode(name), version=0)
|
||||||
session.add(m)
|
session.add(m)
|
||||||
|
|
||||||
@ -205,6 +211,27 @@ def convert_add_migration_versions():
|
|||||||
session.close()
|
session.close()
|
||||||
|
|
||||||
|
|
||||||
|
def cleanup_sql_tables(sql_db):
|
||||||
|
for mt, table_list in media_types_tables:
|
||||||
|
session = Session()
|
||||||
|
|
||||||
|
count = session.query(MediaEntry.media_type). \
|
||||||
|
filter_by(media_type=unicode(mt)).count()
|
||||||
|
print " %s: %d entries" % (mt, count)
|
||||||
|
if count == 0:
|
||||||
|
print "\tRemoving migration info"
|
||||||
|
mi = session.query(MigrationData).filter_by(name=unicode(mt)).one()
|
||||||
|
session.delete(mi)
|
||||||
|
session.commit()
|
||||||
|
session.close()
|
||||||
|
|
||||||
|
print "\tDropping tables %r" % (table_list,)
|
||||||
|
tables = [model.__table__ for model in table_list]
|
||||||
|
Base_v0.metadata.drop_all(sql_db.engine, tables=tables)
|
||||||
|
|
||||||
|
session.close()
|
||||||
|
|
||||||
|
|
||||||
def print_header(title):
|
def print_header(title):
|
||||||
print "\n=== %s ===" % (title,)
|
print "\n=== %s ===" % (title,)
|
||||||
|
|
||||||
@ -220,6 +247,7 @@ convert_call_list = (
|
|||||||
|
|
||||||
sql_call_list = (
|
sql_call_list = (
|
||||||
("Filling Migration Tables", convert_add_migration_versions),
|
("Filling Migration Tables", convert_add_migration_versions),
|
||||||
|
("Analyzing/Cleaning SQL Data", cleanup_sql_tables),
|
||||||
)
|
)
|
||||||
|
|
||||||
def run_conversion(config_name):
|
def run_conversion(config_name):
|
||||||
@ -237,7 +265,7 @@ def run_conversion(config_name):
|
|||||||
|
|
||||||
for title, func in sql_call_list:
|
for title, func in sql_call_list:
|
||||||
print_header(title)
|
print_header(title)
|
||||||
func()
|
func(sql_db)
|
||||||
Session.remove()
|
Session.remove()
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user