App Django per la gestione presenze, permessi e smart working, pensata per studi professionali e PMI. In produzione dal 2024. Esportazione Excel mensile per il consulente del lavoro.
- Tipi di assenza: ROL, ferie, malattia, ex festività, permesso lutto, 104, straordinario, permesso studio
- Smart working: pianificazione settimanale fissa + eccezioni giornaliere
- Saldi ore: gestione manuale e automatica per ogni dipendente
- Part-time: percentuale configurabile per dipendente, orari personalizzati
- Permesso studio: monte ore annuo e pluriennale configurabile
- Pausa pranzo: esclusa automaticamente dal calcolo ore (personalizzabile)
- Export mensile: report Excel con riepilogo presenze per consulente del lavoro
- Notifiche email: promemoria ferie accumulate via Celery Beat
- UI responsiva: calendario mensile navigabile, tabella presenze filtrabile
Django 5 + Gunicorn ← Web framework + WSGI server
PostgreSQL 14 ← Database principale
Redis 7 ← Cache + message broker Celery
Celery (worker + beat) ← Task asincroni e schedulati
Docker Compose ← Deploy completo in un comando
┌─── web (Django + Gunicorn) [Port 8050]
├─── redis (Cache + Broker) [Port 6379]
├─── celery-worker (Task asincroni)
├─── celery-beat (Task schedulati)
├─── db (PostgreSQL 14) [Interno]
└─── flower (Monitor Celery) [Port 5555, profilo monitoring]
- Docker + Docker Compose
- (Solo produzione) Un dominio con SSL
git clone https://github.com/bertorico/calendario-presenze
cd calendario-presenze
cp .env.example .env
# Modifica .env con le tue impostazioni./scripts/start-dev.sh
# oppure
docker compose up --build -d./scripts/start-prod.sh
# oppure
docker compose up --build -d web db redis celery-worker celery-beatCopia .env.example in .env e valorizza le variabili. Le principali:
# Django
SECRET_KEY=chiave-segreta-lunga-e-casuale
DEBUG=False
DJANGO_ENVIRONMENT=production
ALLOWED_HOSTS=tuodominio.com,www.tuodominio.com
# Database
DATABASE_NAME=calendario_db
DATABASE_USER=calendario_user
DATABASE_PASSWORD=password_sicura
# Redis (deve combaciare negli URL broker/backend)
REDIS_PASSWORD=password_redis
REDIS_URL=redis://:${REDIS_PASSWORD}@redis:6379/0
CELERY_BROKER_URL=redis://:${REDIS_PASSWORD}@redis:6379/0
CELERY_RESULT_BACKEND=redis://:${REDIS_PASSWORD}@redis:6379/1
# Email SMTP (per notifiche ferie)
MAIL_DJANGO=tua@email.com
PASSWD_MAIL_DJANGO=app_password| Modello | Descrizione |
|---|---|
Employee |
Profilo dipendente (part-time %, orari, permesso studio) |
PermessiRichiesta |
Singola assenza con calcolo ore (esclude pausa pranzo) |
SmartWorkingSchedule |
Piano smart working settimanale fisso |
SmartWorkingChange |
Override giornaliero smart working |
SaldoOre |
Saldo per tipo (ROL/ferie/exfest/studio) con origine |
Festivita |
Giorni festivi ricorrenti e non |
NoteRiepilogoMensile |
Note admin sul riepilogo mensile |
Il report Excel mensile (scaricabile dalla UI) include per ogni dipendente:
- Presenze giornaliere con tipo assenza
- Totale ore per tipo (ROL, ferie, malattia, 104, ecc.)
- Saldo ore residuo (ferie, ROL, ex festività, permesso studio)
- Smart working giorni/mese
Il file è strutturato per essere inviato direttamente al consulente del lavoro.
Le immagini backend/media/img/logo.png e logo_sfondo.png sono placeholder 1×1.
Sostituiscile con il logo della tua azienda (stessa struttura di path).
# Health check
curl http://localhost:8050/health/
# Log in tempo reale
docker compose logs -f web
# Flower (task Celery) — richiede profilo monitoring
docker compose --profile monitoring up -d
# → http://localhost:5555# Shell Django
docker compose exec web python manage.py shell
# Migrazioni
docker compose exec web python manage.py migrate
# Test
docker compose exec web python manage.py test calendarioMIT
@bertorico — Django, automazioni fiscali, infrastruttura IT per studi professionali.
LinkedIn