소스 검색

carico in produzione le modifiche alla sicurezza

Mauro 9 달 전
부모
커밋
f267518510
34개의 변경된 파일466개의 추가작업 그리고 238개의 파일을 삭제
  1. 1 1
      amministratore/forms.py
  2. BIN
      azienda/__pycache__/__init__.cpython-311.pyc
  3. BIN
      azienda/__pycache__/admin.cpython-311.pyc
  4. BIN
      azienda/__pycache__/apps.cpython-311.pyc
  5. BIN
      azienda/__pycache__/forms.cpython-311.pyc
  6. BIN
      azienda/__pycache__/models.cpython-311.pyc
  7. BIN
      azienda/__pycache__/urls.cpython-311.pyc
  8. BIN
      azienda/__pycache__/views.cpython-311.pyc
  9. 24 3
      azienda/forms.py
  10. BIN
      azienda/migrations/__pycache__/0001_initial.cpython-311.pyc
  11. BIN
      azienda/migrations/__pycache__/0002_rename_a_assegnazione_azienda.cpython-311.pyc
  12. BIN
      azienda/migrations/__pycache__/0003_azienda_azienda_azi_partita_d03251_idx.cpython-311.pyc
  13. BIN
      azienda/migrations/__pycache__/0004_azienda_comm.cpython-311.pyc
  14. BIN
      azienda/migrations/__pycache__/0005_sede.cpython-311.pyc
  15. BIN
      azienda/migrations/__pycache__/0006_assegnazionesede.cpython-311.pyc
  16. BIN
      azienda/migrations/__pycache__/0007_remove_assegnazione_user_and_more.cpython-311.pyc
  17. BIN
      azienda/migrations/__pycache__/0008_rename_assegnazione_assegnazioneazienda.cpython-311.pyc
  18. BIN
      azienda/migrations/__pycache__/0009_alter_assegnazioneazienda_amministratore_and_more.cpython-311.pyc
  19. BIN
      azienda/migrations/__pycache__/0010_rename_nota_sede_info.cpython-311.pyc
  20. BIN
      azienda/migrations/__pycache__/0011_assegnazionesede_azienda.cpython-311.pyc
  21. BIN
      azienda/migrations/__pycache__/0012_azienda_cambiopassword_sede_cambiopassword.cpython-311.pyc
  22. BIN
      azienda/migrations/__pycache__/0013_azienda_forzanuovapassword_sede_forzanuovapassword.cpython-311.pyc
  23. BIN
      azienda/migrations/__pycache__/0014_azienda_otppassword_sede_otppassword.cpython-311.pyc
  24. BIN
      azienda/migrations/__pycache__/0015_sede_identificativo.cpython-311.pyc
  25. BIN
      azienda/migrations/__pycache__/0016_alter_sede_identificativo.cpython-311.pyc
  26. BIN
      azienda/migrations/__pycache__/0017_assegnazioneazienda_crea_azienda_and_more.cpython-311.pyc
  27. BIN
      azienda/migrations/__pycache__/__init__.cpython-311.pyc
  28. 29 10
      azienda/templates/azienda.editAzienda.html
  29. 26 9
      azienda/templates/azienda.editSede.html
  30. 4 0
      azienda/templates/azienda.welcome.html
  31. 245 167
      azienda/views.py
  32. 19 6
      documento/views.py
  33. 107 37
      sicurezza/views.py
  34. 11 5
      utente/templates/utente.welcome.html

+ 1 - 1
amministratore/forms.py

@@ -69,7 +69,7 @@ class FormSedeMancante(forms.Form):
   choices = []
   def __init__(self,*args,lista=[],**kwargs):
     forms.Form.__init__(self,*args,**kwargs)
-    self.fields['ListaSedeMancanteSelect'] = forms.MultipleChoiceField(required=True,widget=forms.CheckboxSelectMultiple(),choices=self.c(lista))
+    self.fields['ListaSedeMancanteSelect'] = forms.ChoiceField(required=True,choices=self.c(lista))
 
   def c(self,lista):
     for u in lista:

BIN
azienda/__pycache__/__init__.cpython-311.pyc


BIN
azienda/__pycache__/admin.cpython-311.pyc


BIN
azienda/__pycache__/apps.cpython-311.pyc


BIN
azienda/__pycache__/forms.cpython-311.pyc


BIN
azienda/__pycache__/models.cpython-311.pyc


BIN
azienda/__pycache__/urls.cpython-311.pyc


BIN
azienda/__pycache__/views.cpython-311.pyc


+ 24 - 3
azienda/forms.py

@@ -11,6 +11,18 @@ class formAzienda(forms.Form):
     self.fields['otppassword'] = forms.BooleanField(required=False)
     self.fields['cancellaazienda'] = forms.BooleanField(required=False)
 
+class formAziendaPermessi(forms.Form):
+  choices = []
+  def __init__(self,*args,amministratori=[],**kwargs):
+    forms.Form.__init__(self,*args,**kwargs)
+    self.fields['ListaAmministratoriPermessi'] = forms.MultipleChoiceField(required=True,choices=self.c(amministratori))
+  def c(self,lista):
+    for u in lista:
+      self.choices.append((u.id,u.id),)	
+    print('choices lunghezza',len(self.choices))
+    print(self.choices)
+    return self.choices
+
 class formSede(forms.Form):
   def __init__(self,*args,**kwargs):
     forms.Form.__init__(self,*args,**kwargs)
@@ -22,11 +34,20 @@ class formSede(forms.Form):
     self.fields['otppassword'] = forms.BooleanField(required=False)
     self.fields['identificativo'] = forms.CharField(required=False)
 
+class formSedePermessi(forms.Form):
+  choices = []
+  def __init__(self,*args,amministratori=[],**kwargs):
+    forms.Form.__init__(self,*args,**kwargs)
+    self.fields['ListaAmministratoriPermessi'] = forms.MultipleChoiceField(required=True,choices=self.c(amministratori))
+  def c(self,lista):
+    for u in lista:
+      self.choices.append((u.id,u.id),)	
+    print('choices lunghezza',len(self.choices))
+    print(self.choices)
+    return self.choices
+
 class formPinMail(forms.Form):
   def __init__(self,*args,**kwargs):
     forms.Form.__init__(self,*args,**kwargs)
     self.fields['mail'] = forms.CharField(required=False)
     self.fields['pin'] = forms.CharField(required=True)
-
-
-

BIN
azienda/migrations/__pycache__/0001_initial.cpython-311.pyc


BIN
azienda/migrations/__pycache__/0002_rename_a_assegnazione_azienda.cpython-311.pyc


BIN
azienda/migrations/__pycache__/0003_azienda_azienda_azi_partita_d03251_idx.cpython-311.pyc


BIN
azienda/migrations/__pycache__/0004_azienda_comm.cpython-311.pyc


BIN
azienda/migrations/__pycache__/0005_sede.cpython-311.pyc


BIN
azienda/migrations/__pycache__/0006_assegnazionesede.cpython-311.pyc


BIN
azienda/migrations/__pycache__/0007_remove_assegnazione_user_and_more.cpython-311.pyc


BIN
azienda/migrations/__pycache__/0008_rename_assegnazione_assegnazioneazienda.cpython-311.pyc


BIN
azienda/migrations/__pycache__/0009_alter_assegnazioneazienda_amministratore_and_more.cpython-311.pyc


BIN
azienda/migrations/__pycache__/0010_rename_nota_sede_info.cpython-311.pyc


BIN
azienda/migrations/__pycache__/0011_assegnazionesede_azienda.cpython-311.pyc


BIN
azienda/migrations/__pycache__/0012_azienda_cambiopassword_sede_cambiopassword.cpython-311.pyc


BIN
azienda/migrations/__pycache__/0013_azienda_forzanuovapassword_sede_forzanuovapassword.cpython-311.pyc


BIN
azienda/migrations/__pycache__/0014_azienda_otppassword_sede_otppassword.cpython-311.pyc


BIN
azienda/migrations/__pycache__/0015_sede_identificativo.cpython-311.pyc


BIN
azienda/migrations/__pycache__/0016_alter_sede_identificativo.cpython-311.pyc


BIN
azienda/migrations/__pycache__/0017_assegnazioneazienda_crea_azienda_and_more.cpython-311.pyc


BIN
azienda/migrations/__pycache__/__init__.cpython-311.pyc


+ 29 - 10
azienda/templates/azienda.editAzienda.html

@@ -87,7 +87,7 @@
       </li>
 
       <!-- cancellazione azienda -->
-      <li class="list-group-item">
+     <li class="list-group-item">
         <div class="form-check">
           <input class="form-check-input" type="checkbox" value="{{ aziendaForm.cancellaazienda.value }}" id="cancellaazienda" name="cancellaazienda" {% if admin.sola_lettura %} disabled {% endif %}>
           <label class="form-check-label" for="cancellaazienda">Cancella Azienda! Operazione NON revocabile e NON Recuperabile!</label>
@@ -98,8 +98,8 @@
     </div>
     <br>
     <div class="btn-group">
-      <input type='submit' class="btn btn-primary" value='Aggiorna' {% if admin.sola_lettura %} disabled {% endif %}>
-      <input type='submit' class="btn btn-primary" name="indietro" value="Indietro">
+      <button type='submit' class="btn btn-primary" name= 'AggiornaAziendaButton' value='AggiornaAzienda' {% if admin.sola_lettura %} disabled {% endif %}>Aggiorna/Salva</button>
+      <button type='submit' class="btn btn-primary" name="indietro">Indietro/Chiudi</button>
     </div>
   </form>
 
@@ -118,6 +118,7 @@
           <tr>
 	    <th scope='col'>Login</th>
             <th scope='col'>Nome</th>
+            <th scope='col'>Permesso</th>
             <th scope='col'>E</th>
             <th scope='col'>D</th>
           </tr>
@@ -125,8 +126,9 @@
           <tbody>
             {% for a in listaAmministratore %}
               <tr>
-	        <td> {{ a.login }}</td>
-                <td> {{ a.nome }} </td>
+	        <td> {{ a.amministratore.login }} </td>
+                <td> {{ a.amministratore.nome }} </td>
+                <td> {{ a.permesso.nome }} </td>
                 <td></td>
                 <td><button type='submit' class='btn btn-primary' data-bs-toggle='modal' data-bs-target='#ConfirmDeleteModal{{ a.id }}' value='{{ a.id }}'>D</button></td>
               </tr>
@@ -136,19 +138,16 @@
               <div class="modal-content">
                 <div class="modal-header">
                   <h5 class="modal-title" id="ConfirmDeleteLabel">Conferma Cancellazione Diritti</h5>
-                  <button type="button" class="close" data-bs-dismiss="modal" aria-label="Chiudi">
-                   <span aria-hidden="true">&times;</span>
-                  </button>
                 </div>
                 <div class="modal-body">
-                  La conferma di cancellazione rimuove immediatamente tutti i diritti associati alla
+                  La conferma rimuove immediatamente tutti i diritti associati alla
                   societa' {{ a.nome }} e alle sue sedi.
                   Confermi la cancellazione dei diritti di accesso di {{ a.nome }}?<br>
                 </div>
                 <div class="modal-footer">
                   <form name='ConfirmDeleteModal' method='POST'>
                     {% csrf_token %}
-                    <button type="submit" name="DeletePermesso" value='{{ a.id }}' class="btn btn-primary">Cancella Permessi</button>
+                    <button type="submit" name="CancellaAziendaPermessiButton"value='{{ a.id }}' class="btn btn-primary">Cancella Permessi</button>
                     <button type="button" class="btn btn-primary" data-bs-dismiss="modal">Chiudi/Annulla</button>
                   </form>
                 </div>
@@ -158,6 +157,26 @@
           <!-- end modal -->
 
             {% endfor %}
+              <tr>
+                <form name='formAmministratoreDaAggiungere' method='POST'>
+                {% csrf_token %}
+                <td>
+                  <select class="form-select"
+                  name="ListaAmministratoriPermessi"
+                  id="ListaAmministratoriPermessi"
+                  >
+                    <option value="">-- Scegli tra gli amministratori disponibili --</option>
+                    {% for lp in listaAmministratoreDaAggiungere  %}
+                      <option value="{{ lp.id }}">{{ lp.nome }}</option>
+                    {% endfor %}
+                  </select>
+                </td>
+                <td>
+                  <button type='submit' class='btn btn-primary' name='PermessoDaAggiungereButton'>Aggiungi</button>
+                </td>
+                </form>
+              </tr> 
+
           </tbody>
         </table>
       </li>

+ 26 - 9
azienda/templates/azienda.editSede.html

@@ -80,10 +80,9 @@
     <br>
 
     <div class="btn-group">
-      <input type='submit' class="btn btn-primary" value='Aggiorna' {% if admin.sola_lettura %} disable {% endif %}>
-      <input type='submit' class="btn btn-primary" name="indietro" value="Indietro">
+      <button type='submit' class="btn btn-primary" name= 'AggiornaSedeButton' value='AggiornaSede'>Aggiorna/Salva</button>
+      <button type='submit' class="btn btn-primary" name="indietro">Indietro/Chiudi</button>
     </div>
-
   </form>
 </div>
 {% endblock %}
@@ -108,10 +107,11 @@
           <tbody>
             {% for a in listaAmministratore %}
               <tr>
-                <td> {{ a.login }}</td>
-                <td> {{ a.nome }} </td>
+                <td> {{ a.amministratore.login }}</td>
+                <td> {{ a.amministratore.nome }} </td>
                 <td></td>
-                <td><button type='submit' class='btn btn-primary' data-bs-toggle='modal' data-bs-target='#ConfirmDeleteModal{{ a.id }}' value='{{ a.id }}'>D</button></td>
+                <td><button type='submit' class='btn btn-primary' data-bs-toggle='modal'
+                data-bs-target='#ConfirmDeleteModal{{a.amministratore.id }}' value='{{ a.amministratore.id }}'>D</button></td>
               </tr>
                 <!-- Modal -->
                <div class="modal fade" id="ConfirmDeleteModal{{ a.id }}" tabindex="-1" role="dialog" aria-labelledby="ConfirmDeleteLabel{{ a.id }}" aria-hidden="true">
@@ -119,9 +119,6 @@
               <div class="modal-content">
                 <div class="modal-header">
                   <h5 class="modal-title" id="ConfirmDeleteLabel">Conferma Cancellazione Diritti</h5>
-                  <button type="button" class="close" data-bs-dismiss="modal" aria-label="Chiudi">
-                   <span aria-hidden="true">&times;</span>
-                  </button>
                 </div>
                 <div class="modal-body">
                   La conferma di cancellazione rimuove immediatamente tutti i diritti associati alla
@@ -141,6 +138,26 @@
           <!-- end modal -->
 
             {% endfor %}
+              <tr>
+                <form name='formAmministratoreDaAggiungere' method='POST'>
+                {% csrf_token %}
+                <td>
+                  <select class="form-select"
+                  name="ListaAmministratoriPermessi"
+                  id="ListaAmministratoriPermessi"
+                  >
+                    <option value="">-- Scegli tra gli amministratori disponibili --</option>
+                    {% for lp in listaAmministratoreDaAggiungere  %}
+                      <option value="{{ lp.id }}">{{ lp.nome }}</option>
+                    {% endfor %}
+                  </select>
+                </td>
+                <td>
+                  <button type='submit' class='btn btn-primary' name='PermessoDaAggiungereButton'>Aggiungi</button>
+                </td>
+                </form>
+              </tr> 
+
           </tbody>
         </table>
       </li>

+ 4 - 0
azienda/templates/azienda.welcome.html

@@ -6,8 +6,12 @@
     {% csrf_token %}
 
     {% if azienda %}
+      {% if 'UTENTE' in permesso %}
       <button type="submit" class='btn btn-primary' name="utenti" value="{{ azienda.id }}">Dipendenti</button>
+      {% endif %}
+      {% if 'DOCUMENTO' in permesso %}
       <button type='submit' class="btn btn-primary" name="documenti" value='{{ azienda.id }}'>Documenti</button>
+      {% endif %}
       {% if 'ATTIVITA' in permesso %}
       {% if listaAttivitaxAzienda %}
         <button type 'submit' class='btn btn-primary' name="xx" value='{{ azienda.id }}'>Attività proprie</button>

+ 245 - 167
azienda/views.py

@@ -12,11 +12,16 @@ def welcome(request):
   if not 'AdminId' in request.session:
     return HttpResponseRedirect(reverse("login:start"))
 
+  data = dict()
+  data['HeaderTitle'] = getConfig('HeaderTitle')
+  data['Navbar']=True
+
   AdminId = request.session['AdminId']
   print('AdminId',AdminId)
+  admin = Amministratore.objects.get(pk=AdminId)
+  data['admin'] = admin
+  print('admin',admin.id,admin.nome)
 
-  data = dict()
- 
   azienda = None
   if 'AziendaId' in request.session:
     AziendaId = request.session['AziendaId']
@@ -31,15 +36,9 @@ def welcome(request):
     try:
       sede = Sede.objects.get(pk=SedeId)
     except Sede.DoesNotExist as dne:
-      print("non esiste")
+      print("Sede non esiste")
     data['sede'] = sede
-
-  data['HeaderTitle'] = getConfig('HeaderTitle')
-  data['Navbar']=True
-  admin = Amministratore.objects.get(pk=AdminId)
-  data['admin'] = admin
-  print('admin',admin.id,admin.nome)
-
+ 
   ### permessi inizio ###
   data['permesso'] = getAMP(admin)[0]
   if 'AziendaId' in data:
@@ -54,7 +53,7 @@ def welcome(request):
     print('permesso_azienda',getAZP(data['AziendaId'],admin))
     print('permesso_sede',getSEP(data['sede'],admin))
   ### permessi fine ###
- 
+
   ### ricerca delle aziende valide per questo amministratore 
   assegnazioneazienda = listaAZP(admin)[0]
   print('assegnazioneazienda',len(assegnazioneazienda))
@@ -66,11 +65,13 @@ def welcome(request):
     request.session['AziendaId'] = azienda.id
     print("Singola Azienda",azienda.nome)
 
+  ### lista delle sedi valida per questo amministratore
   assegnazionesede=None
   if azienda:
     assegnazionesede = listaSEP(admin,azienda)
     print("assegnazionesede",len(assegnazionesede))
 
+  ### lista attività ###
   data['listaAttivitaxAmministrazione']=getLogxAmministrazione(admin)
 
   if request.method=="POST":
@@ -92,7 +93,16 @@ def welcome(request):
       # attività su nuova/edit azienda
       if sceltaazienda == -1: #richiesta una nuova azienda
         print('sceltaazienda -1:',sceltaazienda)
-        #return HttpResponseRedirect(reverse('azienda:editAzienda'))
+        if "AziendaId" in request.session:
+          del request.session['AziendaId']
+        if "azienda" in request.session:
+          del request.session['azienda']
+        if "SedeId" in request.session:
+          del request.session['SedeId']
+        if "sede" in request.session:
+          del request.session['sede']
+        return HttpResponseRedirect(reverse('azienda:welcome'))
+        
       elif sceltaazienda == 0:
         print('sceltaazienda 0:',sceltaazienda)
         request.session['AziendaIdEdit'] = 0
@@ -180,11 +190,18 @@ def welcome(request):
 
   if 'azienda' in data:
     print('azienda selezionata:',data['azienda'].nome)
-    data['SedeLista'] = data['azienda'].sede_set.all().order_by('nome')
-
+    # costruisce la lista delle sedi.
+    #data['SedeLista'] = data['azienda'].sede_set.all().order_by('nome')
+    print(":::",listaSEP(data['azienda'],admin))
+    data['SedeLista'] = listaSEP(data['azienda'],admin)[0]
+    print("::::",data['SedeLista'])
+    print(data)
+    
   print('numero aziende',len(data['AziendaLista']))
+  
   if 'SedeLista' in data:
     print('numero di sedi',len(data['SedeLista']))
+    for i in data['SedeLista']: print(":::",i.nome)
 
   return render(request,'azienda.welcome.html',data)
 
@@ -194,10 +211,15 @@ def editAzienda(request):
   if not 'AdminId' in request.session:
     return HttpResponseRedirect(reverse("login:start"))
 
+  data=dict()
+  data['HeaderTitle'] = getConfig('HeaderTitle')
+  data['Navbar']=False
+
   AdminId = request.session['AdminId']
   print('AdminId',AdminId)
-
-  data=dict()
+  admin = Amministratore.objects.get(pk=AdminId)
+  data['admin'] = admin
+  print('admin',admin.id,admin.nome)
 
   azienda = None
   if 'AziendaId' in request.session:
@@ -213,13 +235,10 @@ def editAzienda(request):
     try:
       sede = Sede.objects.get(pk=SedeId)
     except Sede.DoesNotExist as dne:
-      print("non esiste")
+      print("Sede non esiste")
     data['sede'] = sede
 
-  data['HeaderTitle'] = getConfig('HeaderTitle')
-  data['Navbar']=False
-  user = data['admin'] = Amministratore.objects.get(pk=AdminId)
-
+  ### azienda su cui effettuare le operazioni
   azienda = None
   if 'AziendaIdEdit' in request.session:
     print('trovato riferimento AziendaIdEdit',request.session.get('AziendaIdEdit'))
@@ -228,113 +247,148 @@ def editAzienda(request):
       azienda = Azienda.objects.get(pk=azid)
       print('azienda trovata',azienda.nome)
     except Azienda.DoesNotExist as dnf:
-        print(dnf)
-
-  data['permesso_amministratore'] = getAMP(AdminId)[0]
-  data['permesso_azienda'] = getAZP(azienda,AdminId)
-
-  print('permesso_amministratore',data['permesso_amministratore'])
-  print('permesso_azienda',data['permesso_azienda'])
-
-  if 'indietro' in request.POST:
-    return HttpResponseRedirect(reverse('azienda:welcome'))
-
-  if request.method == "POST":
-    print("Richiesta creazione nuova azienda")
-    nuovaazienda = formAzienda(request.POST)
-    if nuovaazienda.is_valid():
-      print("il form e' valido",request.POST)
-      if not azienda:
-        azienda = Azienda()
-        setAZP(azienda,data['admin'],"AZIENDA")
-        if 'AZIENDA.CREA' in getAMP(data['admin'])[0]:
-          setAZP(azienda,data['admin'],"AZIENDA.CREA")
-        if 'AZIENDA.EDIT' in getAMP(data['admin'])[0]:
-          setAZP(azienda,data['admin'],"AZIENDA.EDIT")
-        if 'UTENTE' in getAMP(data['admin'])[0]:
-          setAZP(azienda,data['admin'],"UTENTE")
-        if 'UTENTE.CREA' in getAMP(data['admin'])[0]:
-          setAZP(azienda,data['admin'],"UTENTE.CREA")
-
-      azienda.nome = nuovaazienda.cleaned_data.get('nome')
-      azienda.mail = nuovaazienda.cleaned_data.get('mail')
-      azienda.partitaiva = nuovaazienda.cleaned_data.get('partitaiva')
-      azienda.cambiopassword = nuovaazienda.cleaned_data.get('cambiopassword')
-      azienda.forzanuovapassword = nuovaazienda.cleaned_data.get('forzanuovapassword')
-      azienda.save()
-      request.session['AziendaIdEdit'] = azienda.id
-      print('azienda:',azienda.id)
-
-      #assegnazione = AssegnazioneAzienda()
-      #assegnazione.azienda=azienda
-      #assegnazione.amministratore=Amministratore.objects.get(pk=AdminId)
-      #assegnazione.save()
+      print(dnf)
+      azienda = Azienda()
+      
+  #### permessi ####
+  data['permesso'] = getAMP(admin)[0]
+  for t in getAZP(azienda,admin):
+    if t not in data['permesso']:
+      data['permesso'].append(t)
+  for t in getSEP(data['sede'],admin):
+    if t not in data['permesso']:
+      data['permesso'].append(t)
+  print('permessi:',data['permesso'])
+  #### permessi ####
+
+  if request.method == 'POST':
+    print('un tasto è stato premuto')
 
-      del request.session['AziendaIdEdit']
+    if 'indietro' in request.POST:
       return HttpResponseRedirect(reverse('azienda:welcome'))
-    else:
-      print("form non valido")
-      data['aziendaForm'] = formAzienda(request.POST)
-  else: #non è un post
-    print("Non è un post")
-    formAziendaField = None
-     
-    if azienda:
-        print('Abbiamo azienda',azienda.nome)
-        tmp = dict()
-        tmp['id'] = azienda.id
-        tmp['nome'] = azienda.nome
-        tmp['partitaiva'] = azienda.partitaiva
-        tmp['mail'] = azienda.mail
-        tmp['forzanuovapassword'] = azienda.forzanuovapassword
-        tmp['cambiopassword'] = azienda.cambiopassword
-        formAziendaField = formAzienda(tmp)
-    else:
-        tmp = dict()
-        tmp['nome'] = ''
-        tmp['partitaiva'] = ''
-        tmp['mail'] = user.mail
-        tmp['forzanuovapassword'] = False
-        tmp['cambiopassword' ] = False
-        formAziendaField = formAzienda(tmp)
-
-    data['aziendaForm'] = formAziendaField
-    data['listaAmministratore'],oggetti = listaAMMperAzienda(AziendaId)
-    print(data['listaAmministratore'])
+
+    if 'AggiornaAziendaButton' in request.POST:
+      print('premuto tasto "AggiornaAziendaButton"')
+      nuovaazienda = formAzienda(request.POST)
+      if nuovaazienda.is_valid():
+        print("il form e' valido",request.POST)
+
+
+        azienda.nome = nuovaazienda.cleaned_data.get('nome')
+        azienda.mail = nuovaazienda.cleaned_data.get('mail')
+        azienda.partitaiva = nuovaazienda.cleaned_data.get('partitaiva')
+        azienda.cambiopassword = nuovaazienda.cleaned_data.get('cambiopassword')
+        azienda.forzanuovapassword = nuovaazienda.cleaned_data.get('forzanuovapassword')
+        azienda.otppassword = nuovaazienda.cleaned_data.get('otppassword')
+        azienda.save()
+        
+        request.session['AziendaIdEdit'] = azienda.id
+        print('azienda:',azienda.id)
+        
+        ### nel caso l'azienda non esista, si aggiungono i permessi di base
+        if not azienda:
+          setAZP(azienda,data['admin'],"AZIENDA")
+          if 'AZIENDA.CREA' in getAMP(data['admin'])[0]:
+            setAZP(azienda,data['admin'],"AZIENDA.CREA")
+          if 'AZIENDA.EDIT' in getAMP(data['admin'])[0]:
+            setAZP(azienda,data['admin'],"AZIENDA.EDIT")
+          if 'UTENTE' in getAMP(data['admin'])[0]:
+            setAZP(azienda,data['admin'],"UTENTE")
+          if 'UTENTE.CREA' in getAMP(data['admin'])[0]:
+            setAZP(azienda,data['admin'],"UTENTE.CREA")
+      else:
+        data['aziendaForm'] = formAzienda(request.POST)
+
+    if 'CancellaAziendaPermessiButton' in request.POST:
+      print('premuto "CancellaAziendaPermessiButton"')
+      cancellaaziendaamministratoripermessi = request.POST.get('CancellaAziendaPermessiButton')
+      print('CancellaAziendaAmministratoriPermessi',cancellaaziendaamministratoripermessi)
+      azp = AZP.objects.get(pk=cancellaaziendaamministratoripermessi)
+      if azp:
+        print('Permesso Azienda Amministratore trovato - cancello')
+        azp.delete()
+
+    if 'PermessoDaAggiungereButton' in request.POST:
+      print('premuto "PermessoDaAggiungereButton"')
+      formaziendapermessi = formAziendaPermessi(request.POST,amministratori=Amministratore.objects.all())
+      #formaziendapermessi.c(Amministratore.objects.all()) # alternativa: lista dei soli amministratori con autorizzazione AZIENDA in AMM
+      #print(formaziendapermessi)
+      if formaziendapermessi.is_valid():
+        print('formAziendaPermessi valida')
+        amministratori = formaziendapermessi.cleaned_data.get('ListaAmministratoriPermessi')
+        print('amministratori da aggiungere',amministratori)
+        for x in amministratori: 
+          print('am',amministratori,'az',azienda.nome)
+          try:
+            setAZP(azienda,str(x),"AZIENDA")
+          except ValueError as ve:
+            print('errore in SETAZP')
+      else:
+        print('formAziendaPermessi Errore')
+        print(formaziendapermessi)
+                
+  formaziendafield = None
+  if azienda:
+    print('Abbiamo azienda',azienda.nome)
+    tmp = dict()
+    tmp['id'] = azienda.id
+    tmp['nome'] = azienda.nome
+    tmp['partitaiva'] = azienda.partitaiva
+    tmp['mail'] = azienda.mail
+    tmp['forzanuovapassword'] = azienda.forzanuovapassword
+    tmp['cambiopassword'] = azienda.cambiopassword
+    tmp['otppassword'] = azienda.otppassword
+    formaziendafield = formAzienda(tmp)
+  else:
+    tmp = dict()
+    tmp['nome'] = ''
+    tmp['partitaiva'] = ''
+    tmp['mail'] = user.mail
+    tmp['forzanuovapassword'] = False
+    tmp['cambiopassword' ] = False
+    tmp['otppassword'] = False
+    formaziendafield = formAzienda(tmp)
+  data['aziendaForm'] = formaziendafield
+
+  data['listaAmministratore'] = listaAMMperAzienda(AziendaId)[1]
+  print(data['listaAmministratore'])
+  data['listaAmministratoreDaAggiungere'] = Amministratore.objects.all()
 
   return render(request,'azienda.editAzienda.html',data)
 
 def editSede(request):
-  ''' edit Sedi azienda '''
+
   if not 'AdminId' in request.session:
     return HttpResponseRedirect(reverse("login:start"))
 
+  data=dict()
+  data['HeaderTitle'] = getConfig('HeaderTitle')
+  data['Navbar']=False
+
   AdminId = request.session['AdminId']
   print('AdminId',AdminId)
+  admin = Amministratore.objects.get(pk=AdminId)
+  data['admin'] = admin
+  print('admin',admin.id,admin.nome)
 
-  data = dict()
- 
+  azienda = None
   if 'AziendaId' in request.session:
     AziendaId = request.session['AziendaId']
     print('AziendaId',AziendaId)
-    data['azienda'] = Azienda.objects.get(pk=AziendaId)
-
+    azienda = Azienda.objects.get(pk=AziendaId)
+    data['azienda'] = azienda
+  
+  sede = None
   if 'SedeId' in request.session:
     SedeId = request.session['SedeId']
     print('SedeId',SedeId)
     try:
-      data['sede'] = Sede.objects.get(pk=SedeId)
+      sede = Sede.objects.get(pk=SedeId)
     except Sede.DoesNotExist as dne:
-      print("non esiste")
-
-  data['HeaderTitle'] = getConfig('HeaderTitle')
-  data['Navbar']=False
-
-  data['HeaderTitle'] = getConfig('HeaderTitle')
-  admin = data['admin'] = Amministratore.objects.get(pk=AdminId)
-
-  flag = False
+      print("Sede non esiste")
+    data['sede'] = sede
 
+  sede = None    
   if 'SedeIdEdit' in request.session:
     print('trovato riferimento SedeIdEdit',request.session.get('SedeIdEdit'))
     seid = request.session.get('SedeIdEdit')
@@ -351,66 +405,84 @@ def editSede(request):
       sede.forzanuovapassword = sede.azienda.forzanuovapassword
       sede.otppassword = sede.azienda.otppassword
 
-  data['permesso_amministratore'] = getAMP(AdminId)[0]
-  print('permesso_amministratore',data['permesso_amministratore'])
-
-  if flag:
-    data['permesso_sede'] = getSEP(sede,AdminId)
-    print('permesso_sede',data['permesso_sede'])
-
-  data['permesso_azienda'] = getAZP(AziendaId,AdminId)
-  print('permesso_azienda',data['permesso_azienda'])
-
-  if 'indietro' in request.POST:
-    return HttpResponseRedirect(reverse('azienda:welcome'))
+  #### permessi ####
+  data['permesso'] = getAMP(admin)[0]
+  for t in getAZP(azienda,admin):
+    if t not in data['permesso']:
+      data['permesso'].append(t)
+  for t in getSEP(data['sede'],admin):
+    if t not in data['permesso']:
+      data['permesso'].append(t)
+  print('permessi:',data['permesso'])
+  #### permessi ####
 
   if request.method == "POST":
-    print("Richiesta creazione nuova azienda")
-    nuovasede = formSede(request.POST)
-    if nuovasede.is_valid():
-      print("il form e' valido",request.POST)
-      sede.nome = nuovasede.cleaned_data.get('nome')
-      sede.mail = nuovasede.cleaned_data.get('mail')
-      sede.cambiopassword = nuovasede.cleaned_data.get('cambiopassword')
-      sede.forzanuovapassword = nuovasede.cleaned_data.get('forzanuovapassword')
-      sede.otppassword = nuovasede.cleaned_data.get('otppassword')
-      sede.info = nuovasede.cleaned_data.get('info')
-      sede.identificativo = nuovasede.cleaned_data.get('identificativo')
-      sede.save()
-      print('salvataggio sede',nuovasede.cleaned_data)
-      request.session['SedeIdEdit'] = sede.id
-      print('sede:',sede.id)
-      print('azienda',sede.azienda.nome)
-
-      if 'SedeIdEdit' not in request.session:
-        setSEP(sede,data['admin'],"SEDE")
-        if 'SEDE.CREA' in getAMP(data['admin'])[0]:
-          setSEP(sede,data['admin'],"SEDE.CREA")
-        if 'SEDE.EDIT' in getAMP(data['admin'])[0]:
-          setSEP(sede,data['admin'],"SEDE.EDIT")
-        if 'UTENTE' in getAMP(data['admin'])[0]:
-          setSEP(sede,data['admin'],"UTENTE")
-        if 'UTENTE.CREA' in getAMP(data['admin'])[0]:
-          setSEP(sede,data['admin'],"UTENTE.CREA")
-
-      '''
-      # verifica assegnazione
-      az = AssegnazioneSede.objects.filter(sede=sede,amministratore=admin)
-      print('assegnazione',az)
-      if not az:
-        az = AssegnazioneSede()
-        az.sede=sede
-        az.amministratore=admin
-        az.save()
-        print(sede.nome,admin.nome)
-        print('az.admin',az.sede,az.amministratore.nome)
-      '''
+    print('un tasto è stato premuto')
+    
+    if 'indietro' in request.POST:
       return HttpResponseRedirect(reverse('azienda:welcome'))
-    else:
-      print("form non valido")
-      data['sedeForm'] = formSede(request.POST)
-  else: #non è un post
-    print("Non è un post")
+
+    if 'AggiornaSedeButton' in request.POST:
+      print('premuto tasto "AggiornaSedeButton"')
+      nuovasede = formSede(request.POST)
+      if nuovasede.is_valid():
+        print('il form "formSede" è valido')
+      
+        sede.nome = nuovasede.cleaned_data.get('nome')
+        sede.mail = nuovasede.cleaned_data.get('mail')
+        sede.cambiopassword = nuovasede.cleaned_data.get('cambiopassword')
+        sede.forzanuovapassword = nuovasede.cleaned_data.get('forzanuovapassword')
+        sede.otppassword = nuovasede.cleaned_data.get('otppassword')
+        sede.info = nuovasede.cleaned_data.get('info')
+        sede.identificativo = nuovasede.cleaned_data.get('identificativo')
+        sede.save()
+      
+        request.session['SedeIdEdit'] = sede.id
+        print('sede:',sede.id)
+        print('azienda',sede.nome)
+
+        if not sede:
+          # nel caso la sede non esista, vediamo di crearla
+          if 'SedeIdEdit' not in request.session:
+            setSEP(sede,data['admin'],"SEDE")
+          if 'SEDE.CREA' in getAMP(data['admin'])[0]:
+            setSEP(sede,data['admin'],"SEDE.CREA")
+          if 'SEDE.EDIT' in getAMP(data['admin'])[0]:
+            setSEP(sede,data['admin'],"SEDE.EDIT")
+          if 'UTENTE' in getAMP(data['admin'])[0]:
+            setSEP(sede,data['admin'],"UTENTE")
+          if 'UTENTE.CREA' in getAMP(data['admin'])[0]:
+            setSEP(sede,data['admin'],"UTENTE.CREA")
+      else:
+        data['sedeForm'] = formSede(request.POST)
+      
+    if 'CancellaSedePermessiButton' in request.POST:
+      print('premuto "CancellaSedePermessiButton"')
+      cancellasedeamministratoripermessi = request.POST.get('CancellaSedePermessiButton')
+      print('CancellaSedeAmministratoriPermessi',cancellasedeamministratoripermessi)
+      sep = SEP.objects.get(pk=cancellasedeamministratoripermessi)
+      if sep:
+        print('Permesso Sede Amministratore trovato - cancello')
+        sep.delete()
+
+    if 'PermessoDaAggiungereButton' in request.POST:
+      print('premuto "PermessoDaAggiungereButton"')
+      formsedepermessi = formSedePermessi(request.POST,amministratori=Amministratore.objects.all())
+      #formaziendapermessi.c(Amministratore.objects.all()) # alternativa: lista dei soli amministratori con autorizzazione AZIENDA in AMM
+      #print(formaziendapermessi)
+      if formsedepermessi.is_valid():
+        print('formSedePermessi valida')
+        amministratori = formsedepermessi.cleaned_data.get('ListaAmministratoriPermessi')
+        for i in amministratori:
+          print('amministratori da aggiungere',i)
+          setSEP(sede,str(i),"SEDE")
+      else:
+        print('formSedePermessi Errore')
+        print(formsedepermessi)
+        
+  formsedefield = None
+  if sede:
+    print('Abbiamo sede',sede.nome)
     tmp = dict()
     tmp['nome'] = sede.nome
     tmp['info'] = sede.info
@@ -419,9 +491,15 @@ def editSede(request):
     tmp['forzanuovapassword'] = sede.forzanuovapassword
     tmp['otppassword'] = sede.otppassword
     print('stato tmp',tmp)
-    data['sedeForm'] = formSede(tmp)
-    if SedeId:
-      data['listaAmministratore'],oggetti = listaAMMperSede(SedeId)
+    formsedefield = formSede(tmp)
+    
+  data['sedeForm'] = formsedefield
+
+  print("**** sedeId",SedeId)
+  
+  data['listaAmministratore'] = listaAMMperSede(SedeId)[1]
+  print("lamm",data['listaAmministratore'])
+  data['listaAmministratoreDaAggiungere'] = Amministratore.objects.all()
 
   return render(request,'azienda.editSede.html',data)
  

+ 19 - 6
documento/views.py

@@ -94,24 +94,37 @@ def welcome(request,utente=None):
       d = t.documento_set.all()
       for id in d:
         ElencoDocumenti.append(id)
-  print('ElencoDocumenti',len(ElencoDocumenti))
-  data['ElencoDocumenti'] = ElencoDocumenti
+  
+  #####
+  # filtro temporaneo, non mostra i documenti che iniziano per EMO
+  #####
+  tmp = list()
+  if "DOCUMENTO.NASCONDE.EMO":
+    for ed in ElencoDocumenti:
+       if "emo_" not in ed.documento.lower():
+         tmp.append(ed)
+  else:
+    tmp = ElencoDocumenti     
+  print('ElencoDocumenti/tmp',len(ElencoDocumenti),len(tmp))
+  data['ElencoDocumenti'] = tmp
 
   print('inizio sequenza permessi')
   ### permessi inizio ###
   data['permesso'] = getAMP(admin)[0]
-  print('permesso:',data['permesso'])
+  print('permessoi generale:',data['permesso'])
 
   if 'AziendaId' in data:
-    for t in getAZP(data['AziendaId'],admin):
+    print('livello azienda',getAZP(data['AziendaId'],admin)[0])
+    for t in getAZP(data['AziendaId'],admin)[0]:
       if t not in data['permesso']:
         data['permesso'].append(t)
-        print('permesso_azienda',getAZP(data['AziendaId'],admin))
+        
     if 'sede' in data:
+      print('livello sede',getSEP(data['sede'],admin))
       for t in getSEP(data['sede'],admin):
         if t not in data['permesso']:
           data['permesso'].append(t)
-          print('permesso_sede',getSEP(data['sede'],admin))
+    print('Stato permessi:',data['permesso'])
          ### permessi fine ###
 
   if request.method == 'POST':

+ 107 - 37
sicurezza/views.py

@@ -5,6 +5,7 @@ from django.shortcuts import render
 from .models import *
 from att.views import *
 from config.views import *
+from django.db import IntegrityError
 
 # riporta tutti i permessi mixando i tre livelli
 def getP(azienda=None,sede=None,amministratore=None):
@@ -39,19 +40,19 @@ def getAMP(amministratore=None):
 def getAZP(azienda=None,amministratore=None):
   azi = None
   if isinstance(azienda,Azienda):
-    print('si tratta di una istanza azienda')
+    print('azienda: azienda')
     azi=azienda
   if isinstance(azienda,int):
-    print('azienda: istanza int')
+    print('azienda: int')
     azi = Azienda.objects.get(pk=azienda)
 
   amm=None
-  print('getAMP',amministratore)
+  print('amministratore',amministratore)
   if isinstance(amministratore,Amministratore):
-    print('si tratta di una istanza, quindi possiamo direttamente accedere')
+    print('amministratore: amministratore')
     amm = amministratore
   if isinstance(amministratore,int):
-    print('si tratta di un int, quindi dobbiamo cercare il valore')
+    print('amministratore: int')
     amm = Amministratore.objects.get(pk=amministratore)
 
   if not amm:
@@ -95,8 +96,8 @@ def listaAMP(amministratore=None):
 '''
 
 #ottiene la lista degli amministratori per azienda
-def listaAMMperAzienda(azienda=None):
-  print('Parametro azienda',azienda,type(azienda))
+def listaAMMperAzienda(azienda=None,permesso=None):
+
   azi = None
   if isinstance(azienda,Azienda):
     print('Azienda: instanza Azienda')
@@ -105,14 +106,32 @@ def listaAMMperAzienda(azienda=None):
     print('Azienda: istanza int')
     azi = Azienda.objects.get(pk=azienda)
 
-  if azi == None: 
+  per = None
+  if isinstance(permesso,Permesso):
+    print('Permesso: instanza Permesso')
+    per = permesso
+  if isinstance(permesso,int):
+    print('Permesso: istanza int')
+    per = Permesso.objects.get(pk=permesso)
+
+  if not azi:
     print('problema con la definizione di azienda')
     return []
 
   print('dati rilevati',azi.id,azi.nome)
 
-  laz = azi.azp_set.filter(permesso__nome="AMMINISTRATORE")
-  print('lunghezza LAZ',laz)
+  laz = list()
+  if not per: #tutti i permessi
+    p = Permesso.objects.all()
+    for tmp in p:
+      t = azi.azp_set.filter(permesso__nome=tmp.nome)
+      for  tmp2 in t:
+        laz.append(tmp2)
+  else:
+    t = azi.azp_set.filter(permesso__nome=per_nome)
+    for tmp in t:
+     laz.append(tmp)
+  print('lunghezza LAZ parametro indicato',laz)
 
   amministratore = list()
   oggetto = list()
@@ -124,28 +143,49 @@ def listaAMMperAzienda(azienda=None):
   return (amministratore,oggetto)
 
 #ottiene la lista degli amministratori per sede
-def listaAMMperSede(sede=None):
-  print('Parametro sede',sede,type(sede))
+def listaAMMperSede(sede=None,permesso=None):
+
   sed = None
   if isinstance(sede,Sede):
     print('Sede: instanza Sede')
-    sed = Sede
+    sed = sede
   if isinstance(sede,int):
     print('Sede: istanza int')
     sed = Sede.objects.get(pk=sede)
 
-  if sed == None: 
+  per = None
+  if isinstance(permesso,Permesso):
+    print('Permesso: instanza Permesso')
+    per = permesso
+  
+  if isinstance(permesso,int):
+    print('Permesso: istanza int')
+    per = Permesso.objects.get(pk=permesso)
+
+  if not sed:
     print('problema con la definizione di sede')
     return []
 
   print('dati rilevati',sed.id,sed.nome)
 
-  lse = sed.sep_set.filter(permesso__nome="AMMINISTRATORE")
-  print('lunghezza Lse',lse)
+  lse = list()
+  if not per: #tutti i permessi
+    p = Permesso.objects.all()
+    for tmp in p:
+      t = sed.sep_set.filter(permesso__nome=tmp.nome)
+      for  tmp2 in t:
+        lse.append(tmp2)
+  else:
+    t = sed.sep_set.filter(permesso__nome=per_nome)
+    for tmp in t:
+     lse.append(tmp)
+  print('lunghezza LAZ parametro indicato',lse)
 
   amministratore = list()
   oggetto = list()
+
   for p in lse:
+    print(p.amministratore.nome)
     amministratore.append(p.amministratore)
     oggetto.append(p)
 
@@ -183,8 +223,8 @@ def listaAZP(amministratore=None):
 
 # ritorna la lista delle sedi per azienda e amministratore
 def listaSEP(azienda=None,amministratore=None):
-
-  print('Parametro azienda',azienda,type(azienda))
+  print("listaSEP",azienda,amministratore)
+  
   azi = None
   if isinstance(azienda,Azienda):
     print('Azienda: instanza Azienda')
@@ -193,7 +233,6 @@ def listaSEP(azienda=None,amministratore=None):
     print('Azienda: istanza int')
     azi = Azienda.objects.get(pk=azienda)
 
-  print('Parametro amministratore',amministratore,type(amministratore))
   amm = None
   if isinstance(amministratore,Amministratore):
     print('amministratore: instanza Amministratore')
@@ -212,14 +251,24 @@ def listaSEP(azienda=None,amministratore=None):
 
   print('dati rilevati',amm.id,amm.login)
 
-  lam = amm.sep_set.filter(permesso__nome="SEDE")
-  print('lunghezza LAM',lam)
-
-  print('cazzo!')
+  # devo ottenere la lista delle sedi, filtrate per azienda autorizzate per amministratore
+  
   sedi = list()
   oggetto = list()
 
+  sedix = azi.sede_set.all()
+  lam = list()
+  
+  for s in sedix:
+    tmp = SEP.objects.filter(sede=s).filter(amministratore=amm)
+    print(len(tmp))
+    for n in tmp:
+      lam.append(n)
+    
+  print("lam",len(lam))
+  
   for p in lam:
+    print(p,type(p),p.sede)
     sedi.append(p.sede)
     oggetto.append(p)
 
@@ -305,42 +354,55 @@ def setAMP(amministratore=None,permesso=None):
   return [p,]
 
 def setAZP(azienda=None,amministratore=None,permesso=None):
-
+  print('setAZP:',azienda,amministratore,permesso) 
   azi = None
   if isinstance(azienda,Azienda):
-    print('si tratta di una istanza azienda')
+    print('azienda: istanza')
     azi=azienda
   if isinstance(azienda,int):
-    print('azienda: istanza int')
+    print('azienda: int')
     azi = Azienda.objects.get(pk=azienda)
 
   amm=None
-  print('getAMP',amministratore)
   if isinstance(amministratore,Amministratore):
-    print('si tratta di una istanza, quindi possiamo direttamente accedere')
+    print('amministratore: istanza')
     amm = amministratore
+
+  if isinstance(amministratore,str):
+    try:
+      amministratore = int(amministratore)
+    except ValueError as ve:
+      print(ve)
+  
   if isinstance(amministratore,int):
     print('si tratta di un int, quindi dobbiamo cercare il valore')
     amm = Amministratore.objects.get(pk=amministratore)
 
   per=None
-  print('getAMP',permesso)
   if isinstance(permesso,Permesso):
-    print('si tratta di una istanza, possiamo passarla direttamente')
+    print('permesso: istanza')
     per = permesso
   if isinstance(permesso,int):
-    print('si tratta di un int, quindi dobbiamo cercare il valore')
+    print('permesso: int')
     per = Permesso.objects.get(pk=permesso)
   if isinstance(permesso,str):
-    print('si tratta di una str, quindi dobbiamo cercare il valore')
+    print('permesso: str')
     per = Permesso.objects.get(nome=permesso)
+    
+  if not azi: print("Errore opzione azi")
+  if not amm: print("Errore opzione amm")
+  if not per: print("Errore opzione per")
 
   # aggiungiamo il permesso necessario
+  print('in fase di salvataggio',azi,amm,per)
   p = AZP()
   p.permesso=per
   p.amministratore=amm
   p.azienda=azi
-  p.save()
+  try:
+    p.save()
+  except IntegrityError as ie:
+    print(ie)
   return [p,]
 
 # set Permessi Sede
@@ -355,16 +417,17 @@ def setSEP(sede=None,amministratore=None,permesso=None):
     sed = Sede.objects.get(pk=sede)
 
   amm=None
-  print('getAMP',amministratore)
   if isinstance(amministratore,Amministratore):
     print('si tratta di una istanza, quindi possiamo direttamente accedere')
     amm = amministratore
+  if isinstance(amministratore,str):
+    print("Amministratore: str")
+    amministratore = int(amministratore)
   if isinstance(amministratore,int):
-    print('si tratta di un int, quindi dobbiamo cercare il valore')
+    print('Amministratore: int')
     amm = Amministratore.objects.get(pk=amministratore)
 
   per=None
-  print('getAMP',permesso)
   if isinstance(permesso,Permesso):
     print('si tratta di una istanza, possiamo passarla direttamente')
     per = permesso
@@ -375,11 +438,18 @@ def setSEP(sede=None,amministratore=None,permesso=None):
     print('si tratta di una str, quindi dobbiamo cercare il valore')
     per = Permesso.objects.get(nome=permesso)
 
+  if not sed: print("Errore opzione sed")
+  if not amm: print("Errore opzione amm")
+  if not per: print("Errore opzione per")
+
   # aggiungiamo il permesso necessario
   p = SEP()
   p.permesso=per
   p.amministratore=amm
   p.sede=sed
-  p.save()
+  try:
+    p.save()
+  except IntegrityError as ie:
+    print(ie)
   return [p,]
 

+ 11 - 5
utente/templates/utente.welcome.html

@@ -43,7 +43,9 @@ function toggle(source) {
   	  <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>
+        {% 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 %}
       </tr>
     </thead>
     <tbody>
@@ -58,15 +60,19 @@ function toggle(source) {
           <td> {{ uu.sede.nome }} </td>
 	  <td> {{ uu.datanascita|date:'d/m/Y' }} </td>
 	  <td> {{ uu.luogonascita }} </td>
-	  <td> <a href='{% url 'documento:welcome' uu.id %}'>{{ uu.documenti }}</a></td>
+          {% if "DOCUMENTO" in permesso %}
+	    <td> <a href='{% url 'documento:welcome' uu.id %}'>{{ uu.documenti }}</a></td>
+          {% endif %}
           {% if "UTENTE.EDIT" in permesso %}
             <td> {{ uu.mail }} </td>
             <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>
+          {% if "DOCUMENTO" in permesso %}
+	    <td>
+  	      <input class="form-check-input" type="checkbox" id="select-{{ uu.id}}" name="select" value='{{ uu.id }}'/>
+            </td>
+          {% endif %}
 	</tr>
       {% endfor %} 
     </tbody>