- Django 5.2 + PostgreSQL + Gunicorn - Conversazioni, Obiettivi, Documenti PDF, Persone - Commenti e aggiornamenti con modifica/eliminazione - Agenda, ricerca live, giorni rimanenti scadenze - Bootstrap 5 + HTMX + toast notifications - Deploy: Nginx + Gunicorn + SSL
68 lines
3.4 KiB
Python
68 lines
3.4 KiB
Python
# Generated by Django 5.2.12 on 2026-04-01 12:43
|
|
|
|
import django.db.models.deletion
|
|
from django.conf import settings
|
|
from django.db import migrations, models
|
|
|
|
|
|
class Migration(migrations.Migration):
|
|
|
|
initial = True
|
|
|
|
dependencies = [
|
|
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
|
|
]
|
|
|
|
operations = [
|
|
migrations.CreateModel(
|
|
name='Conversazione',
|
|
fields=[
|
|
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
|
('titolo', models.CharField(max_length=200)),
|
|
('data', models.DateTimeField(auto_now_add=True)),
|
|
('contenuto', models.TextField()),
|
|
('partecipanti', models.ManyToManyField(blank=True, related_name='conversazioni_partecipate', to=settings.AUTH_USER_MODEL)),
|
|
('registrato_da', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='conversazioni_registrate', to=settings.AUTH_USER_MODEL)),
|
|
],
|
|
options={
|
|
'verbose_name': 'Conversazione',
|
|
'verbose_name_plural': 'Conversazioni',
|
|
'ordering': ['-data'],
|
|
},
|
|
),
|
|
migrations.CreateModel(
|
|
name='Obiettivo',
|
|
fields=[
|
|
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
|
('titolo', models.CharField(max_length=200)),
|
|
('descrizione', models.TextField(blank=True)),
|
|
('tipo', models.CharField(choices=[('collettivo', 'Collettivo'), ('individuale', 'Individuale')], default='collettivo', max_length=20)),
|
|
('stato', models.CharField(choices=[('aperto', 'Aperto'), ('in_corso', 'In corso'), ('completato', 'Completato'), ('sospeso', 'Sospeso')], default='aperto', max_length=20)),
|
|
('data_scadenza', models.DateField(blank=True, null=True)),
|
|
('data_creazione', models.DateTimeField(auto_now_add=True)),
|
|
('assegnato_a', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='obiettivi_assegnati', to=settings.AUTH_USER_MODEL)),
|
|
('creato_da', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='obiettivi_creati', to=settings.AUTH_USER_MODEL)),
|
|
],
|
|
options={
|
|
'verbose_name': 'Obiettivo',
|
|
'verbose_name_plural': 'Obiettivi',
|
|
'ordering': ['-data_creazione'],
|
|
},
|
|
),
|
|
migrations.CreateModel(
|
|
name='AggiornamentoObiettivo',
|
|
fields=[
|
|
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
|
('testo', models.TextField()),
|
|
('data', models.DateTimeField(auto_now_add=True)),
|
|
('autore', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='aggiornamenti', to=settings.AUTH_USER_MODEL)),
|
|
('obiettivo', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='aggiornamenti', to='diario.obiettivo')),
|
|
],
|
|
options={
|
|
'verbose_name': 'Aggiornamento',
|
|
'verbose_name_plural': 'Aggiornamenti',
|
|
'ordering': ['-data'],
|
|
},
|
|
),
|
|
]
|