Parcourir la source

Merge remote-tracking branch 'refs/remotes/origin/master'

mauro il y a 10 mois
Parent
commit
6beac000bd
3 fichiers modifiés avec 65 ajouts et 2 suppressions
  1. 10 0
      utente/forms.py
  2. 17 1
      utente/templates/utente.welcome.html
  3. 38 1
      utente/views.py

+ 10 - 0
utente/forms.py

@@ -113,3 +113,13 @@ 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):
+    forms.Form.__init__(self,*args,**kwargs)
+    self.fields['select'] = forms.MultipleChoiceField(required=False,widget=forms.CheckboxSelectMultiple(),choices=self.choices)
+  def c(self,lista):
+    for u in lista:
+      self.choices.append((u.id,u.id),)
+    print('choices',self.choices) 
+

+ 17 - 1
utente/templates/utente.welcome.html

@@ -1,11 +1,23 @@
 {% extends 'base.html' %}
 
+{% block headersupplement %}
+<script language="JavaScript">
+function toggle(source) {
+  checkboxes = document.getElementsByName('select');
+  for(var i=0, n=checkboxes.length;i<n;i++) {
+    checkboxes[i].checked = source.checked;
+  }
+}
+</script>
+{% endblock %}
+
 {% block body %}
   <form name="inputUtente" method="POST">
   <div class='form-control'>
     {% if admin.crea_utente %} 
       <input type='submit' class="btn btn-primary" name='scelta' value='Nuovo Dipendente'>
-      <button type='button' class="btn btn-primary" name='TastoCaricaIndici' data-bs-toggle='modal' data-bs-target='#CaricaIndiceModal'>Carica Lista Nuovi Dipendenti<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="ScaricaSelezionati">Scarica Selezionati</button>
     {% endif %}
     <input type='submit' class="btn btn-primary" name="indietro" value="Indietro">
   </div>
@@ -29,6 +41,7 @@
   	  <th scope='col'>Pin</th>
         {% endif %}
         <th scope='col'>Inserimento</th>
+	<th scope='col'><input class="form-check-input" type="checkbox" id="selectAll" name="selectAll" value='0' onClick="toggle(this);"/></th>
       </tr>
     </thead>
     <tbody>
@@ -49,6 +62,9 @@
             <td> {{ uu.pin }} </td>
           {% endif %}
           <td> {{ uu.inserimento|date:'d/m/Y' }} </td>
+	  <td>
+  	  <input class="form-check-input" type="checkbox" id="select-{{ uu.id}}" name="select" value='{{ uu.id }}'/>
+          </td>
 	</tr>
       {% endfor %} 
     </tbody>

+ 38 - 1
utente/views.py

@@ -15,6 +15,9 @@ from random import randint
 from config.views import *
 import re
 
+import csv
+from io import StringIO
+
 def welcome(request):
   if not 'AdminId' in request.session or 'UserId' in request.session:
     print("Non rilevo presensa UserId e AdminId in request.session")
@@ -54,6 +57,10 @@ def welcome(request):
   if request.method == 'POST':
     print('qualcuno ha premuto un tasto')
 
+    print("***********")
+    print(request.POST)
+    print("***********")
+
     if 'indietro' in request.POST:
       return HttpResponseRedirect(reverse("azienda:welcome"))
 
@@ -77,7 +84,35 @@ def welcome(request):
           save_and_load_file_indice(request,fileindiceottenuto,data['azienda'],data['sede'])
         else:
           print('request non valida')
-        
+      if 'select' in request.POST:
+        #validiamo i dati passati
+        SelectResponse = formMultipleCheckBox(request.POST)
+        SelectResponse.c(data['utenti'])
+        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"'
+          return response
+
+ 
   return render(request,'utente.welcome.html',data)
 
 def edit(request):
@@ -340,7 +375,9 @@ def updatePasswordFromLogin(request,uuid):
   print('uuid',uuid)
 
   if request.method == 'POST':
+    print("***********")
     print(request.POST)
+    print("***********")
     formupdatepasswordlogin = formUpdatePasswordLogin(request.POST)
     if formupdatepasswordlogin.is_valid():
       cfisc = formupdatepasswordlogin.cleaned_data.get('cfisc')