SQL: Tool to cleanup unused tag slugs.
The current SQL layout/sqlalchemy strucuture can't detect whether a slug isn't needed any more and delete it. So provide a tool function to cleanup unused slugs. It's currently not hooked to any gmg function!
This commit is contained in:
parent
1213b8260a
commit
c65cbf9514
@ -17,6 +17,7 @@
|
|||||||
|
|
||||||
import sys
|
import sys
|
||||||
from mediagoblin.db.sql.base import Session
|
from mediagoblin.db.sql.base import Session
|
||||||
|
from mediagoblin.db.sql.models import Tag, MediaTag
|
||||||
|
|
||||||
|
|
||||||
def _simple_printer(string):
|
def _simple_printer(string):
|
||||||
@ -282,3 +283,24 @@ def atomic_update(table, query_dict, update_values):
|
|||||||
table.find(query_dict).update(update_values,
|
table.find(query_dict).update(update_values,
|
||||||
synchronize_session=False)
|
synchronize_session=False)
|
||||||
Session.commit()
|
Session.commit()
|
||||||
|
|
||||||
|
|
||||||
|
def clean_orphan_tags():
|
||||||
|
q1 = Session.query(Tag).outerjoin(MediaTag).filter(MediaTag.id==None)
|
||||||
|
for t in q1:
|
||||||
|
Session.delete(t)
|
||||||
|
|
||||||
|
# The "let the db do all the work" version:
|
||||||
|
# q1 = Session.query(Tag.id).outerjoin(MediaTag).filter(MediaTag.id==None)
|
||||||
|
# q2 = Session.query(Tag).filter(Tag.id.in_(q1))
|
||||||
|
# q2.delete(synchronize_session = False)
|
||||||
|
|
||||||
|
Session.commit()
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
from mediagoblin.db.sql.open import setup_connection_and_db_from_config
|
||||||
|
|
||||||
|
conn,db = setup_connection_and_db_from_config({'sql_engine':'sqlite:///mediagoblin.db'})
|
||||||
|
|
||||||
|
clean_orphan_tags()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user