📢 Nuovo Corso Bootstrap Completo disponibile!

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

  1. Librerie Python: Utilizzare pymongo per interagire con MongoDB.
  2. 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).
  3. Utenti:
    • Creare e gestire utenti.
    • Ogni utente può avere uno o più task.
  4. Ricerca e Filtraggio:
    • Permettere la ricerca dei task per titolo o descrizione.
    • Filtrare i task per stato o data di scadenza.
  5. Autenticazione:
    • Gestire l’accesso degli utenti con username e password.

Struttura del Progetto

  1. Database:
    • Creare le collezioni users e tasks in MongoDB.
  2. Funzionalità CRUD:
    • Implementare le operazioni CRUD per i task e gli utenti.
  3. Autenticazione:
    • Implementare la registrazione e il login degli utenti.
  4. Ricerca e Filtraggio:
    • Implementare la ricerca e il filtraggio dei task.

Passaggi

  1. Installazione delle Librerie:

    Terminal window
    pip install pymongo bcrypt
  2. 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 MongoClient
from bson.objectid import ObjectId
import bcrypt
# Connessione al database
client = MongoClient('mongodb://localhost:27017/')
db = client['task_manager']
# Collezioni
users_collection = db['users']
tasks_collection = db['tasks']
# Funzioni per la gestione degli utenti
def 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 task
def 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 filtraggio
def 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 utilizzo
def 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

  1. Installazione delle librerie necessarie:

    Terminal window
    pip install pymongo bcrypt
  2. 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.
  3. 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.
  4. 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

  1. Interfaccia Grafica: Utilizzare una libreria come tkinter o PyQt per creare un’interfaccia grafica per il gestore di task.
  2. Notifiche: Aggiungere funzionalità per inviare notifiche all’utente quando un task è in scadenza.
  3. Condivisione dei Task: Permettere agli utenti di condividere task con altri utenti.