From 929e29d15925f6732ea08ad6995146f603013eb1 Mon Sep 17 00:00:00 2001 From: tonyrewin Date: Mon, 4 Jul 2022 09:18:10 +0300 Subject: [PATCH] fix duplicate rating error --- migration/bson2json.py | 4 +--- migration/tables/users.py | 6 +++++- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/migration/bson2json.py b/migration/bson2json.py index 9559665c..f0baf55d 100644 --- a/migration/bson2json.py +++ b/migration/bson2json.py @@ -1,12 +1,10 @@ import bson -import datetime import json -import importlib from migration.utils import DateTimeEncoder def json_tables(): - print('creating json files at migration/data/') + print('[migration] unpack bson to migration/data/*.json') data = { "content_items": [], "content_item_categories": [], diff --git a/migration/tables/users.py b/migration/tables/users.py index 38a30703..4fe832fa 100644 --- a/migration/tables/users.py +++ b/migration/tables/users.py @@ -1,3 +1,4 @@ +import sqlalchemy from orm import User, Role, UserRating from orm.user import EmailSubscription import frontmatter @@ -94,7 +95,6 @@ def migrate_email_subscription(entry): res = {} res["email"] = entry["email"] res["createdAt"] = parse(entry["createdAt"]) - subscription = EmailSubscription.create(**res) def migrate_2stage(entry, id_map): @@ -115,6 +115,10 @@ def migrate_2stage(entry, id_map): with local_session() as session: try: user_rating = UserRating.create(**user_rating_dict) + except sqlalchemy.exc.IntegrityError: + print('[migration] duplicate rating solving for ' + rater_slug) + old_rating = session.query(UserRating).filter(UserRating.rater == rater_slug).first() + old_rating.value = rating_entry['value'] + old_rating.value except Exception as e: print(e) return ce