Переглянути джерело

gestione utenti, inserito modulo di inserimento lista dipendenti, in utenti
piccole modifiche di visualizzazione

Mauro 11 місяців тому
батько
коміт
0e37f90e03

+ 24 - 29
documento/managefile.py

@@ -236,41 +236,36 @@ def save_and_load_file_indice(request,fileindice,azienda=None,sede=None):
             9: 12.07.2024;
           '''
 
-          if len(sr) > 1: # la lunghezza del record segnala qualcosa
+          if len(sr) >= 1: # la lunghezza del record segnala qualcosa
+            print('lunghezza ok',sr[0])
             utente = None
+
+            sr = sr[0].split(',')
+ 
+            print('codice fiscale',sr[0].strip().upper())
             try:
-              utente = Utente.objects.get(codicefiscale=sr[2].split(' - ')[1].strip().upper())
+              utente = Utente.objects.get(codicefiscale=sr[1].strip().upper())
             except Utente.DoesNotExist as dne:
               print('Utente non trovato')
               utente = Utente()
               if azienda: utente.azienda = azienda
               if sede: utente.sede = sede
-              utente.nome = sr[2].capitalize()
-              try:
-                data_convertita =  datetime.datetime.strptime(sr[8], "%d.%m.%Y")
-                print('data convertita',data_convertita)
-                utente.datanascita = data_convertita
-              except ValueError as ve:
-                print(ve)
-              utente.codicefiscale = sr[2].split(' - ')[1].strip().upper()
+
+              utente.nome = sr[0].capitalize()
+              utente.codicefiscale=sr[1].upper()
+
+              for fmt in ('%d/%m/%y','%d/%m/%Y','%d-%m-%y','%d-%m-%Y'):
+                try:
+                  data_convertita =  datetime.datetime.strptime(sr[2],fmt)
+                  print('data convertita',data_convertita)
+                  utente.datanascita = data_convertita
+                except ValueError as ve:
+                  print('errore con la data di nascita',ve)
+
+              utente.luogonascita = sr[3].capitalize()
+              utente.mail = sr[4].lower()
+
+              utente.inserimento = datetime.datetime.today().strftime("%Y-%m-%d")
+
               utente.pin = str(randint(100000,999999))
               utente.save()
-
-'''
-    # caricamento documenti
-    if filecaricati.cleaned_data.get('allegati'):
-      print('presenti documenti da allegare')
-      listadocumenti = filecaricati.cleaned_data['allegati']
-      print(listadocumenti)
-
-      utenti = Utenti.objects.all()
-      for singolodocumento in listadocumenti:
-        print('singolodocumento',singolodocumento)
-        for utente in utenti:
-          if utente.codicefiscale.strip() in singolodocumento.name:
-            print('match utente-documento')
-            risultato = upload_file(singolodocumento,utente)
-            # risultato: nome del file memorizzato (nome interno)
-            # singolodocumento.name = nome del file originale
-
-'''

BIN
static/upload/12345678901/MRCMRA66E16Z133L/1736152663.6379857.saved


+ 5 - 0
utente/forms.py

@@ -108,3 +108,8 @@ class formCancellaUtente(forms.Form):
     forms.Form.__init__(self,*args,**kwargs)
     self.fields['ConfermaCancellazioneUtente'] = forms.BooleanField(required=False,initial=False)
 
+class formIndiceUpload(forms.Form):
+  def __init__(self,*args,**kwargs):
+    forms.Form.__init__(self,*args,**kwargs)
+    self.fields['indice'] = forms.FileField(required=True,initial='')
+

+ 49 - 6
utente/templates/utente.welcome.html

@@ -3,14 +3,15 @@
 {% block body %}
   <form name="inputUtente" method="POST">
   <div class='form-control'>
-    {% if admin.edit_utente %}
-      <input type='submit' class="btn btn-primary" name='scelta' value='Nuovo Dipendente' {% if admin.crea_utente %} disable {% endif %}>
-    {% endif %}
-    {% if admin.edit_documento %}
-      <input type='submit' class="btn btn-primary" name='CaricamentiMultipli' value='Caricamenti Multipli' {% if admin.crea_documento %} disable {% endif %}>
+    {% 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>
     {% endif %}
     <input type='submit' class="btn btn-primary" name="indietro" value="Indietro">
   </div>
+  <div class='form-control'>
+    Numero di dipendenti selezionati {{ numeroRecordAttuali }} su un totale di {{ numeroRecordAzienda }}.
+  </div>
 
   {% csrf_token %}
   <table class='table table-striped table-hover'>
@@ -35,7 +36,7 @@
       {% for uu in utenti %}
         <tr>
           {% if admin.edit_utente %}
-            <td> <button type='submit' class='btn btn-primary btn-block btn-lg mb-2 active' name='scelta' value='{{ uu.id }}' {% if admin.crea_utente %}disable{% endif %}>Edit</button></td>
+            <td> <button type='submit' class='btn btn-primary btn-block btn-lg mb-2 active' name='scelta' value='{{ uu.id }}' {% if not admin.crea_utente %}disable{% endif %}>Edit</button></td>
           {% endif %}
           <td> {{ uu.nome }} </td>
 	  <td> {{ uu.codicefiscale }} </td>
@@ -54,6 +55,48 @@
   </table>
   </form>
 
+  {% if admin.crea_utente %}
+  <!-- Modal -->
+  <div class="modal fade" id="CaricaIndiceModal" tabindex="-1" role="dialog" aria-labelledby="CaricaIndiceLabel" aria-hidden="true">
+    <div class="modal-dialog" role="document">
+      <div class="modal-content">
+             <form name='formCaricaIndice' method='POST' enctype='multipart/form-data'>
+               {% csrf_token %}
+               <div class="modal-header">
+                <h5 class="modal-title" id="CaricaIndiceLabel">Carica Elenco Dipendenti</h5>
+                  <span aria-hidden="true">&times;</span>
+                </button>
+               </div>
+               <div class="modal-body">
+                 Caricamento Lista Dipendenti<br>
+                 Formato File CSV - obbligatorio <br>
+                 Separatore: ',' - prima riga: "Nome colonna".</br>
+                 <table class='table table-striped table-hover'>
+                   <tbody>
+                     <tr>
+                       <td>Nome Cognome</td>
+                       <td>Codice Fiscale</td>
+                       <td>Data di Nascita</td>
+                       <td>Luogo di Nascita</td>
+                       <td/email</td>
+                     </tr>
+                   </tbody>
+                 </table><br>
+                 <label for='indice'>Elenco Dipendenti:&nbsp;</label>
+                 <input type='file' name='indice' id='indice' value='' accept='text/csv'>
+               </div>
+               <div class="modal-footer">
+                 <button type="submit" name="CaricaIndice" value='Carica Lista' class="btn btn-primary">Carica Lista Dipendenti</button>
+                 <button type="button" class="btn btn-primary" data-bs-dismiss="modal">Annulla</button>
+               </div>
+             </form>
+           </div>
+         </div>
+       </div>
+     </div>
+     <!-- end modal -->
+   {% endif %}
+
 {% endblock %}
 
 {% block bodybottom %}

+ 20 - 20
utente/views.py

@@ -30,6 +30,7 @@ def welcome(request):
     data['AziendaId'] = request.session['AziendaId']
     data['azienda'] = Azienda.objects.get(pk=data['AziendaId'])
     data['utenti'] = data['azienda'].utente_set.all().order_by('nome')
+    data['numeroRecordAzienda'] = len(data['utenti'])
 
   if 'AdminId' in request.session:
     data['AdminId'] = request.session['AdminId']
@@ -42,15 +43,16 @@ def welcome(request):
     data['SedeId'] = request.session['SedeId']
     data['sede'] = Sede.objects.get(pk=request.session['SedeId'])
     data['utenti'] = data['sede'].utente_set.all().order_by('nome')
+  else:
+    data['sede'] = None
 
   if 'UserId' in request.session:
     data['UserId'] = request.session['UserId']
 
+  data['numeroRecordAttuali'] = len(data['utenti'])
+
   if request.method == 'POST':
     print('qualcuno ha premuto un tasto')
-    if "CaricamentiMultipli" in request.POST:
-      print("Richiesto Caricamento Documenti")
-      return HttpResponseRedirect(reverse("documento:welcome"))
 
     if 'indietro' in request.POST:
       return HttpResponseRedirect(reverse("azienda:welcome"))
@@ -61,23 +63,21 @@ def welcome(request):
         request.session['UserEditId'] = scelta
         print('scelta effettuata',scelta)
         return HttpResponseRedirect(reverse("utente:edit"))
-
-    filecaricati = AdminUpload(request.POST,request.FILES)
-
-    if filecaricati.is_valid():
-      print('record filecaricati validi')
-      if filecaricati.cleaned_data.get('indice'):
-        print('presente file indice')
-        fileindice = filecaricati.cleaned_data.get('indice')
-        print(fileindice)
-        save_and_load_file_indice(fileindice,request,data['AziendaId'])
-      if filecaricati.cleaned_data.get('allegati'):
-        print('presenti documenti da allegare')
-        listadocumenti = filecaricati.cleaned_data['allegati']
-        print(listadocumenti)
-        listaok,listanotok = save_and_load_file_multiple(listadocumenti,request,data['utenti'],data['AziendaId'],data['SedeId'],filecaricati.cleaned_data['descrizione'],data['admin'])
-        data['listaok'] = listaok
-        data['listanotok'] = listanotok
+   
+    if data['admin'].crea_utente:
+      if 'CaricaIndice' in request.POST:
+        print('request',request.POST)
+        print('files',request.FILES)
+        fileindicecaricato = formIndiceUpload(request.POST,request.FILES)
+        print(fileindicecaricato)
+        if fileindicecaricato.is_valid():
+          print('record filecaricati validi')
+          print('presente file indice')
+          fileindiceottenuto = fileindicecaricato.cleaned_data.get('indice')
+          save_and_load_file_indice(request,fileindiceottenuto,data['azienda'],data['sede'])
+        else:
+          print('request non valida')
+        
   return render(request,'utente.welcome.html',data)
 
 def edit(request):