Просмотр исходного кода

inserita paginazione documenti

mauro 2 месяцев назад
Родитель
Сommit
4358d2f480
3 измененных файлов с 74 добавлено и 11 удалено
  1. 1 0
      documento/forms.py
  2. 9 3
      documento/templates/documento.welcome.lista.html
  3. 64 8
      documento/views.py

+ 1 - 0
documento/forms.py

@@ -48,3 +48,4 @@ class formMultipleCheckBox(forms.Form):
       choices.append((u.id,u.id),)
     print('choices',len(choices))
     return choices
+

+ 9 - 3
documento/templates/documento.welcome.lista.html

@@ -1,5 +1,5 @@
   {% if ElencoDocumenti %}
-    <form name="ElencoDocumenti" id="ElencoDocumenti" method="POST">
+    <form name="ElencoDocumentiButton" id="ElencoDocumentiButton" 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">
@@ -10,9 +10,11 @@
     <table class='table table-striped'>
       <thead class='thead-dark'>
       <tr>
-        <th scope='col'>Vedi</th>
 	<form name="order" method="POST">
 	{% csrf_token %}
+        <th><button name='backButtonTable' type="submit" class="btn btn-outline-primary btn-sm"> < </button>
+            <button name='backButtonTableFirst' type="submit" class="btn btn-outline-primary btn-sm"> << </button></th>
+        <th scope='col'>Vedi</th>
 	{% if not aziendaview %}
 	<th scope='col' style='white-space: nowrap; width: 1%;'>Dipendente&nbsp;
 		                                                <button name='uteDW' type="submit" class="btn btn-outline-primary btn-sm">&#x2193;</button>
@@ -27,18 +29,21 @@
 	<th scope='col' style='white-space: nowrap; width: 3%;'>Caricamento&nbsp;
 		                                                <button name='carDW' type="submit" class="btn btn-outline-primary btn-sm">&#x2193;</button>
 		                                                <button name="carUP" type="submit" class="btn btn-outline-primary btn-sm">&#x2191;</button></th>
-	</form>
         {% if 'DOCUMENTO.EDIT' in permesso %}
 	<th scope='col' style='white-space: nowrap; width:1%'>Pvt</th> 
         <th scope='col'>Elimina</th> 
         {% endif %}
 	<th scope='col'><input class="form-check-input" type="checkbox" id="selectAll" name="selectAll" value='0' onClick="toggle(this);"/></th>
+	<th><button name='forwButtonTable' type="submit" class ="btn btn-outline-primary btn-sm"> > </button>
+		<button name='forwButtonTableLast' type="submit" class="btn btn-outline-primary btn-sm"> >> </button></th>
+	</form>
       </tr>
       </thead>
       <tbody>
         {% for documento in ElencoDocumenti %}
         {% if 'DOCUMENTO' in permesso %}
         <tr>
+	  <td></td>
           <td> <button type='button' class='btn btn-primary btn-sm' onclick="window.open('{% url "documento:finalize" documento.id documento.utente.id %}')">Vedi</button></td>
 	  {% if not aziendaview %}
           <td>{{ documento.utente.nome }} </td>
@@ -55,6 +60,7 @@
             <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></td>
         </tr>
 
           <!-- Modal -->

+ 64 - 8
documento/views.py

@@ -5,6 +5,7 @@ from django.shortcuts import render
 from django.http import HttpResponse,HttpResponseRedirect,FileResponse
 from django.urls import reverse
 from django.conf import settings
+from django.core.paginator import Paginator
 
 from .models import *
 from .forms import *
@@ -19,12 +20,13 @@ from comunicazione.views import ServizioMail
 
 def welcome(request,utente=None):
   uu = utente
+  print('** ** **',uu,'** ** **')
+
   '''
   punto di ingresso.
-/  vengono mostrati tutti i documenti presenti
+  vengono mostrati tutti i documenti presenti
   '''
 
-  print('** ** **',uu,'** ** **')
 
   if not 'AdminId' in request.session or 'UserId' in request.session:
     print("Non rilevo presensa UserId e AdminId in request.session")
@@ -62,6 +64,7 @@ def welcome(request,utente=None):
   if 'UserId' in request.session:
     data['UserId'] = request.session['UserId']
 
+
   data['azienda'] = Azienda.objects.get(pk=data['AziendaId'])
   data['utenti'] = data['azienda'].utente_set.all()
 
@@ -81,6 +84,7 @@ 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:
@@ -96,6 +100,20 @@ 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']
+  else:
+    print('posizione non trovata in request session')
+    posizione = 0
+  print('posizione:',posizione)
+
   # lettura permessi - da rivedere!
   print('inizio sequenza permessi')
   ### permessi inizio ###
@@ -103,8 +121,6 @@ def welcome(request,utente=None):
   print('permesso generale:',data['permesso'])
   print("CAZZO CAZZO CAZZO")
 
-  #### il vecchio codice era qui
-
   if 'AziendaId' in data:
     print('livello azienda',getAZP(data['AziendaId'],admin)[0])
     for t in getAZP(data['AziendaId'],admin)[0]:
@@ -200,8 +216,33 @@ def welcome(request,utente=None):
       except Documento.DoesNotExist as dne:
         print('il documento non esiste')
 
+    '''
+    questa sezione viene utilizza da paginator per verificare quali tasti sono stati creati
+    '''
+
+    if 'backButtonTable' in request.POST:
+      print("Premuto backButtonTable",posizione)
+      posizione -=1
+
+    if 'backButtonTableFirst' in request.POST:
+      print("Premuto backButtonTableLast",posizione)
+      posizione = 1
+
+    if "forwButtonTable" in request.POST:
+      print("Premuto fastButtonTable",posizione)
+      posizione += 1
+
+    if "forwButtonTableLast" in request.POST:
+      print("Premuto fastButtonTable",posizione)
+      posizione = 999
+
+    '''
+    da qui invece inizia la sezione di caricamento file
+    '''
+
     if "CaricaDocumentoButton" in request.POST:
       print("Premuto CaricaDocumentoButton")
+
       filecaricati = AdminUpload(request.POST,request.FILES)
       if filecaricati.is_valid():
         pertutti = filecaricati.cleaned_data.get('pertutti')
@@ -316,7 +357,7 @@ def welcome(request,utente=None):
     tmp = ElencoDocumenti     
     
   print('ElencoDocumenti/tmp',len(ElencoDocumenti),len(tmp))
-    
+ 
   ### sequenza di ordinamento ####
   print('Sequenza di ordinamento - lettura tasti ')
   print(request.POST)
@@ -364,9 +405,15 @@ def welcome(request,utente=None):
   if 'docOrder' in request.session and 'docUP' in request.session.get('docOrder'):
     res = sorted(tmp, key = lambda x: x.documento,reverse=True)
   if 'docOrder' in request.session and 'seDW' in request.session.get('docOrder'):
-    res = sorted(tmp, key = lambda x: x.utente.sede.nome ,reverse=False)
+    try:
+      res = sorted(tmp, key = lambda x: x.utente.sede.nome ,reverse=False)
+    except AttributeError as ae:
+      print('AttributeError',ae)
   if 'docOrder' in request.session and 'seUP' in request.session.get('docOrder'):
-    res = sorted(tmp, key = lambda x: x.utente.sede.nome,reverse=True)
+    try:
+      res = sorted(tmp, key = lambda x: x.utente.sede.nome,reverse=True)
+    except AttributeError as ae:
+      print('AttributeError',ae)
   if 'docOrder' in request.session and 'carDW' in request.session.get('docOrder'):
     res = sorted(tmp, key = lambda x: x.dataupload ,reverse=False)
   if 'docOrder' in request.session and 'carUP' in request.session.get('docOrder'):
@@ -376,8 +423,17 @@ def welcome(request,utente=None):
     data['ElencoDocumenti'] = tmp     
   else:
     data['ElencoDocumenti'] = res 
+
   data['ElencoDocumentiDisponibili'] = len(data['ElencoDocumenti'])
-  print("Numero documenti associati",len(ElencoDocumenti),len(data['ElencoDocumenti']))
+
+  tmpPaginator = Paginator(data['ElencoDocumenti'],50)
+
+  if posizione < 1: posizione = 1
+  if posizione > tmpPaginator.num_pages: posizione = tmpPaginator.num_pages
+  print('posizione in paginator:',posizione)
+
+  data['ElencoDocumenti']= tmpPaginator.page(posizione)
+  request.session['posizione'] = posizione
 
   return render(request,'documento.welcome.html',data)