fix duplicate rating error

This commit is contained in:
tonyrewin 2022-07-04 09:18:10 +03:00
parent 34a8c161c1
commit 929e29d159
2 changed files with 6 additions and 4 deletions

View File

@ -1,12 +1,10 @@
import bson import bson
import datetime
import json import json
import importlib
from migration.utils import DateTimeEncoder from migration.utils import DateTimeEncoder
def json_tables(): def json_tables():
print('creating json files at migration/data/') print('[migration] unpack bson to migration/data/*.json')
data = { data = {
"content_items": [], "content_items": [],
"content_item_categories": [], "content_item_categories": [],

View File

@ -1,3 +1,4 @@
import sqlalchemy
from orm import User, Role, UserRating from orm import User, Role, UserRating
from orm.user import EmailSubscription from orm.user import EmailSubscription
import frontmatter import frontmatter
@ -94,7 +95,6 @@ def migrate_email_subscription(entry):
res = {} res = {}
res["email"] = entry["email"] res["email"] = entry["email"]
res["createdAt"] = parse(entry["createdAt"]) res["createdAt"] = parse(entry["createdAt"])
subscription = EmailSubscription.create(**res) subscription = EmailSubscription.create(**res)
def migrate_2stage(entry, id_map): def migrate_2stage(entry, id_map):
@ -115,6 +115,10 @@ def migrate_2stage(entry, id_map):
with local_session() as session: with local_session() as session:
try: try:
user_rating = UserRating.create(**user_rating_dict) 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: except Exception as e:
print(e) print(e)
return ce return ce