Prechádzať zdrojové kódy

modifiche supplementari documenti

Mauro 1 rok pred
rodič
commit
c0df1fee4d

+ 1 - 0
documento/forms.py

@@ -22,6 +22,7 @@ class AdminUpload(forms.Form):
     self.fields['indice'] = forms.FileField(required=False)
     self.fields['allegati'] = MultipleFileField(required=False)
     self.fields['descrizione'] = forms.CharField(required=False)
+    self.fields['pertutti'] = forms.BooleanField(required=False)
 
 class DeleteOldDocuments(forms.Form):
   def __init(self,*args,**kwargs):

+ 39 - 22
documento/managefile.py

@@ -125,33 +125,52 @@ def upload_file_indice(uploaded_file):
 
   return stored_file
 
+def associafile_a_utente(singolodocumento,request,utente,azienda,descrizione,amministratore,listaok,listanotok,pertutti=False):
+  risultato = upload_file(singolodocumento,utente)
+  documento = Documento()
+  documento.dataupload = datetime.datetime.now()
+  documento.utente = utente
+  documento.azienda = azienda
+
+  if pertutti: 
+    documento.documento = "".join((utente.codicefiscale.strip(),"_",singolodocumento.name))
+  else: 
+    documento.documento = singolodocumento.name
+
+  print('documento.documento',documento.documento)
+  documento.storage = risultato
+  documento.descrizione = descrizione
+  try:
+    documento.save()
+    #setLog(8,azienda=azienda,utente=utente,documento=documento,amministratore=amministratore)
+    listaok.append(documento.documento)
+  except IntegrityError as ie:
+    print("problema di integrita', il file esiste",ie)
+    listanotok.append(documento.documento)
+
 ##################################################################################
-def save_and_load_file_multiple(listadocumenti,request,utente,azienda,descrizione,amministratore):
+# carica file multipli. Utilizzato prevalentemente dalla gestione documenti.
+def save_and_load_file_multiple(listadocumenti,request,utente,azienda,descrizione,amministratore,pertutti=False):
   listaok = list()
   listanotok = list()
+
   for singolodocumento in listadocumenti:
     print('singolodocumento',singolodocumento)
     for ut in utente:
-      if ut.codicefiscale.strip() in singolodocumento.name:
-        print('match utente-documento')
-        risultato = upload_file(singolodocumento,ut)
-        documento = Documento()
-        documento.dataupload = datetime.datetime.now()
-        documento.utente = ut
-        documento.azienda = azienda
-        documento.documento = singolodocumento.name
-        documento.storage = risultato
-        documento.descrizione = descrizione
-        try:
-          documento.save()
-          setLog(8,azienda=azienda,utente=utente,documento=documento,amministratore=amministratore)
-          listaok.append(documento.documento)
-        except IntegrityError as ie:
-          print("problema di integrita', il file esiste",ie)
-          listanotok.append(documento.documento)
-  print(listaok,listanotok)
+      if not pertutti:
+        if ut.codicefiscale.strip() in singolodocumento.name:
+          print('associa documento CON riferimento a codice fiscale')
+          associafile_a_utente(singolodocumento,request,ut,azienda,descrizione,amministratore,listaok,listanotok)
+        else:
+          print('il codice fiscale',ut.codicefiscale.strip()," non si trova in ",singolodocumento.name)
+      else:
+        print('associo documento SENZA riferimento a codice fiscale')
+        associafile_a_utente(singolodocumento,request,ut,azienda,descrizione,amministratore,listaok,listanotok,pertutti)
+
+  print('liste',listaok,listanotok)
   return (listaok,listanotok)
 
+#carica un singolofile - utilizzato prevalentemente nella pagina utente
 def save_and_load_file_single(listadocumenti,request,utente,azienda,descrizione,amministratore):
   listaok = list()
   listanotok = list()
@@ -174,13 +193,11 @@ def save_and_load_file_single(listadocumenti,request,utente,azienda,descrizione,
       listanotok.append(documento.documento)
   return (listaok,listanotok)
 
+#file_indice: contiene l'elenco dei nominativi da gestire.
 def save_and_load_file_indice(request,fileindice,documento):
   print('nome indice caricato',fileindice.name)
-
   file_memorizzato = upload_file_indice(request.FILES['indice'])
-
   fl_path = os.path.join(getConfig('DocPath'),getConfig('DocPathIndex'))
-  
   risultato = None
   with open(os.path.join(fl_path,file_memorizzato),'rb') as ind:
     risultato = ind.read()

+ 18 - 0
documento/migrations/0011_documento_pertutti.py

@@ -0,0 +1,18 @@
+# Generated by Django 5.1.2 on 2024-11-09 17:26
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('documento', '0010_documento_azienda'),
+    ]
+
+    operations = [
+        migrations.AddField(
+            model_name='documento',
+            name='pertutti',
+            field=models.BooleanField(default=False),
+        ),
+    ]

+ 17 - 0
documento/migrations/0012_remove_documento_pertutti.py

@@ -0,0 +1,17 @@
+# Generated by Django 5.1.2 on 2024-11-09 18:17
+
+from django.db import migrations
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('documento', '0011_documento_pertutti'),
+    ]
+
+    operations = [
+        migrations.RemoveField(
+            model_name='documento',
+            name='pertutti',
+        ),
+    ]

+ 10 - 5
documento/templates/documento.welcome.html

@@ -72,7 +72,7 @@
              <button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Close</button>
              <form name='ConfirmDeleteModal' method='POST'>
                {% csrf_token %}
-               <button type="submit" name="DeleteDocument" value='{{ documento.id }}' class="btn btn-primary"></button>
+               <button type="submit" name="DeleteDocument" value='{{ documento.id }}' class="btn btn-primary">Annulla</button>
              </form>
            </div>
          </div>
@@ -98,8 +98,14 @@
 	<div class='form-group form-inline'>
 	  <label for='indice'>Indice Utenti:&nbsp;</label>
           <input type='file' class="btn btn-primary" name='indice' id='indice' value='{{ uf.indice }}' accept='text/csv'>
+          <label for='allegati'>Allegati:</label>
           <input type='file' class="btn btn-primary" name='allegati' id='allegati' value='{{ uf.allegati }}' accept='application/pdf' multiple>
         </div>
+        <div><br></div>
+        <div class='form-check'>
+          <label for='pertutti' class='form-check-label'>Documento in comune</label>
+          <input type='checkbox' class="form-check-input" name='pertutti' id='pertutti'>
+        </div>
 	<div><br></div>
 	<div class='form-group form-inline'>
           <label for='descrizione'>Descrizione:&nbsp;</label>
@@ -122,8 +128,7 @@
              <form name='ConfirmDeleteModal' method='POST'>
                {% csrf_token %}
                <div class="modal-header">
-                <h5 class="modal-title" id="ConfirmDeleteLabel">Conferma Cancellazione</h5>
-                <button type="button" class="close" data-bs-dismiss="modal" aria-label="Close">
+                <h5 class="modal-title" id="ConfirmDeleteLabel">Conferma Cancellazione?</h5>
                   <span aria-hidden="true">&times;</span>
                 </button>
                </div>
@@ -135,8 +140,8 @@
                <label for='limite'>giorni.</label>
                </div>
                <div class="modal-footer">
-               <button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Close</button>
-               <button type="submit" name="DeleteOldDocuments" value='{{ documento.id }}' class="btn btn-primary">Elimina Vecchi Documenti</button>
+                 <button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Close</button>
+                 <button type="submit" name="DeleteOldDocuments" value='{{ documento.id }}' class="btn btn-primary">Elimina Vecchi Documenti</button>
 	       </div>
 	     </form>
            </div>

+ 5 - 2
documento/views.py

@@ -101,7 +101,10 @@ def welcome(request):
     filecaricati = AdminUpload(request.POST,request.FILES)
 
     if filecaricati.is_valid():
-
+      pertutti = filecaricati.cleaned_data.get('pertutti')
+      print('stato -pertutti-',pertutti," ",filecaricati.cleaned_data.get('pertutti'))
+      #pertutti: il documento viene messo a disposizione a tutti gli utenti, non rientra nel filtro x utente, ma solo nel filtro x azienda
+     
       print('record filecaricati validi')
       if 'indice' in filecaricati.cleaned_data and filecaricati.cleaned_data.get('indice'):
         fileindice = filecaricati.cleaned_data.get('indice')
@@ -114,7 +117,7 @@ def welcome(request):
         print(listadocumenti)
         print(type(azienda))
         print(azienda.id)
-        listaok,listanotok = save_and_load_file_multiple(listadocumenti,request,utenti,azienda,filecaricati.cleaned_data['descrizione'])
+        listaok,listanotok = save_and_load_file_multiple(listadocumenti,request,utenti,azienda,filecaricati.cleaned_data['descrizione'],admin.username,pertutti)
         data['listaok'] = listaok
         data['listanotok'] = listanotok