Ver Fonte

1: risolto un errore nella gestione utenti: riportava un errore
selezionando piu' utenti. L'errore era relativo al fatto che la view
faceva riferimento una funzione di form presente in documenti e non
quella presente nella form locale. (credo)

2: modificate descrizioni, in quando il tasto di scaricamento non fa
riferimento ai documenti ma al csv con i pin.

3: modificato template documenti: spostata colonna di selezione da
sinistra a destra.

mauro há 4 meses atrás
pai
commit
5b1de518d5

BIN
db/db.sqlite3


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

@@ -10,7 +10,6 @@
     <table class='table table-striped'>
       <thead class='thead-dark'>
       <tr>
-	<th scope='col'><input class="form-check-input" type="checkbox" id="selectAll" name="selectAll" value='0' onClick="toggle(this);"/></th>
         <th scope='col'>Vedi</th>
 	<form name="order" method="POST">
 	{% csrf_token %}
@@ -33,15 +32,14 @@
         {% if 'DOCUMENTO.EDIT' in permesso %}
         <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>
       </tr>
       </thead>
       <tbody>
         {% for documento in ElencoDocumenti %}
         {% if 'DOCUMENTO' in permesso %}
         <tr>
-  	  <td><input class="form-check-input" type="checkbox" form="ElencoDocumenti" id="select-{{ documento.id }}" name="MultipleDocumentSelect" value='{{ documento.id }}'/></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>
+          <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>
           <td>{{ documento.utente.sede.nome }}</td>
@@ -51,6 +49,7 @@
             {% if 'DOCUMENTO.EDIT' in permesso %}
             <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>
         </tr>
           <!-- Modal -->
           <div class="modal fade" id="ConfirmDeleteModal{{ documento.id }}" tabindex="-1" role="dialog" aria-labelledby="ConfirmDeleteLabel{{ document.id }}" aria-hidden="true">

+ 9 - 6
utente/forms.py

@@ -116,13 +116,16 @@ class formIndiceUpload(forms.Form):
     forms.Form.__init__(self,*args,**kwargs)
     self.fields['indice'] = forms.FileField(required=True,initial='')
 
-class formMultipleCheckBox(forms.Form):
-  choices = [(0,0),]
-  def __init__(self,*args,**kwargs):
+class formMultipleCheckBoxCSVDOC(forms.Form):
+  def __init__(self,*args,lista=[],**kwargs):
     forms.Form.__init__(self,*args,**kwargs)
-    self.fields['select'] = forms.MultipleChoiceField(required=False,widget=forms.CheckboxSelectMultiple(),choices=self.choices)
+    self.fields['MultipleCSVSelect'] = forms.MultipleChoiceField(required=False,widget=forms.CheckboxSelectMultiple(),choices=self.c(lista))
+
   def c(self,lista):
+    print(len(lista))
+    choices = list()
     for u in lista:
-      self.choices.append((u.id,u.id),)
-    print('choices',self.choices) 
+      choices.append((u.id,u.id),)
+    print('choices',len(choices))
+    return choices
 

+ 8 - 9
utente/templates/utente.welcome.html

@@ -2,8 +2,8 @@
 
 {% block headersupplement %}
 <script language="JavaScript">
-function toggle(source) {
-  checkboxes = document.getElementsByName('select');
+function toggleCSV(source) {
+  checkboxes = document.getElementsByName('MultipleCSVSelect');
   for(var i=0, n=checkboxes.length;i<n;i++) {
     checkboxes[i].checked = source.checked;
   }
@@ -12,13 +12,14 @@ function toggle(source) {
 {% endblock %}
 
 {% block body %}
-  <form name="inputDocumenti" method="POST">
+  <form name="inputUtenti" method="POST">
   {% csrf_token %}
   <div class='form-control'>
     {% if "UTENTE.CREA" in permesso %}
     <button type='submit' class="btn btn-primary" name='scelta' value='Nuovo Dipendente'>Nuovo Dipendente</button>
       <button type='button' class="btn btn-primary" name='TastoCaricaIndici' data-bs-toggle='modal' data-bs-target='#CaricaIndiceModal'>Carica Lista Nuovi Dipendenti</button>
-      <button type='submit' class="btn btn-primary" name='ScaricaSelezionati' value="Scarica Selezionati"/>Scarica Selezionati</button>
+      <button type='submit' class="btn btn-primary" name='ScaricaCSVSelezionati' value="Scarica CSV Selezionati"/>Scarica CSV Selezionati</button>
+
     {% endif %}
     <button type='submit' class="btn btn-primary" name="indietro" value="Indietro">Indietro</button>
   </div>
@@ -48,9 +49,7 @@ function toggle(source) {
   	  <th scope='col'>Pin</th>
         {% endif %}
         <th scope='col'>Inserimento</th>
-        {% if "DOCUMENTO" in permesso %}
-	  <th scope='col'><input class="form-check-input" type="checkbox" id="selectAll" name="selectAll" value='0' onClick="toggle(this);"/></th>
-        {% endif %}
+        <th scope='col'><input class="form-check-input" type="checkbox" id="selectCSVAll" name="selectCSVAll" value='0' onClick="toggleCSV(this);"/></th>
       </tr>
     </thead>
     <tbody>
@@ -74,8 +73,8 @@ function toggle(source) {
           <td> {{ uu.inserimento|date:'d/m/Y' }} </td>
           {% if "DOCUMENTO" in permesso %}
 	    <td>
-  	      <input class="form-check-input" type="checkbox" id="select-{{ uu.id}}" name="select" value='{{ uu.id }}'/>
-            </td>
+  	      <input class="form-check-input" type="checkbox" id="MultipleCSVSelect-{{ uu.id }}" name="MultipleCSVSelect" value='{{ uu.id }}'>
+	    </td>
           {% endif %}
 	</tr>
       {% endfor %} 

+ 34 - 23
utente/views.py

@@ -130,35 +130,46 @@ def welcome(request):
           data['listaok'] = listaok
           data['listanotok'] = listanotok
           data['count'] = count
-
         else:
           print('request non valida')
-      if 'select' in request.POST:
+
+      if 'MultipleCSVSelect' in request.POST:
         #validiamo i dati passati
-        SelectResponse = formMultipleCheckBox(request.POST)
-        SelectResponse.c(data['utenti'])
+        SelectResponse = formMultipleCheckBoxCSVDOC(request.POST,lista=data['utenti'])
+        poppo = dir(SelectResponse)
+
         print("SelectResponse",SelectResponse)
 
         if SelectResponse.is_valid():
-          select = SelectResponse.cleaned_data.get('select')
-          print('select',select,type(select))
-
-          tmplist = list()
-          tmplist.append(["Codice Fiscale","Nome","Pin"])
-          for i in select:
-            print("utente",i)
-            if i == '0': continue
-            u = Utente.objects.get(pk=int(i))
-            tmplist.append([u.codicefiscale,u.nome,u.pin])
-            print("lunghezza tmplist",len(tmplist))
-
-          f = StringIO()
-          csv.writer(f).writerows(tmplist)
-          print(f.getvalue())
-
-          # scarica il file
-          response =  FileResponse(f.getvalue(),content_type='application/csv',as_attachment=False)
-          response['Content-Disposition'] = 'attachment; filename="lista_dipendenti.csv"'
+          selectCSV = SelectResponse.cleaned_data.get('MultipleCSVSelect')
+          selectDOC = SelectResponse.cleaned_data.get('MultipleDOCSelect')
+
+          selectCSVType=type(selectCSV)
+          selectDOCType=type(selectDOC)
+
+          print('select CSV',selectCSV,selectCSVType)
+          print('select DOC',selectCSV,selectDOCType)
+
+          response = None
+
+          if selectCSV: # la lista selectCSV è valida e contiene l'elenco degli utenti.
+            tmplist = list()
+            tmplist.append(["Codice Fiscale","Nome","Pin"])
+            for i in selectCSV:
+              print("utente",i)
+              if i == '0': continue
+              u = Utente.objects.get(pk=int(i))
+              tmplist.append([u.codicefiscale,u.nome,u.pin])
+              print("lunghezza tmplist",len(tmplist))
+
+            f = StringIO()
+            csv.writer(f,delimiter=';').writerows(tmplist)
+            print(f.getvalue())
+
+            # scarica il file
+            response =  FileResponse(f.getvalue(),content_type='application/csv',as_attachment=False)
+            response['Content-Disposition'] = 'attachment; filename="lista_dipendenti.csv"'
+
           return response