From e21ea942141120b6793b1af2d2886c2739351842 Mon Sep 17 00:00:00 2001 From: Gerni <47844854+mgerni@users.noreply.github.com> Date: Thu, 21 May 2026 21:33:29 -0400 Subject: [PATCH] get first instance of task when generating --- task_database.py | 42 ++++++++++++++++++++++++++++-------------- 1 file changed, 28 insertions(+), 14 deletions(-) diff --git a/task_database.py b/task_database.py index 44df064..c074013 100644 --- a/task_database.py +++ b/task_database.py @@ -442,6 +442,13 @@ def get_incomplete_tasks(tier: str) -> list[TaskData]: completed_task_ids = list(map(lambda x: x.id, user.get_task_list(tier).completed_tasks)) return list(filter(lambda x: x.id not in completed_task_ids, all_tasks)) + def get_first_task_instance(generated_task: TaskData, incomplete_tasks: list[TaskData]) -> TaskData: + if generated_task.verification: + first_task_instance = min([task for task in incomplete_tasks if task.name == generated_task.name], + key=lambda task: getattr(task.verification, "count", 0)) + return first_task_instance + return generated_task + tasks_easy = get_incomplete_tasks('easy') tasks_medium = get_incomplete_tasks('medium') tasks_hard = get_incomplete_tasks('hard') @@ -450,27 +457,34 @@ def get_incomplete_tasks(tier: str) -> list[TaskData]: if len(tasks_easy) != 0: generated_task = random.choice(tasks_easy) - __set_current_task(username, 'easyTasks', generated_task.id, True) - return generated_task + first_task_instance = get_first_task_instance(generated_task, tasks_easy) + __set_current_task(username, 'easyTasks', first_task_instance.id, True) + return first_task_instance + elif len(tasks_medium) != 0: generated_task = random.choice(tasks_medium) - __set_current_task(username, 'mediumTasks', generated_task.id, True) - return generated_task + first_task_instance = get_first_task_instance(generated_task, tasks_medium) + __set_current_task(username, 'mediumTasks', first_task_instance.id, True) + return first_task_instance + elif len(tasks_hard) != 0: generated_task = random.choice(tasks_hard) - __set_current_task(username, 'hardTasks', generated_task.id, True) - return generated_task + first_task_instance = get_first_task_instance(generated_task, tasks_hard) + __set_current_task(username, 'hardTasks', first_task_instance.id, True) + return first_task_instance + elif len(tasks_elite) != 0: generated_task = random.choice(tasks_elite) - __set_current_task(username, 'eliteTasks', generated_task.id, True) - return generated_task + first_task_instance = get_first_task_instance(generated_task, tasks_elite) + __set_current_task(username, 'eliteTasks', first_task_instance.id, True) + return first_task_instance + elif len(tasks_master) != 0: - if tasks_master[0].id == "6b09384d-c06b-44ac-8a07-b7038cd30710": - generated_task = tasks_master[0] - else: - generated_task = random.choice(tasks_master) - __set_current_task(username, 'masterTasks', generated_task.id, True) - return generated_task + generated_task = random.choice(tasks_master) + first_task_instance = get_first_task_instance(generate_task, tasks_master) + __set_current_task(username, 'masterTasks', first_task_instance.id, True) + return first_task_instance + return None # If user has just completed a task of the given tier and the progress is 100, then they've just completed the last task