rishirajpathak commited on
Commit
61ac5f8
Β·
1 Parent(s): d694796

Feature: Add remove task functionality

Browse files
Files changed (2) hide show
  1. app.py +32 -0
  2. 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