migration-hotfixed-hotfix

This commit is contained in:
tonyrewin 2023-01-25 18:00:39 +03:00
parent 3567e9f625
commit 94ac7143a1
2 changed files with 27 additions and 16 deletions

View File

@ -135,6 +135,7 @@ async def shouts_handle(storage, args):
print("[migration] " + str(counter) + " content items were migrated") print("[migration] " + str(counter) + " content items were migrated")
print("[migration] " + str(pub_counter) + " have been published") print("[migration] " + str(pub_counter) + " have been published")
print("[migration] " + str(discours_author) + " authored by @discours")
print("[migration] " + str(anonymous_author) + " authored by @anonymous") print("[migration] " + str(anonymous_author) + " authored by @anonymous")

View File

@ -86,6 +86,7 @@ def create_author_from_app(app):
user = User.create(**userdata) user = User.create(**userdata)
session.add(user) session.add(user)
session.commit() session.commit()
userdata['id'] = user.id
if not userdata: if not userdata:
userdata = user.dict() userdata = user.dict()
@ -111,32 +112,36 @@ async def create_shout(shout_dict):
async def get_user(entry, storage): async def get_user(entry, storage):
app = entry.get("application") app = entry.get("application")
userdata = None userdata = None
user_oid = None
if app: if app:
userdata = create_author_from_app(app) userdata = create_author_from_app(app)
# print("[migration] from app") # print("[migration] from app")
if not userdata:
user_oid = entry.get("createdBy") user_oid = entry.get("createdBy")
if user_oid == "0": if user_oid == "0":
userdata = discours userdata = discours
elif user_oid:
if not userdata:
userdata = storage["users"]["by_oid"].get(user_oid) userdata = storage["users"]["by_oid"].get(user_oid)
# print("[migration] user from user_oid") # print("[migration] user from user_oid")
else:
if not userdata:
# print("[migration] no app, no user_oid") # print("[migration] no app, no user_oid")
userdata = anondict userdata = anondict
print(app)
# cleanup slug # cleanup slug
if userdata:
slug = userdata.get("slug", "") slug = userdata.get("slug", "")
if slug: if slug:
slug = re.sub('[^0-9a-zA-Z]+', '-', slug) slug = re.sub('[^0-9a-zA-Z]+', '-', slug)
userdata["slug"] = slug userdata["slug"] = slug
else:
userdata = anondict
user = await process_user(userdata, storage, user_oid) user = await process_user(userdata, storage, user_oid)
return user, user_oid return user, user_oid
async def migrate(entry, storage): async def migrate(entry, storage):
author, user_oid = await get_user(entry, storage) author, user_oid = await get_user(entry, storage)
r = { r = {
@ -248,7 +253,12 @@ async def add_topics_follower(entry, storage, user):
async def process_user(userdata, storage, oid): async def process_user(userdata, storage, oid):
with local_session() as session: with local_session() as session:
uid = userdata.get("id", 1) # anonymous as uid = userdata.get("id") # anonymous as
if not uid:
print(userdata)
print("has no id field, set it @anonymous")
userdata = anondict
uid = 1
user = session.query(User).filter(User.id == uid).first() user = session.query(User).filter(User.id == uid).first()
if not user: if not user:
try: try: