Gestione Soci ANCR

Applicazione web per la gestione dei soci dell'Associazione Nazionale Combattenti e Reduci (ANCR).

🚀 Installazione Rapida: Per una guida di installazione semplificata, consulta INSTALLAZIONE_RAPIDA.md 📝 Release Notes: Consulta le novità della versione v1.3.0

Funzionalità

👥 Gestione Soci

  • Gestione completa dei soci (aggiunta, modifica, eliminazione)
  • Possibilità di eliminare soci anche se hanno tessere associate
  • Gestione delle tessere associative
  • Gestione degli utenti con diversi livelli di accesso (amministratore, segretario, operatore)

📧 Sistema Email

  • Sistema di comunicazione email integrato
  • Invio email personalizzate ai soci (singole e multiple)
  • Invio email agli utenti del sistema (solo per amministratori e segretari)
  • Personalizzazione messaggi con placeholder automatici
  • Firma automatica dell'associazione e informazioni GDPR

📊 Reporting e Export

  • Esportazione dei dati in formato CSV ed Excel (solo soci con tessere valide)
  • Dashboard con statistiche

🌐 Accesso Pubblico

  • Modulo di iscrizione pubblico accessibile senza login
  • Accessibile dalla pagina di login tramite link dedicato
  • Calcolo automatico del codice fiscale
  • Protezione anti-spam con CAPTCHA
  • Generazione automatica di immagini CAPTCHA per prevenire iscrizioni automatizzate
  • Notifiche email all'amministratore per nuove richieste di iscrizione
  • Configurabili tramite le impostazioni email nel file .env

🏛️ Gestione Patrimonio

  • Sistema completo di gestione beni patrimoniali
  • Gestione cessioni, prestiti e donazioni
  • Registrazione restituzioni con stato del bene
  • Generazione documenti PDF per cessioni

📋 NUOVO: Passaggio di Consegne e Storicizzazione

  • Storicizzazione completa del patrimonio: Snapshot immutabile di tutti i beni al momento del passaggio
  • Documenti ufficiali: Generazione automatica di PDF professionali per passaggi di consegne
  • Tracciabilità storica: Ogni passaggio mantiene i dati esatti del momento della consegna
  • Ristampa fedele: I PDF storici riflettono sempre la situazione originale del patrimonio
  • Gestione responsabilità: Documentazione ufficiale per trasferimenti tra amministrazioni
  • Conformità normativa: Supporto per audit, controlli e verifiche amministrative

📱 NUOVO: Sistema QR Code

  • Generazione schede QR: Crea schede stampabili con QR code per ogni bene
  • Visualizzazione pubblica: Accesso ai dettagli del bene tramite QR code senza login
  • Design responsive: Template ottimizzato per dispositivi mobili e desktop
  • Tracciabilità completa: Ogni bene ha un QR code univoco per accesso rapido
  • PDF professionale: Schede generate automaticamente con layout professionale

Requisiti

  • Python 3.8 o superiore
  • Pip (gestore pacchetti Python)
  • SQLite (database predefinito) o altro database supportato da SQLAlchemy

Installazione

🚀 Installazione Automatica (Consigliato)

Per una nuova installazione rapida e senza problemi:

bash ./install.sh

Lo script automatico gestisce: - ✅ Creazione ambiente virtuale - ✅ Installazione dipendenze compatibili - ✅ Configurazione file .env - ✅ Inizializzazione database - ✅ Creazione utente admin - ✅ Setup sistema migrazioni

Tempo stimato: 2-3 minuti

📋 Installazione Manuale

Se preferisci il controllo manuale:

  1. Ambiente virtuale ```bash python3 -m venv venv source venv/bin/activate # macOS/Linux

oppure venv\Scripts\activate # Windows

```

  1. Dipendenze essenziali bash pip install flask flask-sqlalchemy flask-migrate flask-login flask-mail flask-wtf wtforms werkzeug python-dotenv reportlab markdown qrcode[pil]

  2. Dipendenze opzionali (per Excel) bash pip install pandas openpyxl

  3. Configurazione ```bash cp .env.sample .env

Modifica .env con le tue impostazioni se necessario

```

  1. Inizializzazione database e admin bash python -c "from app import app, db; app.app_context().push(); db.create_all()" python -c " from app import app, db from models.utente import Utente from werkzeug.security import generate_password_hash app.app_context().push() admin = Utente(username='admin', email='admin@example.com', password_hash=generate_password_hash('admin'), ruolo='admin') db.session.add(admin) db.session.commit() print('Admin creato') "

Configurazione

Il file .env viene creato automaticamente con configurazioni funzionanti. Per personalizzazioni avanzate:

```env

Configurazione applicazione

SECRET_KEY=la-tua-chiave-segreta-molto-lunga-e-sicura DATABASE_URL=sqlite:///gest_2025.db

Configurazione server Flask

FLASK_RUN_HOST=0.0.0.0 FLASK_RUN_PORT=5000

Configurazione email (opzionale per sviluppo)

MAIL_SERVER=smtp.example.com MAIL_PORT=587 MAIL_USE_TLS=True MAIL_USE_SSL=False MAIL_USERNAME=tuo-indirizzo@example.com MAIL_PASSWORD=tua-password MAIL_DEFAULT_SENDER=tuo-indirizzo@example.com ADMINS=admin@example.com

Configurazioni Associazione

ASSOCIATION_FEDERATION=FEDERAZIONE POTENZA MATERA ASSOCIATION_NAME=ANCR - Sezione di Avigliano ASSOCIATION_URL=https://gestionale.ancravigliano.it/ ASSOCIATION_TITLE=Bartolo Gianturco ASSOCIATION_ADDRESS=Via Roma, 1 - 85021 Avigliano (PZ) ASSOCIATION_PHONE=+39 0971 123456 ASSOCIATION_EMAIL=info@ancravigliano.it ```

Note importanti:

  • Il file .env è obbligatorio per il corretto funzionamento
  • Utilizza il file .env.sample come punto di partenza
  • In produzione, cambia sempre SECRET_KEY
  • Le configurazioni email sono opzionali per lo sviluppo

Avvio dell'applicazione

bash python -m flask run

L'applicazione sarà disponibile all'indirizzo http://127.0.0.1:5000/

Accesso

Credenziali predefinite per l'amministratore:

  • Username: admin
  • Password: admin
  • URL: http://127.0.0.1:5000

⚠️ Importante: Cambiare la password dopo il primo accesso!

📱 Utilizzo Sistema QR Code

Generazione Schede QR

  1. Accedi al sistema e vai alla sezione "Patrimonio"
  2. Seleziona un bene dalla lista
  3. Nel dettaglio del bene, clicca su "Scheda con QR Code"
  4. Verrà generato un PDF stampabile con:
  5. Dettagli completi del bene
  6. QR code per accesso rapido
  7. Layout professionale per stampa

Visualizzazione Pubblica

  • Scansiona il QR code con qualsiasi smartphone/tablet
  • Accesso immediato ai dettagli del bene senza login
  • Visualizzazione ottimizzata per dispositivi mobili
  • Informazioni complete: nome, categoria, ubicazione, valutazione, stato

Casi d'uso

  • Inventario fisico: Applica etichette QR sui beni per identificazione rapida
  • Controlli periodici: Verifica stato e ubicazione tramite scansione
  • Trasferimenti: Documenta spostamenti e cessioni
  • Audit: Accesso rapido alle informazioni durante verifiche

📋 Utilizzo Sistema Passaggio di Consegne

Creazione Passaggio di Consegne

  1. Accedi al sistema con credenziali di Amministratore o Segretario
  2. Vai alla sezione "Patrimonio" dal menu principale
  3. Clicca su "Passaggio di Consegne" per iniziare il processo
  4. Compila i dati del consegnante:
  5. Nome e cognome dell'amministratore uscente
  6. Ruolo (es. Presidente, Tesoriere, Segretario)
  7. Data di consegna
  8. Compila i dati del ricevente:
  9. Nome e cognome del nuovo amministratore
  10. Ruolo nella nuova amministrazione
  11. Data di ricevimento
  12. Aggiungi note (opzionale): Osservazioni o annotazioni particolari
  13. Clicca "Genera Passaggio di Consegne"

Cosa Succede Automaticamente

  • Snapshot completo: Il sistema salva istantaneamente tutti i beni patrimoniali
  • Calcolo statistiche: Numero totale beni e valore complessivo
  • Generazione PDF: Documento ufficiale pronto per la stampa e firma
  • Archiviazione permanente: I dati vengono salvati in modo immutabile

Visualizzazione Storico

  1. Dalla sezione "Patrimonio", clicca su "Storico Passaggi"
  2. Visualizza l'elenco di tutti i passaggi effettuati con:
  3. Data del passaggio
  4. Nomi di consegnante e ricevente
  5. Numero beni e valore totale al momento del passaggio
  6. Scarica PDF storici cliccando su "Scarica PDF"

Caratteristiche Chiave

  • Immutabilità: I dati storici non possono essere modificati
  • Fedeltà temporale: Ogni PDF riflette esattamente la situazione del momento
  • Tracciabilità completa: Audit trail per ogni trasferimento di responsabilità
  • Conformità legale: Documentazione ufficiale per controlli e verifiche

Casi d'Uso Tipici

  • Elezioni: Passaggio tra vecchia e nuova amministrazione
  • Cambio cariche: Trasferimento responsabilità specifiche
  • Audit annuali: Documentazione periodica del patrimonio
  • Controlli esterni: Supporto per verifiche di enti di controllo

Struttura del progetto

  • app.py: File principale dell'applicazione
  • config.py: Configurazioni dell'applicazione (legge dal file .env)
  • .env: File di configurazione con variabili d'ambiente
  • .env.sample: Template di esempio per la configurazione
  • models/: Modelli del database
  • database.py: Configurazione del database
  • socio.py: Modello per i soci
  • tessera.py: Modello per le tessere
  • utente.py: Modello per gli utenti
  • bene_patrimoniale.py: Modello per i beni patrimoniali
  • passaggio_consegne.py: Modello per i passaggi di consegne
  • bene_passaggio_snapshot.py: Modello per la storicizzazione dei beni
  • codice_fiscale.py: Utility per il calcolo del codice fiscale
  • templates/: Template HTML
  • static/: File statici (CSS, JavaScript, immagini)
  • data/: Dati dell'applicazione
  • uploads/: Cartella per i file caricati

🆘 Risoluzione Problemi

Problemi Comuni

Errore Pandas/Excel ```bash

L'app funziona comunque, solo l'export Excel sarà limitato

pip install openpyxl # Per supporto Excel base ```

Errore Werkzeug/url_parse bash pip install werkzeug==2.3.7 # Versione compatibile

Database Locked ```bash rm gest_2025.db # Rimuovi database esistente

Poi riesegui l'inizializzazione

```

Credenziali non accettate ```bash

Resetta password admin

python -c " from app import app, db from models.utente import Utente from werkzeug.security import generate_password_hash app.app_context().push() admin = Utente.query.filter_by(username='admin').first() admin.password_hash = generate_password_hash('admin') db.session.commit() " ```

Backup del database

Per effettuare un backup del database SQLite:

bash sqlite3 gest_2025.db .dump > backup.sql

Per ripristinare il database da un backup:

bash sqlite3 gest_2025.db < backup.sql

Aggiornamenti

Per aggiornare l'applicazione:

bash git pull # Se usi git source venv/bin/activate pip install -r requirements.txt # Nuove dipendenze flask db upgrade # Aggiorna database

Licenza

Questo progetto è rilasciato sotto licenza MIT.