python_example.py•2.82 kB
"""
A simple task management system for demonstration purposes
"""
class Task:
    def __init__(self, id, title, description=None, status="pending"):
        self.id = id
        self.title = title
        self.description = description
        self.status = status
    
    def mark_complete(self):
        self.status = "completed"
    
    def mark_in_progress(self):
        self.status = "in_progress"
    
    def __str__(self):
        return f"Task {self.id}: {self.title} ({self.status})"
class TaskManager:
    def __init__(self):
        self.tasks = {}
        self.next_id = 1
    
    def add_task(self, title, description=None):
        task = Task(self.next_id, title, description)
        self.tasks[self.next_id] = task
        self.next_id += 1
        return task.id
    
    def get_task(self, task_id):
        if task_id in self.tasks:
            return self.tasks[task_id]
        print(f"Task {task_id} not found")
        return None
    
    def update_task(self, task_id, title=None, description=None, status=None):
        task = self.get_task(task_id)
        if not task:
            return False
        
        if title:
            task.title = title
        if description:
            task.description = description
        if status:
            task.status = status
        
        return True
    
    def delete_task(self, task_id):
        if task_id in self.tasks:
            del self.tasks[task_id]
            return True
        print(f"Task {task_id} not found")
        return False
    
    def list_tasks(self, status=None):
        if status:
            return [task for task in self.tasks.values() if task.status == status]
        return list(self.tasks.values())
    
    def summary(self):
        statuses = {}
        for task in self.tasks.values():
            if task.status in statuses:
                statuses[task.status] += 1
            else:
                statuses[task.status] = 1
        
        return {
            "total": len(self.tasks),
            "by_status": statuses
        }
# Example usage
if __name__ == "__main__":
    manager = TaskManager()
    
    # Add some tasks
    task1_id = manager.add_task("Implement login functionality")
    task2_id = manager.add_task("Fix navigation bug", "Users report the back button not working")
    task3_id = manager.add_task("Update documentation")
    
    # Update task status
    manager.update_task(task1_id, status="in_progress")
    manager.update_task(task2_id, status="completed")
    
    # Print tasks
    for task in manager.list_tasks():
        print(task)
    
    # Print summary
    print("\nSummary:")
    summary = manager.summary()
    print(f"Total tasks: {summary['total']}")
    for status, count in summary['by_status'].items():
        print(f"{status}: {count}")