diff --git a/app/tasks/forumtasks.py b/app/tasks/forumtasks.py index 37db103..56a88ce 100644 --- a/app/tasks/forumtasks.py +++ b/app/tasks/forumtasks.py @@ -15,7 +15,7 @@ # along with this program. If not, see . -import json, re +import json, re, sys from app.models import * from app.tasks import celery from .phpbbparser import getProfile, getTopicsFromForum @@ -61,6 +61,7 @@ def checkForumAccount(username, forceNoSave=False): return needsSaving + @celery.task() def checkAllForumAccounts(forceNoSave=False): needsSaving = False @@ -128,21 +129,34 @@ def importTopicList(): for topic in ForumTopic.query.all(): topics_by_id[topic.topic_id] = topic + def get_or_create_user(username): + user = username_to_user.get(username) + if user: + return user + + user = User.query.filter_by(forums_username=username).first() + if user is None: + user = User.query.filter_by(username=username).first() + if user: + return None + + user = User(username) + user.forums_username = username + db.session.add(user) + + username_to_user[username] = user + return user + # Create or update for info in info_by_id.values(): id = int(info["id"]) # Get author username = info["author"] - user = username_to_user.get(username) + user = get_or_create_user(username) if user is None: - user = User.query.filter_by(forums_username=username).first() - if user is None: - print(username + " not found!") - user = User(username) - user.forums_username = username - db.session.add(user) - username_to_user[username] = user + print("Error! Unable to create user {}".format(username), file=sys.stderr) + continue # Get / add row topic = topics_by_id.get(id)