summaryrefslogtreecommitdiff
path: root/animism-align/cli/commands/admin
diff options
context:
space:
mode:
Diffstat (limited to 'animism-align/cli/commands/admin')
-rw-r--r--animism-align/cli/commands/admin/fix_uploads.py45
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')