Spaces:
Sleeping
Sleeping
Commit
Β·
61ac5f8
1
Parent(s):
d694796
Feature: Add remove task functionality
Browse files- app.py +32 -0
- task_manager.py +28 -0
app.py
CHANGED
|
@@ -173,6 +173,28 @@ def add_task(task_type, complexity, deadline):
|
|
| 173 |
except Exception as e:
|
| 174 |
return f"Error: {str(e)}"
|
| 175 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 176 |
def update_progress(task_id, user_id, progress, notes):
|
| 177 |
"""Update task progress"""
|
| 178 |
try:
|
|
@@ -318,6 +340,16 @@ with gr.Blocks(title="π§ AI Task Assignment System") as app:
|
|
| 318 |
add_task_output = gr.Markdown()
|
| 319 |
add_task_btn.click(add_task, inputs=[task_type, task_complexity, task_deadline], outputs=add_task_output)
|
| 320 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 321 |
# Assignment Tab
|
| 322 |
with gr.Tab("π― AI Assignment"):
|
| 323 |
gr.Markdown("""### Let AI assign pending tasks
|
|
|
|
| 173 |
except Exception as e:
|
| 174 |
return f"Error: {str(e)}"
|
| 175 |
|
| 176 |
+
def remove_task(task_id):
|
| 177 |
+
"""Remove a task"""
|
| 178 |
+
try:
|
| 179 |
+
if task_id is None or task_id <= 0:
|
| 180 |
+
return "β Please enter a valid Task ID"
|
| 181 |
+
|
| 182 |
+
success, task_name = tm.remove_task(int(task_id))
|
| 183 |
+
|
| 184 |
+
if not success:
|
| 185 |
+
return f"β Task ID {int(task_id)} not found!"
|
| 186 |
+
|
| 187 |
+
# Return updated task list
|
| 188 |
+
if len(tm.engine.tasks) > 0:
|
| 189 |
+
task_list = "\n".join([f"- ID {t['task_id']}: {t['type']} (Complexity: {t['complexity']})" for _, t in tm.engine.tasks.iterrows()])
|
| 190 |
+
else:
|
| 191 |
+
task_list = "No tasks remaining"
|
| 192 |
+
|
| 193 |
+
return f"β
Removed task: **{task_name}** (ID: {int(task_id)})\n\n**Current Tasks:**\n{task_list}"
|
| 194 |
+
|
| 195 |
+
except Exception as e:
|
| 196 |
+
return f"Error: {str(e)}"
|
| 197 |
+
|
| 198 |
def update_progress(task_id, user_id, progress, notes):
|
| 199 |
"""Update task progress"""
|
| 200 |
try:
|
|
|
|
| 340 |
add_task_output = gr.Markdown()
|
| 341 |
add_task_btn.click(add_task, inputs=[task_type, task_complexity, task_deadline], outputs=add_task_output)
|
| 342 |
|
| 343 |
+
# Remove Task Tab
|
| 344 |
+
with gr.Tab("ποΈ Remove Task"):
|
| 345 |
+
gr.Markdown("### Remove a task")
|
| 346 |
+
gr.Markdown("*Enter the Task ID to remove. Check the Dashboard for Task IDs.*")
|
| 347 |
+
gr.Markdown("β οΈ **Warning:** This will also remove all completion history for this task.")
|
| 348 |
+
remove_task_id = gr.Number(label="Task ID to Remove", precision=0, minimum=1)
|
| 349 |
+
remove_task_btn = gr.Button("ποΈ Remove Task", variant="stop")
|
| 350 |
+
remove_task_output = gr.Markdown()
|
| 351 |
+
remove_task_btn.click(remove_task, inputs=remove_task_id, outputs=remove_task_output)
|
| 352 |
+
|
| 353 |
# Assignment Tab
|
| 354 |
with gr.Tab("π― AI Assignment"):
|
| 355 |
gr.Markdown("""### Let AI assign pending tasks
|
task_manager.py
CHANGED
|
@@ -108,6 +108,34 @@ class TaskManager:
|
|
| 108 |
|
| 109 |
print(f"β
Removed user: {user_name} (ID: {user_id})")
|
| 110 |
return True, user_name
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 111 |
|
| 112 |
if __name__ == "__main__":
|
| 113 |
# Example usage
|
|
|
|
| 108 |
|
| 109 |
print(f"β
Removed user: {user_name} (ID: {user_id})")
|
| 110 |
return True, user_name
|
| 111 |
+
|
| 112 |
+
def remove_task(self, task_id):
|
| 113 |
+
"""Remove a task by ID"""
|
| 114 |
+
task_id = int(task_id)
|
| 115 |
+
task_df = self.engine.tasks[self.engine.tasks['task_id'] == task_id]
|
| 116 |
+
|
| 117 |
+
if len(task_df) == 0:
|
| 118 |
+
print(f"β Task ID {task_id} not found")
|
| 119 |
+
return False, None
|
| 120 |
+
|
| 121 |
+
task_name = task_df['type'].iloc[0]
|
| 122 |
+
|
| 123 |
+
# Remove task from dataframe
|
| 124 |
+
self.engine.tasks = self.engine.tasks[self.engine.tasks['task_id'] != task_id]
|
| 125 |
+
self.engine.tasks.to_csv("tasks.csv", index=False)
|
| 126 |
+
|
| 127 |
+
# Also remove task's results
|
| 128 |
+
self.engine.results = self.engine.results[self.engine.results['task_id'] != task_id]
|
| 129 |
+
self.engine.results.to_csv(self.engine.results_file, index=False)
|
| 130 |
+
|
| 131 |
+
# Remove from progress tracking
|
| 132 |
+
keys_to_remove = [k for k in self.engine.progress_data.keys() if k.startswith(f"{task_id}_")]
|
| 133 |
+
for key in keys_to_remove:
|
| 134 |
+
del self.engine.progress_data[key]
|
| 135 |
+
self.engine.save_progress_data()
|
| 136 |
+
|
| 137 |
+
print(f"β
Removed task: {task_name} (ID: {task_id})")
|
| 138 |
+
return True, task_name
|
| 139 |
|
| 140 |
if __name__ == "__main__":
|
| 141 |
# Example usage
|