diff options
Diffstat (limited to 'animism-align/cli/commands/admin/fix_uploads.py')
| -rw-r--r-- | animism-align/cli/commands/admin/fix_uploads.py | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/animism-align/cli/commands/admin/fix_uploads.py b/animism-align/cli/commands/admin/fix_uploads.py new file mode 100644 index 0000000..8eaa505 --- /dev/null +++ b/animism-align/cli/commands/admin/fix_uploads.py @@ -0,0 +1,45 @@ +import click + +@click.command('fix_uploads') +@click.pass_context +def cli(ctx): + from app.settings import app_cfg + from app.sql.common import db, Session, Media + from sqlalchemy.orm.attributes import flag_modified + + session = Session() + media = session.query(Media).all() + + seen_keys = {} + for item in media: + if "poster" in item.settings: + fix_url(item.settings['poster']) + print(item.settings['poster']['url']) + if "display" in item.settings: + fix_url(item.settings['display']) + if "fullsize" in item.settings: + fix_url(item.settings['fullsize']) + if "thumbnail" in item.settings: + fix_url(item.settings['thumbnail']) + if "file" in item.settings: + fix_url(item.settings['file']) + if "image_lookup" in item.settings: + fix_lookup(item.settings['image_lookup']) + if "display_lookup" in item.settings: + fix_lookup(item.settings['display_lookup']) + if "thumbnail_lookup" in item.settings: + fix_lookup(item.settings['thumbnail_lookup']) + # sqlalchemy will not notice deep updates of JSON fields + flag_modified(item, "settings") + session.add(item) + session.commit() + +def fix_lookup(lookup): + for key, value in lookup.items(): + fix_url(value) + +def fix_url(obj): + if 'episode_id' in obj: + return + obj['episode_id'] = 1 + obj['url'] = obj['url'].replace('/uploads', '/uploads/1') |
