Browse Source

riattivato scarico multiplo dei documenti
modificata la funzione di compressione in modo che venga verifica
l'effettiva esistenza dei file.

mauro 1 month ago
parent
commit
3f09fbf5a0

+ 9 - 4
documento/managefile.py

@@ -409,9 +409,14 @@ def PrepareZipFile(listafile=[]):
     for lf in listafile:
       d = Documento.objects.get(pk=lf)
       file2zip = os.path.join(settings.BASE_DIR,getConfig('DocPath'),d.utente.azienda.partitaiva,d.utente.codicefiscale,d.storage)
-      zip.write(file2zip,arcname=d.documento)
-    print('path completa',file2zip)
-    print('file completo',os.path.join(zip_path,filename))
-  return (zip_path,filename)
+      print('path completa',file2zip)
+      print('file completo',os.path.join(zip_path,filename))
+
+      if os.path.exists(file2zip):
+        zip.write(file2zip,arcname=d.documento)
+      else:
+        print('il file non esiste:',file2zip)
+
+    return (zip_path,filename)
 
 

+ 2 - 2
documento/templates/documento.welcome.lista.html

@@ -1,5 +1,5 @@
   {% if ElencoDocumenti %}
-    <form name="ElencoDocumentiButton" id="ElencoDocumentiButton" method="POST">
+    <form name="formElencoDocumenti" id="formElencoDocumenti" method="POST">
     {% csrf_token %}
       <input type='submit' class="btn btn-primary" name='ScaricaSelezionati' value="Scarica Selezionati"/>
       <input type='submit' class="btn btn-primary" name="indietro" value="Indietro">
@@ -59,7 +59,7 @@
               {% endif %}</td>
             <td><button type='button' class='btn btn-primary btn-sm' data-bs-toggle='modal' data-bs-target='#ConfirmDeleteModal{{ documento.id }}' value='{{ documento.id }}'>Elimina</button></td>
             {% endif %}
-  	  <td><input class="form-check-input" type="checkbox" form="ElencoDocumenti" id="select-{{ documento.id }}" name="MultipleDocumentSelect" value='{{ documento.id }}'/></td>
+  	  <td><input class="form-check-input" type="checkbox" form="formElencoDocumenti" id="select-{{ documento.id }}" name="MultipleDocumentSelect" value='{{ documento.id }}'/></td>
 	  <td></td>
         </tr>
 

+ 29 - 41
documento/views.py

@@ -84,7 +84,6 @@ def welcome(request,utente=None):
 
   ElencoDocumenti = list()
 
-  '''
   if utente: #visualizza i documenti per l'utente
     ElencoDocumenti = Documento.objects.filter(utente=utente).order_by("utente__nome","documento") 
   elif sede:
@@ -100,12 +99,6 @@ def welcome(request,utente=None):
       for id in d:
         ElencoDocumenti.append(id)
 
-  elencodocumentilista = len(ElencoDocumenti)
-
-  # inizializzamo Paginator e il suo contatore
-  ElencoDocumentiPage = Paginator(ElencoDocumenti,50)
-  '''
-
   if 'posizione' in request.session:
     print('posizione presente in request.session')
     posizione = request.session['posizione']
@@ -142,25 +135,22 @@ def welcome(request,utente=None):
       return HttpResponseRedirect(reverse("azienda:welcome"))
 
     if 'ScaricaSelezionati' in request.POST:
-      print('Premuto tasto Scarica Selezionati')
-      print('request.POST',request.POST)
-
-      if 'MultipleDocumentSelect' in request.POST:
-        print(len(data['ElencoDocumenti']))
-        SelectResponse = formMultipleCheckBox(request.POST,lista=data['ElencoDocumenti'])
-        print("SelectResponse",SelectResponse)
-
-        if SelectResponse.is_valid():
-          select = SelectResponse.cleaned_data.get('MultipleDocumentSelect')
-          print('select',select,type(select))
-          (pathzipfile,filePreparato) = PrepareZipFile(select)
-          # scarica il file
-          response = None
-          with open(os.path.join(pathzipfile,filePreparato),'rb') as f:
-            response =  HttpResponse(f.read(),content_type='application/zip')
-            response['Content-Disposition'] = 'attachment; filename={}'.format(filePreparato)
-          os.unlink(os.path.join(pathzipfile,filePreparato))
-          return response
+      print('Premuto tasto Scarica Selezionati',request.POST)
+      print(ElencoDocumenti)
+      SelectResponse = formMultipleCheckBox(request.POST,lista=ElencoDocumenti)
+      print(SelectResponse)
+
+      if SelectResponse.is_valid():
+        select = SelectResponse.cleaned_data.get('MultipleDocumentSelect')
+        print('select',select,type(select))
+        (pathzipfile,filePreparato) = PrepareZipFile(select)
+        # scarica il file
+        response = None
+        with open(os.path.join(pathzipfile,filePreparato),'rb') as f:
+          response =  HttpResponse(f.read(),content_type='application/zip')
+          response['Content-Disposition'] = 'attachment; filename={}'.format(filePreparato)
+        os.unlink(os.path.join(pathzipfile,filePreparato))
+        return response
 
     if 'DeleteOldDocuments' in request.POST:
       print('Richiesta di eliminazione vecchi documenti')
@@ -621,23 +611,21 @@ def azienda(request,utente=None):
 
     if 'ScaricaSelezionati' in request.POST:
       print('Premuto tasto Scarica Selezionati,cazzo')
-      print('request.POST',request.POST)
+      print('xx request.POST',request.POST)
 
-      if 'MultipleDocumentSelect' in request.POST:
-        SelectResponse = formMultipleCheckBox(request.POST,lista=data['ElencoDocumenti'])
-        print("SelectResponse",SelectResponse)
+      SelectResponse = formMultipleCheckBox(request.POST,lista=data['ElencoDocumenti'])
         
-        if SelectResponse.is_valid():
-          select = SelectResponse.cleaned_data.get('MultipleDocumentSelect')
-          print('select',select,type(select))
-          (pathzipfile,filePreparato) = PrepareZipFile(select)
-          # scarica il file
-          response = None
-          with open(os.path.join(pathzipfile,filePreparato),'rb') as f:
-            response =  HttpResponse(f.read(),content_type='application/zip')
-            response['Content-Disposition'] = 'attachment; filename={}'.format(filePreparato)
-          os.unlink(os.path.join(pathzipfile,filePreparato))
-          return response
+      if SelectResponse.is_valid():
+        select = SelectResponse.cleaned_data.get('MultipleDocumentSelect')
+        print('select',select,type(select))
+        (pathzipfile,filePreparato) = PrepareZipFile(select)
+        # scarica il file
+        response = None
+        with open(os.path.join(pathzipfile,filePreparato),'rb') as f:
+          response =  HttpResponse(f.read(),content_type='application/zip')
+          response['Content-Disposition'] = 'attachment; filename={}'.format(filePreparato)
+        os.unlink(os.path.join(pathzipfile,filePreparato))
+        return response
 
     if 'DeleteOldDocuments' in request.POST:
       print('Richiesta di eliminazione vecchi documenti')

+ 13 - 0
utente/forms.py

@@ -111,6 +111,19 @@ class formUpdatePasswordLogin(forms.Form):
 
       raise forms.ValidationError("UUID non valido o scaduto")
 
+class formElementiDownload(forms.Form):
+  def __init__(self,*args,lista=[],**kwargs):
+    forms.Form.__init__(self,*args,**kwargs)
+    self.fields['MultipleDocumentSelect'] = forms.MultipleChoiceField(required=False,widget=forms.CheckboxSelectMultiple(),choices=self.c(lista))
+
+  def c(self,lista):
+    print(len(lista))
+    choices = list()
+    for u in lista:
+      choices.append((u.id,u.id),)
+    print('choices',len(choices))
+    return choices
+
 class formCancellaUtente(forms.Form):
   def __init__(self,*args,**kwargs):
     forms.Form.__init__(self,*args,**kwargs)

+ 2 - 2
utente/templates/utente.download.html

@@ -3,7 +3,7 @@
 {% block headersupplement %}
 <script language="JavaScript">
 function toggle(source) {
-  checkboxes = document.getElementsByName('select');
+  checkboxes = document.getElementsByName('MultipleDocumentSelect');
   for(var i=0, n=checkboxes.length;i<n;i++) {
     checkboxes[i].checked = source.checked;
   }
@@ -66,7 +66,7 @@ function toggle(source) {
             <td> <button type='button' class='btn btn-primary btn-block mb-2 active' onclick="window.open('{% url "documento:finalize" documento.id utente.id %}')">{{ documento.documento }}</button></td>
             <td> {{ documento.descrizione }} </td>
 	    <td> {{ documento.dataupload }} </td>
-	    <td><input class="form-check-input" type="checkbox" id="select-{{ documento.id}}" name="select" value='{{ documento.id }}'/></td>
+	    <td><input class="form-check-input" type="checkbox" id="select-{{ documento.id}}" name="MultipleDocumentSelect" value='{{ documento.id }}'/></td>
             </tr>
           {% endfor %}
         </tbody>

+ 31 - 9
utente/views.py

@@ -533,18 +533,40 @@ def download(request):
   data['listaAttivita'] = getLogxUtente(utente)
 
   if request.method == 'POST':
-    print('qualcosa è stato richiesto')
+    print('qualcosa è stato richiesto',request.POST)
+
     if 'indietro' in request.POST:
+      print('richiesto logout')
       return HttpResponseRedirect(reverse('login:start'))
 
-    pinmail = formPinMail(request.POST)
-    if pinmail.is_valid():
-      print('pinmail valid')
-      utente.pin = pinmail.cleaned_data['pin']
-      utente.mail = pinmail.cleaned_data['mail']
-      utente.save()
-      print('utente aggiornato',utente.id)
-      setLog(6,utente=utente)
+    if 'ScaricaSelezionati' in request.POST:
+      print('Premuto tasto Scarica Selezionati')
+      formelementidownload = formElementiDownload(request.POST,lista=data['documentiUtente'])
+      if formelementidownload.is_valid():
+        print('form valida')
+        select = formelementidownload.cleaned_data.get('MultipleDocumentSelect')
+        print('documenti da scaricare',len(select))
+        (pathzipfile,filePreparato) = PrepareZipFile(select)
+        # scarica il file
+        response = None
+        with open(os.path.join(pathzipfile,filePreparato),'rb') as f:
+          response =  HttpResponse(f.read(),content_type='application/zip')
+          response['Content-Disposition'] = 'attachment; filename={}'.format(filePreparato)
+        os.unlink(os.path.join(pathzipfile,filePreparato))
+        return response
+
+    if 'aggiorna' in request.POST:
+      print('Richiesto Aggiornamento mail ')
+
+      # salvataggio password e mail
+      pinmail = formPinMail(request.POST)
+      if pinmail.is_valid():
+        print('pinmail valid')
+        utente.pin = pinmail.cleaned_data['pin']
+        utente.mail = pinmail.cleaned_data['mail']
+        utente.save()
+        print('utente aggiornato',utente.id)
+        setLog(6,utente=utente)
 
   # verifica bonta' mail.
   regex = r'\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,7}\b'