diff --git a/static/js/task.js b/static/js/task.js index 6f24bcb..60dd73f 100644 --- a/static/js/task.js +++ b/static/js/task.js @@ -257,15 +257,17 @@ $(document).ready(function(){ $(document).ready(function(){ $(document).on('click', '.updateButton', function(){ - if ($(this).data('type') === 'bossPet' || $(this).data('type') === 'skillPet' || $(this).data('type') === 'otherPet'){ + if ($(this).data('type') === 'bossPets' || $(this).data('type') === 'skillPets' || $(this).data('type') === 'otherPets'){ var tier = $(this).data('type'); + var updatePercent = document.getElementById("allPetsPercent") } else { var tier = $('#tier').data('tier'); + var updatePercent = document.getElementById(tier + "Percent") } var elementTarget = this; var parent = elementTarget.parentElement; - const updatePercent = document.getElementById(tier + "Percent") + $('form').submit(false); @@ -280,7 +282,12 @@ $(document).ready(function(){ $(elementTarget).removeClass('updateButton').addClass('revertButton'); $(parent).removeClass('incomplete-hover').addClass('complete-hover'); parent.setAttribute('data-tooltip', 'Mark Incomplete'); - updatePercent.innerHTML = data[tier] + '%' + if (tier === 'bossPets' || tier === 'skillPets' || tier === 'otherPets'){ + updatePercent.innerHTML = data["allPets"] + '%'; + } + else { + updatePercent.innerHTML = data[tier] + '%'; + } for (const child of elementTarget.children) { if (child.tagName === 'DIV') { @@ -300,15 +307,17 @@ $(document).ready(function(){ $(document).ready(function(){ $(document).on('click', '.revertButton', function(){ - if ($(this).data('type') === 'bossPet' || $(this).data('type') === 'skillPet' || $(this).data('type') === 'otherPet'){ + if ($(this).data('type') === 'bossPets' || $(this).data('type') === 'skillPets' || $(this).data('type') === 'otherPets'){ var tier = $(this).data('type'); + var updatePercent = document.getElementById("allPetsPercent") } else { var tier = $('#tier').data('tier'); + const updatePercent = document.getElementById(tier + "Percent") } var elementTarget = this; var parent = elementTarget.parentElement; - const updatePercent = document.getElementById(tier + "Percent") + $('form').submit(false); req = $.ajax({ @@ -322,7 +331,12 @@ $(document).ready(function(){ $(elementTarget).removeClass('revertButton').addClass('updateButton'); $(parent).removeClass('complete-hover').addClass('incomplete-hover'); parent.setAttribute('data-tooltip', 'Mark Complete'); - updatePercent.innerHTML = data[tier] + '%' + if (tier === 'bossPets' || tier === 'skillPets' || tier === 'otherPets'){ + updatePercent.innerHTML = data["allPets"] + '%'; + } + else { + updatePercent.innerHTML = data[tier] + '%'; + } for (const child of elementTarget.children) { if (child.tagName === 'DIV') { diff --git a/task_database.py b/task_database.py index 9cb3021..13d95af 100644 --- a/task_database.py +++ b/task_database.py @@ -261,20 +261,20 @@ def __set_task_complete(username: str, tier: str, task_id: int, complete: bool): # '%s.$.taskCurrent' % tier: False}}) task_coll = mydb['taskLists'] cleaned_tier = tier.replace("Tasks", "") - # task_coll.update_one({'username': username}, {"$push" : {f"tiers.{cleaned_tier}.completedTasks": {}}}) - result = task_coll.update_one( - {"username": username}, - { - "$push": { - f"tiers.{cleaned_tier}.completedTasks": {"taskId": task_id} - }, - "$unset": { - f"tiers.{cleaned_tier}.currentTask": "" - } - } - ) + if complete: + print(f"tiers.{cleaned_tier}.completedTasks", task_id) + result = task_coll.update_one( + {"username": username}, + { + "$push": { + f"tiers.{cleaned_tier}.completedTasks": {"taskId": task_id} + }, + "$unset": { + f"tiers.{cleaned_tier}.currentTask": "" + } + } + ) if not complete: - print('removing from completed list') remove_completed = task_coll.update_one( { "username" : username @@ -525,30 +525,74 @@ def get_task_progress(username: str): def get_task_lists(username): - coll = mydb['taskAccounts'] - task_query_easy = coll.find({'username': username}, {'easyTasks': 1}) - task_query_medium = coll.find({'username': username}, {'mediumTasks': 1}) - task_query_hard = coll.find({'username': username}, {'hardTasks': 1}) - task_query_elite = coll.find({'username': username}, {'eliteTasks': 1}) - task_query_master = coll.find({'username': username}, {'masterTasks' : 1}) - task_query_bosspet = coll.find({'username': username}, {'bossPetTasks': 1}) - task_query_skillpet = coll.find({'username': username}, {'skillPetTasks': 1}) - task_query_otherpet = coll.find({'username': username}, {'otherPetTasks': 1}) - task_query_extra = coll.find({'username': username}, {'extraTasks': 1}) - task_query_passive = coll.find({'username': username}, {'passiveTasks': 1}) - - easy_list = task_query_easy[0]['easyTasks'] - medium_list = task_query_medium[0]['mediumTasks'] - hard_list = task_query_hard[0]['hardTasks'] - elite_list = task_query_elite[0]['eliteTasks'] - master_list = task_query_master[0]['masterTasks'] - bosspet_list = task_query_bosspet[0]['bossPetTasks'] - skillpet_list = task_query_skillpet[0]['skillPetTasks'] - otherpet_list = task_query_otherpet[0]['otherPetTasks'] - extra_list = task_query_extra[0]['extraTasks'] - passive_list = task_query_passive[0]['passiveTasks'] - - return easy_list, medium_list, hard_list, elite_list, master_list, bosspet_list, skillpet_list, otherpet_list, extra_list, passive_list + coll = mydb['taskLists'] + task_list_query = coll.find_one({"username" : username}, {"_id" : 0 , "username" : 1, "tiers": 1}) + bossPets = [] + skillPets = [] + otherPets = [] + completed_bossPet_ids = task_list_query['tiers']['bossPets']['completedTasks'] + completed_skillPet_ids = task_list_query['tiers']['skillPets']['completedTasks'] + completed_otherPet_ids = task_list_query['tiers']['otherPets']['completedTasks'] + + + + for boss_pet_task in tasklists.boss_pet: + if completed_bossPet_ids: + for id in completed_bossPet_ids: + if boss_pet_task.id == id['taskId']: + print(boss_pet_task) + boss_pet_task.isCompleted = True + + bossPets.append(boss_pet_task) + + for skill_pet_task in tasklists.skill_pet: + if completed_skillPet_ids: + for id in completed_skillPet_ids: + if skill_pet_task.id == id['taskId']: + skill_pet_task.isCompleted = True + + + skillPets.append(skill_pet_task) + + for other_pet_task in tasklists.other_pet: + if completed_otherPet_ids: + for id in completed_otherPet_ids: + if other_pet_task.id == id['taskId']: + other_pet_task.isCompleted = True + else: + other_pet_task.isCompleted = False + + otherPets.append(other_pet_task) + + return bossPets, tasklists.skill_pet, tasklists.other_pet + bossPets = list() + for task in tasklists.boss_pet: + task_data = TaskData() + # bossPets = list(map(lambda x: x['taskId'], task_list_query['tiers']['bossPets']['completedTasks'])) + print(bossPets) + # task_query_easy = coll.find({'username': username}, {'easyTasks': 1}) + # task_query_medium = coll.find({'username': username}, {'mediumTasks': 1}) + # task_query_hard = coll.find({'username': username}, {'hardTasks': 1}) + # task_query_elite = coll.find({'username': username}, {'eliteTasks': 1}) + # task_query_master = coll.find({'username': username}, {'masterTasks' : 1}) + # task_query_bosspet = coll.find({'username': username}, {'bossPetTasks': 1}) + # task_query_skillpet = coll.find({'username': username}, {'skillPetTasks': 1}) + # task_query_otherpet = coll.find({'username': username}, {'otherPetTasks': 1}) + # task_query_extra = coll.find({'username': username}, {'extraTasks': 1}) + # task_query_passive = coll.find({'username': username}, {'passiveTasks': 1}) + + # easy_list = task_query_easy[0]['easyTasks'] + # medium_list = task_query_medium[0]['mediumTasks'] + # hard_list = task_query_hard[0]['hardTasks'] + # elite_list = task_query_elite[0]['eliteTasks'] + # master_list = task_query_master[0]['masterTasks'] + # bosspet_list = task_query_bosspet[0]['bossPetTasks'] + # skillpet_list = task_query_skillpet[0]['skillPetTasks'] + # otherpet_list = task_query_otherpet[0]['otherPetTasks'] + # extra_list = task_query_extra[0]['extraTasks'] + # passive_list = task_query_passive[0]['passiveTasks'] + + # return easy_list, medium_list, hard_list, elite_list, master_list, bosspet_list, skillpet_list, otherpet_list, extra_list, passive_list ''' @@ -571,7 +615,7 @@ def manual_complete_tasks(username, tier, task_id): __set_task_complete(username, tier, task_id, True) exclude_list = ['bossPetTasks', 'skillPetTasks', 'otherPetTasks'] if tier in exclude_list: - tier = tier.replace('Tasks', 's') + tier = tier.replace('Tasks', '') task = user_dao.task_info_for_id(tasklists.list_for_tier(tier), task_id) return task.name, task.asset_image, task.tip, task.wiki_link @@ -596,8 +640,9 @@ def manual_revert_tasks(username, tier, task_id): __set_task_complete(username, tier, task_id, False) exclude_list = ['bossPetTasks', 'skillPetTasks', 'otherPetTasks'] if tier in exclude_list: - tier = tier.replace('Tasks', 's') + tier = tier.replace('Tasks', '') task = user_dao.task_info_for_id(tasklists.list_for_tier(tier), task_id) + task.isCompleted = False return task.name, task.asset_image, task.tip, task.wiki_link @@ -1286,13 +1331,29 @@ def test(): if not isinstance(otherPets, dict): valid = False - # if not valid: - # task_coll.update_one({"username" : result['username']}, {"$set":}) + if not valid: + print("Invalid data type for user: ", result['username']) + task_coll.update_one( + {"username" : result['username']}, + {"$set": { + "tiers.easy": {"completedTasks" : []}, + "tiers.medium": {"completedTasks" : []}, + "tiers.hard": {"completedTasks" : []}, + "tiers.elite": {"completedTasks" : []}, + "tiers.master": {"completedTasks" : []}, + "tiers.passive": {"completedTasks" : []}, + "tiers.extra": {"completedTasks" : []}, + "tiers.bossPets": {"completedTasks" : []}, + "tiers.skillPets": {"completedTasks" : []}, + "tiers.otherPets": {"completedTasks" : []} + } + }) 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() + # test() + get_task_lists('GerniSleep') pass diff --git a/taskapp.py b/taskapp.py index 076f5f0..c274833 100644 --- a/taskapp.py +++ b/taskapp.py @@ -656,13 +656,15 @@ def task_list_master(): @login_required def task_list_pets(): user_info = BasePageInfo() + # if not user_info.email_bool: # return render_template('email-verify.html') task = get_task_lists(user_info.username) progress = get_task_progress(user_info.username) - items_bosspet = filter_lms(task[5]) - items_skillpet = filter_lms(task[6]) - items_otherpet = filter_lms(task[7]) + items_bosspet = task[0] + items_skillpet = task[1] + items_otherpet = task[2] + context = { 'easy': progress['easy']['percent_complete'], @@ -739,10 +741,7 @@ def highscores(): def update(): user_info = BasePageInfo() task_id = request.form['id'] - if request.form["tier"] == 'bossPets' or request.form["tier"] == 'skillPets' or request.form["tier"] == 'otherPets': - tier = request.form["tier"] - else: - tier = request.form['tier'] + 'Tasks' + tier = request.form['tier'] manual_complete_tasks(session['username'], tier, task_id) progress = get_task_progress(user_info.username) data = { @@ -764,7 +763,7 @@ def update(): @login_required def revert(): task_id = request.form['id'] - tier = request.form['tier'] + 'Tasks' + tier = request.form['tier'] user_info = BasePageInfo() manual_revert_tasks(session['username'], tier, task_id) progress = get_task_progress(user_info.username) @@ -873,8 +872,6 @@ def rank_check(): # Function to send email using send_grid API. def send_reset_email(email, username): token = task_login.get_reset_token(username) - print(token) - print(url_for('reset_token', token=token, _external=True)) email_message = send_grid_email.send_message( email, 'Password Reset Request For Task App', diff --git a/templates/task-list-pets.html b/templates/task-list-pets.html index 8fb66b3..f2d2d58 100644 --- a/templates/task-list-pets.html +++ b/templates/task-list-pets.html @@ -27,9 +27,9 @@