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:
automationkriz
2026-04-05 14:48:22 +00:00
commit d296353dcb
48 changed files with 3538 additions and 0 deletions

70
diario/admin.py Normal file
View File

@@ -0,0 +1,70 @@
from django.contrib import admin
from .models import Conversazione, Obiettivo, AggiornamentoObiettivo, CommentoConversazione, Documento
class AggiornamentoInline(admin.TabularInline):
model = AggiornamentoObiettivo
extra = 0
readonly_fields = ('data',)
class CommentoConversazioneInline(admin.TabularInline):
model = CommentoConversazione
extra = 0
readonly_fields = ('data',)
class DocumentoInline(admin.TabularInline):
model = Documento
extra = 0
readonly_fields = ('data_caricamento',)
fk_name = 'conversazione'
class DocumentoObiettivoInline(admin.TabularInline):
model = Documento
extra = 0
readonly_fields = ('data_caricamento',)
fk_name = 'obiettivo'
@admin.register(Conversazione)
class ConversazioneAdmin(admin.ModelAdmin):
list_display = ('titolo', 'data', 'registrato_da')
list_filter = ('data', 'registrato_da')
search_fields = ('titolo', 'contenuto')
filter_horizontal = ('partecipanti',)
readonly_fields = ('data',)
inlines = [CommentoConversazioneInline, DocumentoInline]
@admin.register(Obiettivo)
class ObiettivoAdmin(admin.ModelAdmin):
list_display = ('titolo', 'tipo', 'stato', 'data_scadenza', 'creato_da')
list_filter = ('tipo', 'stato', 'assegnato_a')
search_fields = ('titolo', 'descrizione')
readonly_fields = ('data_creazione',)
inlines = [AggiornamentoInline, DocumentoObiettivoInline]
@admin.register(AggiornamentoObiettivo)
class AggiornamentoObiettivoAdmin(admin.ModelAdmin):
list_display = ('obiettivo', 'autore', 'data')
list_filter = ('autore', 'data')
readonly_fields = ('data',)
@admin.register(CommentoConversazione)
class CommentoConversazioneAdmin(admin.ModelAdmin):
list_display = ('conversazione', 'autore', 'data')
list_filter = ('autore', 'data')
readonly_fields = ('data',)
@admin.register(Documento)
class DocumentoAdmin(admin.ModelAdmin):
list_display = ('titolo', 'caricato_da', 'data_caricamento', 'conversazione', 'obiettivo')
list_filter = ('caricato_da', 'data_caricamento')
search_fields = ('titolo', 'descrizione')
readonly_fields = ('data_caricamento',)