Initial commit: Diario Conversazioni Olimpic Nastri
- 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
This commit is contained in:
67
diario/migrations/0001_initial.py
Normal file
67
diario/migrations/0001_initial.py
Normal file
@@ -0,0 +1,67 @@
|
||||
# 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'],
|
||||
},
|
||||
),
|
||||
]
|
||||
18
diario/migrations/0002_obiettivo_avanzamento.py
Normal file
18
diario/migrations/0002_obiettivo_avanzamento.py
Normal file
@@ -0,0 +1,18 @@
|
||||
# Generated by Django 5.2.12 on 2026-04-01 13:08
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('diario', '0001_initial'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='obiettivo',
|
||||
name='avanzamento',
|
||||
field=models.PositiveSmallIntegerField(default=0),
|
||||
),
|
||||
]
|
||||
29
diario/migrations/0003_alter_conversazione_data_and_more.py
Normal file
29
diario/migrations/0003_alter_conversazione_data_and_more.py
Normal file
@@ -0,0 +1,29 @@
|
||||
# Generated by Django 5.2.12 on 2026-04-01 13:59
|
||||
|
||||
from django.conf import settings
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('diario', '0002_obiettivo_avanzamento'),
|
||||
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name='conversazione',
|
||||
name='data',
|
||||
field=models.DateTimeField(),
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name='obiettivo',
|
||||
name='assegnato_a',
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='obiettivo',
|
||||
name='assegnato_a',
|
||||
field=models.ManyToManyField(blank=True, related_name='obiettivi_assegnati', to=settings.AUTH_USER_MODEL),
|
||||
),
|
||||
]
|
||||
36
diario/migrations/0004_documento.py
Normal file
36
diario/migrations/0004_documento.py
Normal file
@@ -0,0 +1,36 @@
|
||||
# Generated by Django 5.2.12 on 2026-04-04 16:45
|
||||
|
||||
import diario.models
|
||||
import django.core.validators
|
||||
import django.db.models.deletion
|
||||
from django.conf import settings
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('diario', '0003_alter_conversazione_data_and_more'),
|
||||
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name='Documento',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('file', models.FileField(upload_to='documenti/%Y/%m/', validators=[django.core.validators.FileExtensionValidator(allowed_extensions=['pdf']), diario.models.validate_file_size])),
|
||||
('titolo', models.CharField(max_length=200)),
|
||||
('descrizione', models.TextField(blank=True)),
|
||||
('data_caricamento', models.DateTimeField(auto_now_add=True)),
|
||||
('caricato_da', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='documenti_caricati', to=settings.AUTH_USER_MODEL)),
|
||||
('conversazione', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='documenti', to='diario.conversazione')),
|
||||
('obiettivo', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='documenti', to='diario.obiettivo')),
|
||||
],
|
||||
options={
|
||||
'verbose_name': 'Documento',
|
||||
'verbose_name_plural': 'Documenti',
|
||||
'ordering': ['-data_caricamento'],
|
||||
},
|
||||
),
|
||||
]
|
||||
31
diario/migrations/0005_commento_conversazione.py
Normal file
31
diario/migrations/0005_commento_conversazione.py
Normal file
@@ -0,0 +1,31 @@
|
||||
# Generated by Django 5.2.12 on 2026-04-05 14:30
|
||||
|
||||
import django.db.models.deletion
|
||||
from django.conf import settings
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('diario', '0004_documento'),
|
||||
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name='CommentoConversazione',
|
||||
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='commenti_conversazione', to=settings.AUTH_USER_MODEL)),
|
||||
('conversazione', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='commenti', to='diario.conversazione')),
|
||||
],
|
||||
options={
|
||||
'verbose_name': 'Commento',
|
||||
'verbose_name_plural': 'Commenti',
|
||||
'ordering': ['-data'],
|
||||
},
|
||||
),
|
||||
]
|
||||
0
diario/migrations/__init__.py
Normal file
0
diario/migrations/__init__.py
Normal file
Reference in New Issue
Block a user