Gestore di Task con Python e MongoDB
Descrizione del Progetto
In questo progetto, creerai un gestore di task utilizzando Python e MongoDB. L’applicazione permetterà agli utenti di creare, leggere, aggiornare ed eliminare task. Inoltre, includerà funzionalità avanzate come la ricerca e il filtraggio dei task, e la gestione degli utenti.
Requisiti
- Librerie Python: Utilizzare
pymongo
per interagire con MongoDB. - Task:
- Creare, leggere, aggiornare ed eliminare task.
- Ogni task deve avere un titolo, una descrizione, una data di scadenza e uno stato (completato/non completato).
- Utenti:
- Creare e gestire utenti.
- Ogni utente può avere uno o più task.
- Ricerca e Filtraggio:
- Permettere la ricerca dei task per titolo o descrizione.
- Filtrare i task per stato o data di scadenza.
- Autenticazione:
- Gestire l’accesso degli utenti con username e password.
Struttura del Progetto
- Database:
- Creare le collezioni
users
etasks
in MongoDB.
- Creare le collezioni
- Funzionalità CRUD:
- Implementare le operazioni CRUD per i task e gli utenti.
- Autenticazione:
- Implementare la registrazione e il login degli utenti.
- Ricerca e Filtraggio:
- Implementare la ricerca e il filtraggio dei task.
Passaggi
-
Installazione delle Librerie:
Terminal window pip install pymongo bcrypt -
Creazione del Programma:
- Definire la struttura del database e le collezioni.
- Implementare le funzionalità CRUD per i task e gli utenti.
- Implementare la ricerca e il filtraggio dei task.
- Gestire l’autenticazione degli utenti.
Esempio di Codice
from pymongo import MongoClientfrom bson.objectid import ObjectIdimport bcrypt
# Connessione al databaseclient = MongoClient('mongodb://localhost:27017/')db = client['task_manager']
# Collezioniusers_collection = db['users']tasks_collection = db['tasks']
# Funzioni per la gestione degli utentidef create_user(username, password): hashed = bcrypt.hashpw(password.encode('utf-8'), bcrypt.gensalt()) user = {"username": username, "password": hashed} users_collection.insert_one(user) print("Utente creato:", username)
def authenticate_user(username, password): user = users_collection.find_one({"username": username}) if user and bcrypt.checkpw(password.encode('utf-8'), user['password']): print("Autenticazione riuscita") return True else: print("Autenticazione fallita") return False
# Funzioni per la gestione dei taskdef create_task(user_id, title, description, due_date): task = { "user_id": user_id, "title": title, "description": description, "due_date": due_date, "completed": False } tasks_collection.insert_one(task) print("Task creato:", title)
def get_tasks(user_id): tasks = tasks_collection.find({"user_id": user_id}) for task in tasks: print(task)
def update_task(task_id, updates): tasks_collection.update_one({"_id": ObjectId(task_id)}, {"$set": updates}) print("Task aggiornato")
def delete_task(task_id): tasks_collection.delete_one({"_id": ObjectId(task_id)}) print("Task eliminato")
# Funzioni di ricerca e filtraggiodef search_tasks(user_id, query): tasks = tasks_collection.find({"user_id": user_id, "$text": {"$search": query}}) for task in tasks: print(task)
def filter_tasks(user_id, filter): tasks = tasks_collection.find({"user_id": user_id, **filter}) for task in tasks: print(task)
# Esempio di utilizzodef main(): # Registrazione e autenticazione dell'utente username = input("Inserisci username: ") password = input("Inserisci password: ") create_user(username, password) if authenticate_user(username, password): user = users_collection.find_one({"username": username}) user_id = user['_id']
# Creazione di un task create_task(user_id, "Task 1", "Descrizione del Task 1", "2024-07-15")
# Lettura dei task print("I tuoi task:") get_tasks(user_id)
# Aggiornamento di un task task_id = input("Inserisci l'ID del task da aggiornare: ") updates = {"completed": True} update_task(task_id, updates)
# Eliminazione di un task task_id = input("Inserisci l'ID del task da eliminare: ") delete_task(task_id)
# Ricerca di task query = input("Inserisci la query di ricerca: ") search_tasks(user_id, query)
# Filtraggio di task filter = {"completed": False} print("Task non completati:") filter_tasks(user_id, filter)
if __name__ == "__main__": main()
Istruzioni per l’Esecuzione
-
Installazione delle librerie necessarie:
Terminal window pip install pymongo bcrypt -
Configurazione di MongoDB:
- Assicurati di avere un’istanza di MongoDB in esecuzione sul tuo sistema.
- Puoi scaricare e installare MongoDB dal sito ufficiale: MongoDB Download Center.
-
Esecuzione del Programma:
- Salva il codice in un file Python, ad esempio
task_manager.py
. - Esegui il programma:
Terminal window python task_manager.py - Segui le istruzioni per registrare e autenticare un utente, creare, leggere, aggiornare ed eliminare task, e utilizzare le funzionalità di ricerca e filtraggio.
- Salva il codice in un file Python, ad esempio
-
Testa il Programma:
- Verifica che tutte le funzionalità funzionino correttamente.
- Prova a creare, leggere, aggiornare ed eliminare task, e a utilizzare la ricerca e il filtraggio.
Estensioni Possibili
- Interfaccia Grafica: Utilizzare una libreria come
tkinter
oPyQt
per creare un’interfaccia grafica per il gestore di task. - Notifiche: Aggiungere funzionalità per inviare notifiche all’utente quando un task è in scadenza.
- Condivisione dei Task: Permettere agli utenti di condividere task con altri utenti.