diff --git a/task_database.py b/task_database.py index 0f666c9..9cb3021 100644 --- a/task_database.py +++ b/task_database.py @@ -95,16 +95,16 @@ def add_task_account(username, is_official, lms_enabled): "isOfficial": bool(is_official), "lmsEnabled": bool(lms_enabled), 'tiers': { - 'easy': [], - 'medium': [], - 'hard': [], - 'elite': [], - 'master' : [], - 'passive': [], - 'extra': [], - 'bossPets': [], - 'skillPets': [], - 'otherPets': [] + 'easy': {"completedTasks" : []}, + 'medium': {"completedTasks" : []}, + 'hard': {"completedTasks" : []}, + 'elite': {"completedTasks" : []}, + 'master' : {"completedTasks" : []}, + 'passive': {"completedTasks" : []}, + 'extra': {"completedTasks" : []}, + 'bossPets': {"completedTasks" : []}, + 'skillPets': {"completedTasks" : []}, + 'otherPets': {"completedTasks" : []} } }) @@ -1248,7 +1248,51 @@ def to_user(data): coll = mydb['taskAccounts'] return list(sorted(map(to_user, coll.find({'isOfficial': True})), key=lambda x: x.points(), reverse=True)) - -if __name__ == "__main__": +def test(): + task_coll = mydb["taskLists"] + # results = task_coll.find_one({"username": "Gerni Task"}, {'tiers': 1, 'username': 1}) + results = task_coll.find({}, {'tiers': 1, 'username': 1}) + valid = True + for result in results: + easy = result['tiers']['easy'] + medium = result['tiers']['medium'] + hard = result['tiers']['hard'] + elite = result['tiers']['elite'] + master = result['tiers']['master'] + passive = result['tiers']['passive'] + extra = result['tiers']['extra'] + bossPets = result['tiers']['bossPets'] + skillPets = result['tiers']['skillPets'] + otherPets = result['tiers']['otherPets'] + if not isinstance(easy, dict): + valid = False + if not isinstance(medium, dict): + valid = False + if not isinstance(hard, dict): + valid = False + if not isinstance(elite, dict): + valid = False + if not isinstance(master, dict): + valid = False + if not isinstance(passive, dict): + valid = False + if not isinstance(extra, dict): + valid = False + if not isinstance(bossPets, dict): + valid = False + if not isinstance(skillPets, dict): + valid = False + if not isinstance(otherPets, dict): + valid = False + + # if not valid: + # task_coll.update_one({"username" : result['username']}, {"$set":}) + +def fix_gerni(): + task_coll = mydb["taskLists"] + task_coll.update_one({"username": "GerniFix"}) + results = task_coll.find({}, {'tiers': 1, 'username': 1}) +if __name__ == "__main__": + test() pass diff --git a/user_dao.py b/user_dao.py index cf4c746..022ab52 100644 --- a/user_dao.py +++ b/user_dao.py @@ -112,12 +112,14 @@ def convert_database_user(user_data: dict) -> UserDatabaseObject: def convert_database_tier(tier: str) -> UserTaskList: data = tiers[tier] - completed_tasks = list(map(lambda x: UserCompletedTask(task_id=x['taskId']), data['completedTasks'])) - # Filter tasks that have been removed from tasklist - all_current_tier_ids = list(map(lambda x: x.id, tasklists.list_for_tier(tier))) - completed_tasks = list(filter(lambda x: x.task_id in all_current_tier_ids, completed_tasks)) - - current = data.get('currentTask') + if data: + completed_tasks = list(map(lambda x: UserCompletedTask(task_id=x['taskId']), data['completedTasks'])) + # Filter tasks that have been removed from tasklist + all_current_tier_ids = list(map(lambda x: x.id, tasklists.list_for_tier(tier))) + completed_tasks = list(filter(lambda x: x.task_id in all_current_tier_ids, completed_tasks)) + + current = data.get('currentTask', None) + print(current) if current: current = UserCurrentTask(task_id=current['taskId']) return UserTaskList(current_task=current,