Browse Source

abbiamo aggiunto la gestione dei permessi per singola azienda
scorporandola dalla gestione delle diverse azienda.

mauro 6 tháng trước cách đây
mục cha
commit
a2e5eab4a2

+ 0 - 3
amministratore/forms.py

@@ -49,7 +49,6 @@ class FormCancellaPermessiXAmministratore(forms.Form):
 
 class FormAziendaMancante(forms.Form):
   choices = list()
-
   def __init__(self,*args,**kwargs):
     forms.Form.__init__(self,*args,**kwargs)
     self.fields['aziendadaaggiungere'] = forms.ChoiceField(required=True,choices=self.c(azienda))
@@ -61,7 +60,6 @@ class FormAziendaMancante(forms.Form):
     return self.choices
 
 class FormAziendaDaAggiungere(forms.Form):
-
   def __init__(self,*args,azienda=[],**kwargs):
     forms.Form.__init__(self,*args,**kwargs)
     self.fields['ListaAziendaDaAggiungere'] = forms.ChoiceField(required=True,choices=self.c(azienda))
@@ -74,7 +72,6 @@ class FormAziendaDaAggiungere(forms.Form):
     return choices
 
 class FormSedeDaAggiungere(forms.Form):
-
   def __init__(self,*args,sede=[],**kwargs):
     forms.Form.__init__(self,*args,**kwargs)
     self.fields['ListaSedeDaAggiungere'] = forms.ChoiceField(required=True,choices=self.c(sede))

+ 94 - 0
amministratore/templates/amministratore.edit.AZ.html

@@ -0,0 +1,94 @@
+{% extends 'base.html' %}
+
+{% block body %}
+
+ <div class="error">
+  <!-- errori form sede -->
+  {% if azienda.errors %}
+    <div class="alert alert-danger">
+    {{ azienda.errors }}
+    </div>
+  {% endif %}
+  <!-- fine zona errori -->
+  </div>
+
+  <div>
+    Lista Aziende Autorizzate
+  </div> 
+  <div class='h4'>
+  Questa lista contiene le aziende a cui l'amministratore è autorizzato ad accedere. L'accesso è concesso in prima battuta solo in lettura.
+  usare il tasto "E" per consentire anche altre operazioni.
+  </div>
+
+  <form name='aziendapermessiform' method='POST'>
+  {% csrf_token %}
+  <ul class="list-group list-group-flush">
+    <li class="list-group-item">
+      <table class='table table-striped table-hover'>
+        <thead class='thead-dark'>
+          <tr>
+            <th scope='col'>Nome</th>
+            <th scope='col'>P.Iva</th>
+	    <th scope='col'>P</th>
+	    <th scope='col'>S</th>
+	    <th scope='col'>D</th>
+          </tr>
+          </thead>
+          <tbody>
+            {% for a in listaazienda %}
+              <tr>
+                <td> {{ a.nome }} </td>
+                <td> {{ a.partitaiva }} </td>
+		<td><button type='submit' class='btn btn-primary' name="PermessoButton" value='{{ a.id }}'>P</button></td>
+    		<td><button type='submit' class='btn btn-primary' name="SedeButton" value='{{ a.id }}'>S</button></td>
+		<td><button type='button' class='btn btn-primary' data-bs-toggle='modal' data-bs-target='#ConfirmDeleteModal{{ a.id }}' value='{{ a.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">
+              <div class="modal-dialog" role="document">
+                <div class="modal-content">
+                  <div class="modal-header">
+                    <h5 class="modal-title" id="ConfirmDeleteLabel">Conferma Cancellazione Diritti</h5>
+                      <span aria-hidden="true"></span>
+                    </button>
+                  </div>
+                  <div class="modal-body">
+                    Confermando si procede all'immediata rimozione dei permessi associati alla
+                    societa' {{ a.nome }} e alle sue sedi.
+                    Confermi la cancellazione dei diritti di accesso di {{ a.nome }}?
+                </div>
+                <div class="modal-footer">
+                    {% csrf_token %}
+                    <button type="submit" name="ConfermaCancellazioneAzienda" value='{{ a.id }}' class="btn btn-primary">Cancella Permessi</button>
+                    <button type="button" class="btn btn-primary" data-bs-dismiss="modal">Chiudi/Annulla</button>
+                </div>
+              </div>
+            </div>
+          <!-- end modal -->
+            {% endfor %}
+
+	    <tr>
+                {% csrf_token %}
+	      <td>
+  	        <select class="form-select" name="ListaAziendaDaAggiungere" id="ListaAziendaDaAggiungere">
+		  <option value="">-- Scegli l'azienda da Aggiungere --</option>
+	          {% for lp in listaaziendadiff  %}
+		  <option value="{{ lp.id }}">{{ lp.nome }} - {{ lp.partitaiva}}</option>
+                    {% endfor %}
+                </select>
+	      </td>
+	      <td>
+		<button type='submit' name="AziendaDaAggiungereButton" class='btn btn-primary'>Aggiungi</button>
+	      </td>
+	    </tr>
+          </tbody>
+        </table>
+      </li>
+    </ul>
+    <div class="btn-group">
+      <input type='submit' name="AmministratoreButton" class="btn btn-primary" value="Torna a profilo Amministratore">
+      <input type='submit' name="AmministratoreReturnButton" class="btn btn-primary" value="Ritorna">
+    <div>
+    </form>
+{% endblock %}

+ 39 - 56
amministratore/templates/amministratore.edit.AZP.html

@@ -12,15 +12,38 @@
   <!-- fine zona errori -->
   </div>
 
-  <div>
-    Lista Aziende Autorizzate
+  <div class="h4">
+    Lista Permessi assegnati per societa'.
   </div> 
-  <div class='h4'>
-  Questa lista contiene le aziende a cui l'amministratore è autorizzato ad accedere. L'accesso è concesso in prima battuta solo in lettura.
-  usare il tasto "E" per consentire anche altre operazioni.
+  <div class="h5">
+  Questa lista contiene i permessi assegnati a livello di amministratore.
+  </div>
+  <div class="h5">
+  Assegnare i permessi a questo livello <b>supera</b> eventuali permessi assegnati a livello azienda o sede.
   </div>
 
-  <form name='aziendapermessiform' method='POST'>
+  <ul class="list-group list-group-flush">
+    <li class="list-group-item">
+      <table class='table table-striped table-hover'>
+        <thead class='thead-dark'>
+          <tr>
+            <th scope='col'>Nome</th>
+	    <th scope='col'>Descrizione</th>
+          </tr>
+          </thead>
+          <tbody>
+            {% for a in permessoAMP %}
+              <tr>
+                <td> {{ a.nome }} </td>
+		<td> {{ a.descrizione }} </td>
+              </tr>
+	    {% endfor %}
+          </tbody>
+        </table>
+      </li>
+    </ul>
+
+  <form name='amministratorepermessiform' method='POST'>
   {% csrf_token %}
   <ul class="list-group list-group-flush">
     <li class="list-group-item">
@@ -28,56 +51,18 @@
         <thead class='thead-dark'>
           <tr>
             <th scope='col'>Nome</th>
-            <th scope='col'>P.Iva</th>
-	    <th scope='col'>S</th>
-	    <th scope='col'>E</th>
+	    <th scope='col'>Descrizione</th>
 	    <th scope='col'>D</th>
           </tr>
           </thead>
           <tbody>
-            {% for a in listaazienda %}
+            {% for a in permessoAZP %}
               <tr>
                 <td> {{ a.nome }} </td>
-                <td> {{ a.partitaiva }} </td>
-                  {% csrf_token %}
-    		  <td><button type='submit' class='btn btn-primary' name="SedeButton" value='{{ a.id }}'>S</button></td>
-		<td><button type='button' class='btn btn-primary' data-bs-toggle='modal' data-bs-target='#ConfirmUpdateModal{{ a.id }}' value='{{ a.id }}'>E</button></td>
+		<td> {{ a.descrizione }} </td>
 		<td><button type='button' class='btn btn-primary' data-bs-toggle='modal' data-bs-target='#ConfirmDeleteModal{{ a.id }}' value='{{ a.id }}'>D</button></td>
               </tr>
 
-              <!-- Modal -->
-              <div class="modal fade" id="ConfirmUpdateModal{{ a.id }}" tabindex="-1" role="dialog" aria-labelledby="ConfirmUpdateLabel{{ a.id }}" aria-hidden="true">
-                <div class="modal-dialog" role="document">
-              <div class="modal-content">
-                <div class="modal-header">
-                  <h5 class="modal-title" id="ConfirmUpdateLabel">Aggiornamento Diritti Amministratore</h5>
-                   <span aria-hidden="true"></span>
-                  </button>
-                </div>
-                <div class="modal-body">
-	          <select name="ListaPermessiDaRimuovere" class="form-select" multiple aria-label="Selezione Multipla Permessi" >
-		    {% for lp in listapermesso %}
-  		      <option value={{ lp.permesso.id }}>{{ lp.permesso.nome }} - {{ lp.descrizione }}</option>
-                    {% endfor %}
-		  </select>
-                </div>
-                <div class="modal-body">
-                  <select name="ListaPermessiDaAggiungere" class="form-select" multiple aria-label="Seleziona Permessi Disponibili">
-                    {% for lp in dirittiAZIENDA %}
-                      <option value="{{ lp.id }}">{{ lp.nome }}</option>
-                    {% endfor %}
-                  </select>
-                </div>
-                <div class="modal-footer">
-                  <button type="submit" name="AziendaPermessoDeleteButton" value='{{ a.id }}' class="btn btn-primary">Rimuovi Permessi</button>
-                  <button type="submit" name="AziendaPermessoUpdateButton" value='{{ a.id }}' class="btn btn-primary">Aggiungi Permessi</button>
-                  <button type="button" class="btn btn-primary" data-bs-dismiss="modal">Chiudi/Annulla</button>
-                </div>
-              </div>
-            </div>
-          </div>
-          <!-- end modal -->
-
           <!-- Modal -->
             <div class="modal fade" id="ConfirmDeleteModal{{ a.id }}" tabindex="-1" role="dialog" aria-labelledby="ConfirmDeleteLabel{{ a.id }}" aria-hidden="true">
               <div class="modal-dialog" role="document">
@@ -88,13 +73,11 @@
                     </button>
                   </div>
                   <div class="modal-body">
-                    Confermando si procede all'immediata rimozione dei permessi associati alla
-                    societa' {{ a.nome }} e alle sue sedi.
-                    Confermi la cancellazione dei diritti di accesso di {{ a.nome }}?
+                    Confermando si procede all'immediata rimozione del permesso indicato?
                 </div>
                 <div class="modal-footer">
                     {% csrf_token %}
-                    <button type="submit" name="AziendaConfermaCancellazionePermesso" value='{{ a.id }}' class="btn btn-primary">Cancella Permessi</button>
+                    <button type="submit" name="ConfermaCancellazionePermesso" value='{{ a.id }}' class="btn btn-primary">Cancella Permesso</button>
                     <button type="button" class="btn btn-primary" data-bs-dismiss="modal">Chiudi/Annulla</button>
                 </div>
               </div>
@@ -105,15 +88,15 @@
 	    <tr>
                 {% csrf_token %}
 	      <td>
-  	        <select class="form-select" name="ListaAziendaDaAggiungere" id="ListaAziendaDaAggiungere">
-		  <option value="">-- Scegli l'azienda da Aggiungere --</option>
-	          {% for lp in listaaziendadiff  %}
-		  <option value="{{ lp.id }}">{{ lp.nome }} - {{ lp.partitaiva}}</option>
+                <select class="form-select" name="ListaPermessiDaAggiungere" id="ListaPermessiDaAggiungere">
+		  <option value="">-- Scegli il permesso da Aggiungere --</option>
+	          {% for lp in listapermessiassegnabili  %}
+		  <option value="{{ lp.id }}">{{ lp.nome }}</option>
                     {% endfor %}
                 </select>
 	      </td>
 	      <td>
-		<button type='submit' name="AziendaDaAggiungereButton" class='btn btn-primary'>Aggiungi</button>
+		<button type='submit' name="PermessoDaAggiungereButton" class='btn btn-primary'>Aggiungi</button>
 	      </td>
 	    </tr>
           </tbody>

+ 1 - 0
amministratore/urls.py

@@ -6,6 +6,7 @@ urlpatterns = [
   path('welcome',views.welcome,name='welcome'),
   path('edit',views.edit,name='edit'),
   path('editAMP',views.editAMP,name='editAMP'),
+  path('editAZ',views.editAZ,name='editAZ'),
   path('editAZP',views.editAZP,name='editAZP'),
   path('editSEP',views.editSEP,name="editSEP"),
   path('editAmministratore',views.editAmministratore,name='editAmministratore'),

+ 130 - 21
amministratore/views.py

@@ -193,7 +193,7 @@ def edit(request):
     
     if 'AmministratoreDirittiAziendaButton' in request.POST:
       print('edit azienda: premuto "AmministratoreDirittiAziendaButton"')
-      return HttpResponseRedirect(reverse("amministratore:editAZP"))
+      return HttpResponseRedirect(reverse("amministratore:editAZ"))
 
     if 'AmministratoreUpdateButton' in request.POST:
       formamministratore = FormAmministratore(request.POST)
@@ -325,10 +325,8 @@ def editAMP(request):
 
   return render(request,'amministratore.edit.AMP.html',data)
 
-def editAZP(request):
-  ### edit diritti associati all'azienda.
-  ### in questa sezione procediamo con l'assegnare o rimuovere i diritti di questo amministratore 
-  ### per le aziende in elenco.
+def editAZ(request):
+  ### edit lista aziende autorizzate
 
   if not 'AdminId' in request.session:
     return HttpResponseRedirect(reverse("login:start"))
@@ -381,7 +379,7 @@ def editAZP(request):
   print('dirittiAZIENDA',len(data['dirittiAZIENDA']))
 
   if request.method == 'POST':
-    print("qualcosa e' stato premuto")
+    print("qualcosa e' stato premuto in editAZ")
   
     if 'AmministratoreReturnButton' in request.POST:
       print("Un tasto è stato premuto 'AmministratoreReturnButton'")
@@ -408,24 +406,135 @@ def editAZP(request):
       request.session['EditAziendaId'] = azienda 
       return HttpResponseRedirect(reverse("amministratore:editSEP"))
 
-    if 'AziendaPermessoUpdateButton' in request.POST:
-      print("Un tasto è stato premuto 'AziendaPermessoUpdate'")
-      print(request.POST)
-      formpermessodaaggiungere = FormPermessoDaAggiungere(request.POST)
-      formpermessodaaggiungere.c(Permesso.objects.filter(classe="SED"))
-      if formpermessodaaggiungere.is_valid():
-        print('formpermessodaaggiungere è valido')
-        print("cazzo cazzo")
-      else:
-        print('errore',formpermessodaaggiungere) 
-      #formpermessoupdate = form.PermessoUpdate(request.POST)
-      
+    if 'PermessoButton' in request.POST:
+      print("Un tasto è stato premuto 'PermessoButton")
+      azienda = request.POST.get('PermessoButton')
+      request.session['EditAziendaPermessoId'] = azienda 
+      return HttpResponseRedirect(reverse("amministratore:editAZP")) 
+     
+    if 'ConfermaCancellazioneAzienda' in request.POST:
+      print("Un tasto è stato premuto 'ConfermaCancellazioneAzienda'")
+      azi = int(request.POST.get('ConfermaCancellazioneAzienda'))
+      delAZP(azi,amministratore)
+
   if amministratore: 
     data['listaazienda'] = listaAZP(amministratore)[0]
     data['listaaziendadiff'] = list(set(listaaziendatutte)-set(data['listaazienda']))
   else:
     data['listaaziendadiff'] = list(set(listaaziendatutte))
 
+  return render(request,'amministratore.edit.AZ.html',data)
+
+def editAZP(request):
+  ### edit diritti associati all'azienda.
+  ### in questa sezione procediamo con l'assegnare o rimuovere i diritti di questo amministratore 
+  ### per le aziende in elenco.
+
+  if not 'AdminId' in request.session:
+    return HttpResponseRedirect(reverse("login:start"))
+
+  ### funzioni esterne ###
+  d = DataDict()
+  data = d.getData()
+  data['NavBar']=True
+  data['ShowSelectAzienda'] = False
+  data['ShowSelectSede'] = False
+
+  define = Define(request)
+  data['admin'] = define.getAdmin()
+  data['azienda'] = define.getAzienda()
+  data['AziendaId'] = define.getAziendaId()
+  data['sede'] = define.getSede()
+  data['SedeId'] = define.getSedeId()
+  ### funzioni esterne fine ###
+
+  if 'AdminId' in request.session:
+    data['AdminId'] = request.session['AdminId']
+    admin = Amministratore.objects.get(pk=data['AdminId'])
+    data['admin'] = admin
+    print('admin',admin.id,admin.nome)
+    data['permessoAMP'] = getAMP(admin)[1]
+
+  amministratore = None
+  if 'AmministratoreEditId' in request.session:
+    amministratoreEditId = request.session.get('AmministratoreEditId')
+    try:
+      amministratore = Amministratore.objects.get(pk=amministratoreEditId)
+    except Amministratore.DoesNotExist as dne:
+      return HttpResponseRedirect(reverse("amministratore:edit"))
+
+  print('amministratore',amministratore.id,amministratore.login,amministratore.nome)
+  data['amministratore'] = amministratore
+
+  if 'EditAziendaPermessoId' in request.session:
+    azienda = Azienda.objects.get(pk=request.session.get('EditAziendaPermessoId'))
+    print('azienda',azienda.nome)
+    data['aziendaOnWork'] = azienda
+    data['permessoAZP'] = getAZP(azienda,amministratore)[1]
+
+  if 'paramm' in request.session and request.session['paramm']:
+    data['DONTSHOWDIRITTI']=True
+
+  print('amministratore',amministratore.id,amministratore.login,amministratore.nome)
+  data['amministratore'] = amministratore
+
+  ####################################
+  listadirittidisponibili= Permesso.objects.filter(Q(classe='AZI')|Q(classe='SED')|Q(classe='UTE')|Q(classe='DOC'))
+
+  # diciamo che fatta cosi' mi pare una pecionata, ma funzionata. magari va ottimizzata un po'
+  print(type(listadirittidisponibili))
+  ldd = list()
+  for i in listadirittidisponibili:
+    ldd.append(i)
+  print(type(ldd))
+  print('*' * 20)
+  data['listapermessiassegnabili'] = list()
+  for i in ldd:
+    if i not in data['permessoAZP']:
+      data['listapermessiassegnabili'].append(i)
+  ##########################################
+
+  if request.method == 'POST':
+    print("qualcosa e' stato premuto")
+  
+    if 'AmministratoreReturnButton' in request.POST:
+      print("Un tasto è stato premuto 'AmministratoreReturnButton'")
+      return HttpResponseRedirect(reverse("amministratore:welcome"))
+
+    if 'AmministratoreButton' in request.POST:
+      print("Un tasto è stato premuto 'AmministratoreButton'")
+      return HttpResponseRedirect(reverse("amministratore:edit"))
+
+    if 'PermessoDaAggiungereButton' in request.POST:
+      print("Un tasto è stato premuto 'PermessoDaAggiungereButton'")
+      formpermessodaaggiungere = FormPermessoDaAggiungere(request.POST,permessi=data['listapermessiassegnabili'])
+      if formpermessodaaggiungere.is_valid():
+        print('listapermessidaaggiungere',formpermessodaaggiungere.cleaned_data.get('ListaPermessiDaAggiungere'))
+        setAZP(azienda,amministratore,int(formpermessodaaggiungere.cleaned_data.get('ListaPermessiDaAggiungere')))
+      else:
+        print('errore formpermessodaaggiungere',formpermessodaaggiungere)
+
+    if 'ConfermaCancellazionePermesso' in request.POST:
+      print("Un tasto è stato premuto 'ConfermaCancellazionePermesso'")
+      delAZP(azienda,amministratore,int(request.POST.get('ConfermaCancellazionePermesso')))
+
+  data['permessoAZP'] = getAZP(azienda,amministratore)[1]
+  ####################################
+  listadirittidisponibili= Permesso.objects.filter(Q(classe='AZI')|Q(classe='SED')|Q(classe='UTE')|Q(classe='DOC'))
+
+  # diciamo che fatta cosi' mi pare una pecionata, ma funzionata. magari va ottimizzata un po'
+  print(type(listadirittidisponibili))
+  ldd = list()
+  for i in listadirittidisponibili:
+    ldd.append(i)
+  print(type(ldd))
+  print('*' * 20)
+  data['listapermessiassegnabili'] = list()
+  for i in ldd:
+    if i not in data['permessoAZP']:
+      data['listapermessiassegnabili'].append(i)
+  ##########################################
+
   return render(request,'amministratore.edit.AZP.html',data)
 
 def editSEP(request):
@@ -452,7 +561,7 @@ def editSEP(request):
   ### funzioni esterne fine ###
 
   if not 'EditAziendaId' in request.session:
-    HttpResponseRedirect(reverse("amministratore:editAZP"))
+    HttpResponseRedirect(reverse("amministratore:editAZ"))
 
   if 'AdminId' in request.session:
     data['AdminId'] = request.session['AdminId']
@@ -506,7 +615,7 @@ def editSEP(request):
 
     if 'AmministratoreEditAZPButton' in request.POST:
       print("Un tasto è stato premuto 'AmministratoreEditAZPButton'")
-      return HttpResponseRedirect(reverse("amministratore:editAZP"))
+      return HttpResponseRedirect(reverse("amministratore:editAZ"))
 
     if 'SedeConfermaCancellazionePermessoButton' in request.POST:
       print("un tasto è stato premuto 'SedeConfermaCancellazionePermessoButton'")
@@ -736,7 +845,7 @@ def editAmministratore(request):
 
     if 'AmministratoreDirittiAziendaButton' in request.POST:
       print("premuto: 'AmministratoreDirittiAziendaButton'")
-      return HttpResponseRedirect(reverse("amministratore:editAZP"))
+      return HttpResponseRedirect(reverse("amministratore:editAZ"))
 
     if 'AmministratoreUpdateButton' in request.POST:
       formamministratore = FormAmministratore(request.POST)

+ 54 - 7
sicurezza/views.py

@@ -404,6 +404,9 @@ def getSEP(sede=None,amministratore=None,permesso=None):
   if isinstance(permesso,str):
     print('si tratta di una str, quindi dobbiamo cercare il valore')
     per = Permesso.objects.get(nome=permesso)
+  if isinstance(permesso,int):
+    print('si tratta di un int, quindi cerchiamo per chiave')
+    per = Permesso.objects.get(pk=permesso)
 
   if not sed:
      print('sede non presente')
@@ -500,16 +503,17 @@ def delAMP(amministratore=None,permesso=None):
     print('si tratta di una str, quindi dobbiamo cercare il valore')
     per = Permesso.objects.get(nome=permesso)
 
-  if not per or not amm:
+  if not amm:
     return False
 
-  p = None
-  try:
+  if per:
     p = AMP.objects.filter(amministratore=amm).filter(permesso=per)
-  except AMP.DoesNotExist as dne:
-    print('errore: record non trovato')
-    return False
-  p.delete()
+    for i in p:
+      i.delete()
+  else:
+    p = AMP.objects.filter(amministratore=amm)
+    for i in p:
+      i.delete()
   return True
 
 # setAZP: imposta i permessi a livello azienda
@@ -564,6 +568,49 @@ def setAZP(azienda=None,amministratore=None,permesso=None):
     print(ie)
   return [p,]
 
+def delAZP(azienda=None, amministratore=None,permesso=None):
+  # rimuovere un permesso a un amministratore
+
+  if isinstance(azienda,Azienda):
+    print('si tratta di una instanza, quindi possiamo direttamente accedere')
+    azi = azienda
+  if isinstance(azienda,int):
+    print('si tratta di un int, quindi dobbiamo cercare il valore')
+    azi = Azienda.objects.get(pk=azienda)
+
+  if isinstance(amministratore,Amministratore):
+    print('si tratta di una istanza, quindi possiamo direttamente accedere')
+    amm = amministratore
+  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')
+    per = permesso
+  if isinstance(permesso,int):
+    print('si tratta di un int, quindi dobbiamo cercare il valore')
+    per = Permesso.objects.get(pk=permesso)
+  if isinstance(permesso,str):
+    print('si tratta di una str, quindi dobbiamo cercare il valore')
+    per = Permesso.objects.get(nome=permesso)
+
+  if not azi or not amm:
+    return False
+
+  if per: #permesso presente, quindi si rimuove solo quel permesso
+    p = None
+    p = AZP.objects.filter(amministratore=amm).filter(azienda=azi).filter(permesso=per)
+    for i in p:
+      p.delete()
+  else: #si rimuovo tutti i permessi per quell'azienda
+    p = AZP.objects.filter(amministratore=amm).filter(azienda=azi)
+    for i in p:
+      i.delete()
+  return True
+
 # setSEP: imposta i permessi a livello sede
 def setSEP(sede=None,amministratore=None,permesso=None):
   print('setSEP',sede,type(sede),amministratore,type(amministratore),permesso,type(permesso))