Bladeren bron

Merge remote-tracking branch 'origin/amministratore'

da amministratore a origin
mauro 6 maanden geleden
bovenliggende
commit
87057bb32e

+ 30 - 5
amministratore/forms.py

@@ -49,21 +49,46 @@ 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.choices)
+    self.fields['aziendadaaggiungere'] = forms.ChoiceField(required=True,choices=self.c(azienda))
+
+  def c(self,azienda):
+    for u in azienda:
+      self.choices.append((u.id,u.nome),)
+    print('choices',len(self.choices))
+    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))
 
   def c(self,azienda):
+    choices=list()
     print("aziende passate a fam",len(azienda))
     for a in azienda:
-      print(a.id,a.nome)
-      self.choices.append((a.id,a.id),)
-    print('choices',self.choices,len(self.choices))
+      choices.append((a.id,a.id),)
+    return choices
 
 class FormPermessoDaAggiungere(forms.Form):
+  choices = list()
   def __init__(self,*args,**kwargs):
     forms.Form.__init__(self,*args,**kwargs)
-    self.fields['permessodaaggiungere'] = forms.IntegerField(required=True)
+    self.fields['ListaPermessiDaAggiungere'] = forms.ChoiceField(required=True,choices=self.choices)
+
+  def c(self,azp):
+    print("permessi passati",len(azp))
+    for a in azp:
+      self.choices.append((a.id,a.nome),)
+    print('choices',len(self.choices))
+
+class FormPermessoDaRimuovere(forms.Form):
+  def __init__(self,*args,**kwargs):
+    forms.Form.__init__(self,*args,**kwargs)
+    self.fields['ConfermaCancellazionePermesso'] = forms.IntegerField(required=True)
 
 class FormSedeMancante(forms.Form):
   choices = []

+ 119 - 0
amministratore/templates/amministratore.edit.AMP.html

@@ -0,0 +1,119 @@
+{% 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 Permessi Amministrativi Assegnati
+  </div> 
+  <div>
+  Questa lista contiene i permessi assegnati a livello di amministratore.
+  i permessi di livello inferiore (azienda, sede,documento, utente) se assegnati a questo livello valgono per tutte le situazioni a seguire.
+  </div>
+
+  <form name='amministratorepermessiform' 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'>D</th>
+          </tr>
+          </thead>
+          <tbody>
+            {% for a in listapermessiassegnati %}
+              <tr>
+                <td> {{ a.nome }} </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">
+                <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 del permesso indicato?
+                </div>
+                <div class="modal-footer">
+                    {% csrf_token %}
+                    <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>
+            </div>
+          <!-- end modal -->
+            {% endfor %}
+
+	    <tr>
+                {% csrf_token %}
+	      <td>
+                <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="PermessoDaAggiungereButton" 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="Esci">
+    <div>
+    </form>
+{% endblock %}

+ 47 - 25
amministratore/templates/amministratore.edit.azienda.html → amministratore/templates/amministratore.edit.AZP.html

@@ -1,12 +1,31 @@
-<div class="tab-pane fade {% if pane == 'Azienda' %}show active{% endif %}" id="azienda-pane" role="tabpanel" aria-labelledby="azienda-tab" tabindex="0">
-  <div class="card">
-    <div class="card-header">
-      Lista Aziende Autorizzate
-    </div> 
-    <ul class="list-group list-group-flush">
-      <li class="list-group-item">
-        <table class='table table-striped table-hover'>
-          <thead class='thead-dark'>
+{% 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>
+  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>
@@ -20,10 +39,8 @@
               <tr>
                 <td> {{ a.nome }} </td>
                 <td> {{ a.partitaiva }} </td>
-		<form name="FormAziendaSelect" method="POST">
                   {% csrf_token %}
-    		  <td><button type='submit' class='btn btn-primary' name="AziendaSelect" value='{{ a.id }}'>S</button></td>
-		</form>
+    		  <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><button type='button' class='btn btn-primary' data-bs-toggle='modal' data-bs-target='#ConfirmDeleteModal{{ a.id }}' value='{{ a.id }}'>D</button></td>
               </tr>
@@ -38,18 +55,23 @@
                   </button>
                 </div>
                 <div class="modal-body">
-	          <select class="form-select" multiple aria-label="Selezione Multipla Permessi" >
+	          <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">
-                  <form name="UpdatePermessoForm" method="POST">
-                    {% csrf_token %}
-                    <button type="submit" name="UpdatePermesso" value='{{ a.id }}' class="btn btn-primary">Aggiorna Permessi</button>
-                    <button type="button" class="btn btn-primary" data-bs-dismiss="modal">Chiudi/Annulla</button>
-                  </form>
+                  <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>
@@ -71,11 +93,9 @@
                     Confermi la cancellazione dei diritti di accesso di {{ a.nome }}?
                 </div>
                 <div class="modal-footer">
-                  <form name='ConfirmDeleteModal' method='POST'>
                     {% csrf_token %}
                     <button type="submit" name="AziendaConfermaCancellazionePermesso" 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>
               </div>
             </div>
@@ -83,10 +103,9 @@
             {% endfor %}
 
 	    <tr>
-              <form name='aziendadaaggiungereform' method='POST'>
                 {% csrf_token %}
 	      <td>
-                <select class="form-select" name="aziendadaaggiungere" id="aziendadaaggiungere">
+  	        <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>
@@ -96,11 +115,14 @@
 	      <td>
 		<button type='submit' name="AziendaDaAggiungereButton" class='btn btn-primary'>Aggiungi</button>
 	      </td>
-              </form>
 	    </tr>
           </tbody>
         </table>
       </li>
     </ul>
-  </div>
-</div>
+    <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="Esci">
+    <div>
+    </form>
+{% endblock %}

+ 128 - 0
amministratore/templates/amministratore.edit.SEP.html

@@ -0,0 +1,128 @@
+{% extends 'base.html' %}
+
+{% block body %}
+
+ <div class="error">
+  <!-- errori form sede -->
+  {% if sede.errors %}
+    <div class="alert alert-danger">
+    {{ sede.errors }}
+    </div>
+  {% endif %}
+  <!-- fine zona errori -->
+  </div>
+
+  <div>
+    Lista Sedi Autorizzate
+  </div> 
+  <div>
+  Questa lista contiene le sedi 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.<br><br>
+  amministratore: {{ amministratore.login }} - {{ amministratore.nome }}.<br>
+  azienda in corso di elaborazione: {{ aziendaOnWork.nome }}
+  </div>
+
+  <form name='listasedeform' 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'>Identificativo</th>
+	    <th scope='col'>P</th>
+	    <th scope='col'>D</th>
+          </tr>
+          </thead>
+          <tbody>
+            {% for a in listasede %}
+              <tr>
+                <td> {{ a.nome }} </td>
+                <td> {{ a.identificativo }} </td>
+                  {% csrf_token %}
+		<td><button type='button' class='btn btn-primary' data-bs-toggle='modal' data-bs-target='#ConfirmUpdateModal{{ a.id }}' value='{{ a.id }}'>P</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="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 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 class="form-select" multiple aria-label="Seleziona Permessi Disponibili">
+		    {% for lp in dirittiSEDE %}
+		      <option value="{{ lp.id }}">{{ lp.nome }}</option>
+                    {% endfor %}
+		  </select>
+		</div>
+                <div class="modal-footer">
+                  <button type="submit" name="SedePermessoDeleteButton" value='{{ a.id }}' class="btn btn-primary">Rimuovi Permessi</button>
+                  <button type="submit" name="SedePermessoUpdateButton" 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">
+                <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="AziendaConfermaCancellazionePermesso" 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="aziendadaaggiungere" id="aziendadaaggiungere">
+		  <option value="">-- Scegli l'azienda da Aggiungere --</option>
+	          {% for lp in listasedediff  %}
+		  <option value="{{ lp.id }}">{{ lp.nome }} - {{ lp.identificativo}}</option>
+                    {% endfor %}
+                </select>
+	      </td>
+	      <td>
+		<button type='submit' name="SedeDaAggiungereButton" 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="Esci">
+    <div>
+    </form>
+{% endblock %}

+ 0 - 42
amministratore/templates/amministratore.edit.amministratore.edit.html

@@ -1,42 +0,0 @@
-{% extends 'base.html' %}
-
-{% block body %}
-
- <div class="error">
-  <!-- errori form sede -->
-  {% if sede.errors %}
-    <div class="alert alert-danger">
-    {{ sede.errors }}
-    </div>
-  {% endif %}
-  <!-- fine zona errori -->
-  </div>
-
-  <!-- profilo sede -->
-  <form name='AmministratoreEdit' method='post'>
-    {% csrf_token %}
-    <div class='form-group'>
-      <label for="login">Login Amministratore</label>
-      <input type='text' class='form-control form-control-lg' name='login' id='login' value='{{ amministratore.login.value }}'>
-    </div>
-    <div class='form-group'>
-      <label for="nome">Nome</label>
-      <input type='text' class='form-control form-control-lg' name='nome' id='nome' value='{{ amministratore.nome.value }}'>
-    </div>
-    <div class='form-group'>
-      <label for="mail">Email</label>
-      <input type='text' class='form-control form-control-lg' name='mail' id='mail' value='{{ amministratore.mail.value }}'>
-    </div>
-    <div class='form-group'>
-      <label for="pin">Pin/Password</label>
-      <input type='password' class='form-control form-control-lg' name='pin' id='pin' value='{{ amministratore.pin.value }}'>
-    </div>
-    <p></p>
-    <div class="btn-group">
-      <br>
-      <input type='submit' name="AmministratoreUpdateButton" class="btn btn-primary" value='Aggiorna'>
-      <input type='submit' class="btn btn-primary" name="indietro" value="Indietro">
-    </div>
-  </form>
-
-{% endblock %}

+ 0 - 3
amministratore/templates/amministratore.edit.amministratore.html

@@ -1,3 +0,0 @@
-<div class="tab-pane fade {% if pane == 'Amministratore' %}show active{% endif %}" id="amministratore-pane" role="tabpanel" aria-labelledby="amministratore-tab" tabindex="0">
-  {% include "amministratore.edit.amministratore.edit.html" %}
-</div>

+ 44 - 17
amministratore/templates/amministratore.edit.html

@@ -2,22 +2,49 @@
 
 {% block body %}
 
-<!-- Nav tabs -->
-<div class="button-group" role="tablist">
-  <button class="btn btn-primary active" id="amministratore-tab" data-bs-toggle="tab" data-bs-target="#amministratore-pane" type="button" role="tab" aria-controls="amministratore-pane" aria-selected="true">Amministratore</button>
-  <button class="btn btn-primary" id="permesso-tab" data-bs-toggle="tab" data-bs-target="#permesso-pane" type="button" role="tab" aria-controls="permesso-pane" aria-selected="true">Permessi</button>
-  <button class="btn btn-primary" id="azienda-tab" data-bs-toggle="tab" data-bs-target="#azienda-pane" type="button" role="tab" aria-controls="azienda-pane" aria-selected="true">Aziende</button>
-  <button class="btn btn-primary" id="zona-tab" data-bs-toggle="tab" data-bs-target="#zona-pane" type="button" role="tab" aria-controls="zona-pane" aria-selected="true">Sedi</button>
-  <button class="btn btn-outline-primary" id="return-tab" data-bs-toggle="tab" data-bs-target="#return-pane" type="button" role="tab" aria-controls="return-pane" aria-selected="true"><a href="{% url 'amministratore:welcome' %}">Indietro</a></button>
-</div>
-<!-- end nav tabs -->
-<div>&nbsp;</div>
-<!-- Tab panes -->
-<div class="tab-content" id='mycontent'>
-  {% include 'amministratore.edit.amministratore.html' %}
-  {% include 'amministratore.edit.permesso.html' %}
-  {% include 'amministratore.edit.azienda.html' %}
-  {% include 'amministratore.edit.sede.html' %}
-</div>
+ <div class="error">
+  <!-- errori form sede -->
+  {% if sede.errors %}
+    <div class="alert alert-danger">
+    {{ sede.errors }}
+    </div>
+  {% endif %}
+  <!-- fine zona errori -->
+  </div>
+
+  <!-- profilo amministratore -->
+  <form name='AmministratoreEdit' method='post'>
+    {% csrf_token %}
+    <div class='form-group'>
+      <label for="login">Login Amministratore</label>
+      <input type='text' class='form-control form-control-lg' name='login' id='login' value='{{ amministratore.login.value }}'>
+    </div>
+    <div class='form-group'>
+      <label for="nome">Nome</label>
+      <input type='text' class='form-control form-control-lg' name='nome' id='nome' value='{{ amministratore.nome.value }}'>
+    </div>
+    <div class='form-group'>
+      <label for="mail">Email</label>
+      <input type='text' class='form-control form-control-lg' name='mail' id='mail' value='{{ amministratore.mail.value }}'>
+    </div>
+    <div class='form-group'>
+      <label for="pin">Pin/Password</label>
+      <input type='password' class='form-control form-control-lg' name='pin' id='pin' value='{{ amministratore.pin.value }}'>
+    </div>
+    <p></p>
+    <div class="form-check">
+      <input class="form-check-input" type="checkbox" value="" id="amministratoreCancella" name="AmministratoreCancellaButton" {% if admin.sola_lettura %} disabled {% endif %}>
+      <label class="form-check-label" for="amministratoreCancella">Cancella Amministratore! Operazione NON revocabile e NON Recuperabile!</label>
+    </div>
+    <p></p>
+    <div class="btn-group">
+      <br>
+      <input type='submit' name="AmministratoreUpdateButton" class="btn btn-primary" value='Aggiorna'>
+      {# ordine: azienda, sede, amministratore #}
+      <input type='submit' name='AmministratoreDirittiAmministratoreButton' class='btn btn-primary' value="Diritti Amministratore">
+      <input type='submit' name="AmministratoreDirittiAziendaButton" class="btn btn-primary" value="Aziende">
+      <input type='submit' class="btn btn-primary" name="indietro" value="Indietro">
+    </div>
+  </form>
 
 {% endblock %}

+ 25 - 3
amministratore/templates/amministratore.edit.permesso.html → amministratore/templates/amministratore.edit.pam.html

@@ -1,6 +1,18 @@
-<div class="tab-pane fade {% if pane == 'Permesso' %}show active{% endif %}" id="permesso-pane" role="tabpanel" aria-labelledby="permesso-tab" tabindex="1">
-  <div class="card">
-    <div class="card-header">
+{% extends 'base.html' %}
+
+{% block body %}
+
+ <div class="error">
+  <!-- errori form sede -->
+  {% if sede.errors %}
+    <div class="alert alert-danger">
+    {{ sede.errors }}
+    </div>
+  {% endif %}
+  <!-- fine zona errori -->
+  </div>
+
+    <div>
       Lista dei permessi generici assegnati all'utente <b>{{ amministratore.nome.value }}</b>:
     </div> 
     <ul class="list-group list-group-flush">
@@ -66,3 +78,13 @@
     </ul>
   </div>
 </div>
+
+    <div class="btn-group">
+      <br>
+      <input type='submit' name="AmministratoreUpdateButton" class="btn btn-primary" value='Aggiorna'>
+      {# ordine: azienda, sede, amministratore #}
+      <input type='submit' name="AmministratoreDirittiAziendaButton" class="btn btn-primary" value="Avanti">
+      <input type='submit' class="btn btn-primary" name="indietro" value="Indietro">
+    </div>
+
+{% endblock %}

+ 24 - 5
amministratore/templates/amministratore.edit.sede.html → amministratore/templates/amministratore.edit.pse.html

@@ -1,6 +1,18 @@
-<div class="tab-pane fade {% if pane == 'Sede' %}show active{% endif %}" id="zona-pane" role="tabpanel" aria-labelledby="zona-tab" tabindex="0">
-  <div class="card">
-    <div class="card-header">
+{% extends 'base.html' %}
+
+{% block body %}
+
+ <div class="error">
+  <!-- errori form sede -->
+  {% if sede.errors %}
+    <div class="alert alert-danger">
+    {{ sede.errors }}
+    </div>
+  {% endif %}
+  <!-- fine zona errori -->
+  </div>
+
+  <div">
       Lista Zone Autorizzate
     </div> 
     <ul class="list-group list-group-flush">
@@ -94,5 +106,12 @@
         </table>
       </li>
     </ul>
-  </div>
-</div>
+    <div class="btn-group">
+      <br>
+      <input type='submit' name="AmministratoreUpdateButton" class="btn btn-primary" value='Aggiorna'>
+      {# ordine: azienda, sede, amministratore #}
+      <input type='submit' name="AmministratoreDirittiAziendaButton" class="btn btn-primary" value="Avanti">
+      <input type='submit' class="btn btn-primary" name="indietro" value="Indietro">
+    </div>
+
+{% end block %}

+ 3 - 0
amministratore/urls.py

@@ -5,6 +5,9 @@ app_name='amministratore'
 urlpatterns = [
   path('welcome',views.welcome,name='welcome'),
   path('edit',views.edit,name='edit'),
+  path('editAMP',views.editAMP,name='editAMP'),
+  path('editAZP',views.editAZP,name='editAZP'),
+  path('editSEP',views.editSEP,name="editSEP"),
   path('editAmministratore',views.editAmministratore,name='editAmministratore'),
 ]
 

+ 320 - 59
amministratore/views.py

@@ -8,6 +8,7 @@ from django.http import HttpResponse,HttpResponseRedirect
 from django.urls import reverse
 from sicurezza.views import *
 from config.datafunc import *
+from django.db.models import Q
 
 def welcome(request):
   if not 'AdminId' in request.session:
@@ -46,25 +47,6 @@ def welcome(request):
   print('permessi assegnati:',data['permesso'])
   ### permessi fine ###
 
-  '''
-  ### ricerca delle aziende valide per questo amministratore 
-  assegnazioneazienda = listaAZP(data['admin'])[0]
-  print('assegnazioneazienda',len(assegnazioneazienda))
-  if len(assegnazioneazienda) == 1:
-    ### c'e' una sola azienda, 
-    print(type(assegnazioneazienda[0]))
-    azienda = Azienda.objects.get(pk=assegnazioneazienda[0].id)
-    data['azienda'] = azienda
-    request.session['AziendaId'] = azienda.id
-    print("Singola Azienda",azienda.nome)
-
-  ### lista delle sedi valida per questo amministratore
-  assegnazionesede=None
-  if data['azienda']:
-    assegnazionesede = listaSEP(data['admin'],data['azienda'],"SEDE")
-    print("assegnazionesede",len(assegnazionesede))
-  '''
-
   amministratorelista = Amministratore.objects.all()
   data['amministratorelista'] = amministratorelista
   print(len(amministratorelista))
@@ -93,7 +75,6 @@ def welcome(request):
     data['amministratorelista'] = tmp
 
   data['amministratorelista'] = sorted(data['amministratorelista'], key = lambda x: x.login,reverse=False)
-
   data['amministratorelistalen'] = len(data['amministratorelista'])
 
   if request.method == 'POST':
@@ -107,7 +88,6 @@ def welcome(request):
       print('richiesto nuovo record')
       return HttpResponseRedirect(reverse('amministratore:edit'))
 
-
     formamministratoreeditid = FormAmministratoreEditId(request.POST,amministratore=data['amministratorelista'])
     if formamministratoreeditid.is_valid():
       scelta = formamministratoreeditid.cleaned_data.get('scelta')
@@ -118,7 +98,7 @@ def welcome(request):
   #data['amministratorelista'] = amministratorelista
   #data['numeroRecordAmministratore'] = len(amministratorelista)
 
-  print(data)
+  #print(data)
   return render(request,'amministratore.welcome.html',data)
 
 def edit(request):
@@ -137,7 +117,6 @@ def edit(request):
   data = dict()
   data['HeaderTitle'] = getConfig('HeaderTitle')
   data['Navbar']=False
-  data['pane'] = "Amministratore"
 
   if 'AdminId' in request.session:
     data['AdminId'] = request.session['AdminId']
@@ -180,7 +159,33 @@ def edit(request):
     print("qualcosa e' stato premuto")
   
     if 'indietro' in request.POST:
-        return HttpResponseRedirect(reverse("amministratore:welcome"))
+      return HttpResponseRedirect(reverse("amministratore:welcome"))
+
+    if 'AmministratoreDirittiAmministratoreButton' in request.POST:
+      print("Un tasto è stato premuto 'AmministratoreDirittiAmministratoreButton'")
+      return HttpResponseRedirect(reverse("amministratore:editAMP"))
+
+    if 'AmministratoreCancellaButton' in request.POST:
+      print('editAmministratore: premuto "AmministratoreCancellaButton"')
+      amp = amministratore.amp_set.all()
+      azp = amministratore.azp_set.all()
+      sep = amministratore.sep_set.all()
+      print(amministratore.nome)
+      print(len(amp),amp)
+      print(len(azp),azp)
+      print(len(sep),sep)
+      for x in sep:
+        x.delete()
+      for x in azp:
+        x.delete()
+      for x in amp:
+        x.delete()
+      amministratore.delete()
+      return HttpResponseRedirect(reverse("amministratore:welcome"))
+    
+    if 'AmministratoreDirittiAziendaButton' in request.POST:
+      print('edit azienda: premuto "AmministratoreDirittiAziendaButton"')
+      return HttpResponseRedirect(reverse("amministratore:editAZP"))
 
     if 'AmministratoreUpdateButton' in request.POST:
       formamministratore = FormAmministratore(request.POST)
@@ -191,11 +196,294 @@ def edit(request):
         amministratore.mail=formamministratore.cleaned_data.get('mail')
         amministratore.pin=formamministratore.cleaned_data.get('pin')
         amministratore.save()
+
         print('id amministratore salvato/nuovo',amministratore.id,":",amministratore.nome)
         request.session['AmministratoreEditId'] = amministratore.id
        
         return HttpResponseRedirect(reverse('amministratore:welcome'))
 
+  tmp = dict()
+  tmp['nome'] = amministratore.nome
+  tmp['login'] = amministratore.login
+  tmp['pin'] = amministratore.pin
+  tmp['mail'] = amministratore.mail
+  data['amministratore'] = FormAmministratore(tmp)
+
+  if amministratore.id:
+    # elenco aziende autorizzate per amministratore
+    data['listaazienda'] = listaAZP(amministratore)[0]
+    print('lista azienda',len(data['listaazienda']))
+    # elenco dei permessi per amministratore
+    data['listapermesso'] = getAMP(amministratore)[2]
+    print('lista permesso',len(data['listapermesso']))
+
+    #calcola la differenza tra i permessi assegnati e quelli disponibili
+    data['listapermessotutto'] = getPermesso()
+
+    data['listapermessomancante'] = getAMP(amministratore)[1]
+    data['listapermessodiff'] = list(set(data['listapermessotutto']) - set(data['listapermessomancante']))
+    print('Quanti ne mancano',len(data['listapermessodiff']),data['listapermessodiff'])
+
+    #calcolo la differenza tra tutte le aziende e le aziende sottoposte a permesso
+    listaaziendatutte = Azienda.objects.all()
+    data['listaaziendadiff'] = list(set(listaaziendatutte)-set(data['listaazienda']))
+    print('Differenza aziende',len(data['listaaziendadiff']))
+ 
+  return render(request,'amministratore.edit.html',data)
+
+def editAMP(request):
+  ### consente di aggiornare i diritti a livello di amministratore ###
+
+  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['permesso'] = getAMP(admin)[0]
+
+  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
+
+  data['listapermessiassegnati'] = getAMP(data['amministratore'])[1]
+  print('listapermessiassegnati',data['listapermessiassegnati'])
+  data['listapermessiassegnabili'] = Permesso.objects.all()
+  print('listapermessiassegnabili',data['listapermessiassegnabili'])
+
+  if request.method == 'POST':
+
+    if 'AmministratoreButton' in request.POST:
+      print("Un tasto è stato premuto 'AmministratoreButton'")
+      return HttpResponseRedirect(reverse("amministratore:edit"))
+
+    formpermessodaaggiungere = FormPermessoDaAggiungere(request.POST)
+    formpermessodaaggiungere.c(data['listapermessiassegnabili'])
+
+    if formpermessodaaggiungere.is_valid():
+      print('formpermessodaaggiungere valido')
+      permesso = formpermessodaaggiungere.cleaned_data.get('ListaPermessiDaAggiungere')
+
+      print('*' * 10)
+      setAMP(amministratore,int(permesso))
+      print('*' * 10)
+
+    formpermessodarimuovere = FormPermessoDaRimuovere(request.POST)
+    if formpermessodarimuovere.is_valid():
+      print('formpermessodacancellare valido')
+      permesso = formpermessodarimuovere.cleaned_data.get('ConfermaCancellazionePermesso')
+      print('ConfermaCancellazionePermesso',permesso)
+      delAMP(amministratore,permesso)
+
+  data['listapermessiassegnati'] = getAMP(data['amministratore'])[1]
+  print('listapermessiassegnati',data['listapermessiassegnati'])
+  data['listapermessiassegnabili'] = Permesso.objects.all()
+  print('listapermessiassegnabili',data['listapermessiassegnabili'])
+
+  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.
+
+  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['permesso'] = getAMP(admin)[0]
+
+  listaaziendatutte = Azienda.objects.all()
+
+  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 amministratore: 
+    data['listaazienda'] = listaAZP(amministratore)[0]
+    data['listaaziendadiff'] = list(set(listaaziendatutte)-set(data['listaazienda']))
+  else:
+    data['listaaziendadiff'] = list(set(listaaziendatutte))
+
+  #parliamo di diritti assegnati all'azienda.
+  data['dirittiAZIENDA'] = Permesso.objects.filter(Q(classe='AZI')|Q(classe='SED'))
+  print('dirittiAZIENDA',len(data['dirittiAZIENDA']))
+
+  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 'AziendaDaAggiungereButton' in request.POST:
+      print('un tasto è stato premuto AziendaDaAggiungereButton')
+      formaziendadaaggiungere = FormAziendaDaAggiungere(request.POST,azienda=listaaziendatutte)
+      if formaziendadaaggiungere.is_valid():
+        print('AziendaDaAggiungere, form valida')
+        azienda = formaziendadaaggiungere.cleaned_data.get('ListaAziendaDaAggiungere')
+        print(azienda)
+        setAZP(azienda,amministratore,'AZIENDA')
+      else:
+        print('AziendaDaAggiungere, form non valido')
+
+    if 'SedeButton' in request.POST:
+      print("Un tasto è stato premuto 'SedeButton'")
+      azienda = request.POST.get('SedeButton')
+      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 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.AZP.html',data)
+
+def editSEP(request):
+  ### edit diritti associati alla sede
+  ### in questa sezione procediamo con l'assegnare o rimuovere i diritti di questo amministratore 
+  ### per le sedi 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 not 'EditAziendaId' in request.session:
+    HttpResponseRedirect(reverse("amministratore:editAZP"))
+
+  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['permesso'] = getAMP(admin)[0]
+
+  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:editSEP"))
+
+    print('amministratore',amministratore.id,amministratore.login,amministratore.nome)
+  data['amministratore'] = amministratore
+
+  azienda = Azienda.objects.get(pk=request.session.get('EditAziendaId'))
+  print('azienda',azienda.nome)
+  data['aziendaOnWork'] = azienda
+
+  data['listasede'] = listaSEP(azienda,amministratore.id,"SEDE")[0]
+  print("data['listasede']",len(data['listasede']))
+
+  listasedetutte = azienda.sede_set.all()
+  print('listasedetutte',len(listasedetutte))
+
+  data['listasedediff'] = list(set(listasedetutte)-set(data['listasede']))
+  #data['listasedediff'] = listasedetutte
+  print("data['listasedediff']",len(data['listasedediff']))
+
+  # parliamo di diritti relativi alle sedi
+  data['dirittiSEDE'] = Permesso.objects.filter(classe='SED')
+  print('dirittiSEDE',len(data['dirittiSEDE']))
+
+  print('minchia')
+  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"))
+
+  return render(request,'amministratore.edit.SEP.html',data)
+
+'''
     if 'ConfermaCancellazionePermessoXAmministratore' in request.POST:
       print("Premuto tasto ConfermaCancellazionePermessoXAmministratore")
       formcancellapermessoxamministratore = FormCancellaPermessiXAmministratore(request.POST)
@@ -255,11 +543,10 @@ def edit(request):
     else:
       data['listaaziendadiff'] = list(set(listaaziendatutte))
 
-
     if 'AziendaDaAggiungereButton' in request.POST:
       formaziendamancante=FormAziendaMancante(request.POST)
       formaziendamancante.c(data['listaaziendadiff'])
-      print('fam',formaziendamancante)
+      #print('fam',formaziendamancante)
       if formaziendamancante.is_valid():
         print('form valida formaziendamancante')
         aziendadaaggiungere = formaziendamancante.cleaned_data.get('aziendadaaggiungere')
@@ -319,38 +606,8 @@ def edit(request):
         for lsm in listasedemancante:
           setSEP(Sede.objects.get(pk=lsm),amministratore,Permesso.objects.get(nome="SEDE"))
 
-      else: print(formsedemancante)
-
-      data['pane'] = 'Sede'
-
-  tmp = dict()
-  tmp['nome'] = amministratore.nome
-  tmp['login'] = amministratore.login
-  tmp['pin'] = amministratore.pin
-  tmp['mail'] = amministratore.mail
-  data['amministratore'] = FormAmministratore(tmp)
-
-  if amministratore.id:
-    # elenco aziende autorizzate per amministratore
-    data['listaazienda'] = listaAZP(amministratore)[0]
-    print('lista azienda',len(data['listaazienda']))
-    # elenco dei permessi per amministratore
-    data['listapermesso'] = getAMP(amministratore)[2]
-    print('lista permesso',len(data['listapermesso']))
-
-    #calcola la differenza tra i permessi assegnati e quelli disponibili
-    data['listapermessotutto'] = getPermesso()
-
-    data['listapermessomancante'] = getAMP(amministratore)[1]
-    data['listapermessodiff'] = list(set(data['listapermessotutto']) - set(data['listapermessomancante']))
-    print('Quanti ne mancano',len(data['listapermessodiff']),data['listapermessodiff'])
-
-    #calcolo la differenza tra tutte le aziende e le aziende sottoposte a permesso
-    listaaziendatutte = Azienda.objects.all()
-    data['listaaziendadiff'] = list(set(listaaziendatutte)-set(data['listaazienda']))
-    print('Differenza aziende',len(data['listaaziendadiff']))
- 
-  return render(request,'amministratore.edit.html',data)
+      #else: print(formsedemancante)
+'''
 
 ### editing amministratore senza ulteriori funzioni ###
 def editAmministratore(request):
@@ -389,6 +646,10 @@ def editAmministratore(request):
     if 'indietro' in request.POST:
         return HttpResponseRedirect(reverse("azienda:welcome"))
 
+    if 'AmministratoreDirittiAziendaButton' in request.POST:
+      print("premuto: 'AmministratoreDirittiAziendaButton'")
+      return HttpResponseRedirect(reverse("amministratore:editAZP"))
+
     if 'AmministratoreUpdateButton' in request.POST:
       formamministratore = FormAmministratore(request.POST)
       if formamministratore.is_valid():
@@ -407,4 +668,4 @@ def editAmministratore(request):
   tmp['mail'] = amministratore.mail
   data['amministratore'] = FormAmministratore(tmp)
 
-  return render(request,'amministratore.edit.amministratore.edit.html',data)
+  return render(request,'amministratore.edit.html',data)

+ 13 - 0
azienda/forms.py

@@ -49,6 +49,19 @@ class formSedePermessi(forms.Form):
     print('choices lunghezza',len(self.choices))
     return self.choices
 
+class formSedeAmministratoreSorgente(forms.Form):
+  choices = []
+  def __init__(self,*args,amministratori=[],permessi=[],**kwargs):
+    forms.Form.__init__(self,*args,**kwargs)
+    self.fields['ListaAmministratori'] = forms.MultipleChoiceField(required=True,choices=self.c(amministratori))
+    self.fields['ListaAmministratoriSorgente'] = 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))
+    return self.choices
+
 class formPinMail(forms.Form):
   def __init__(self,*args,**kwargs):
     forms.Form.__init__(self,*args,**kwargs)

+ 1 - 1
azienda/templates/azienda.editAzienda.html

@@ -99,7 +99,7 @@
     <div class="btn-group">
       {# sperimentale: "avanti" per impostare i diritti amministratore #}
       <button type='submit' class="btn btn-primary" name='AggiornaAziendaButton' value='AggiornaAzienda' {% if admin.sola_lettura %} disabled {% endif %}>Aggiorna/Salva</button>
-      {% if aziendaprensete %} <button type='submit' class="btn btn-primary" name="AggiornaDocumentoButton" value="AggiornaDocumento">Documenti Azienda</button> {% endif %}
+      {% if aziendapresente %} <button type='submit' class="btn btn-primary" name="AggiornaDocumentoButton" value="AggiornaDocumento">Documenti Azienda</button> {% endif %}
       {% if aziendapresente %} <button type='submit' class="btn btn-primary" name= 'AvantiAziendaButton' value='AvantiAzienda'>Avanti/Permessi</button> {% endif %}
       <button type='submit' class="btn btn-primary" name="indietro">Indietro/Chiudi</button>
     </div>

+ 12 - 3
azienda/templates/azienda.editSede.permessi.html

@@ -86,16 +86,25 @@
 		  id="ListaPermessi">
 		    <option value="">-- Permessi disponibili --</option>
                     {% for lp in listaPermessoDaAggiungere %}
-		      <option value="{{ lp.id }}">{{ lp.classe }} - {{ lp.nome }}</option>
+		      <option value="{{ lp.id }}">{{ lp.classe }} - {{ lp.nome }}"</option>
 		    {% endfor %}
 		  </select>
 		</td>
 		<td>
                   <button type='submit' class='btn btn-primary' name='PermessoDaAggiungereButton'>Aggiungi</button>
-                  <button type='submit' class='btn btn-primary' name='AssegnaIdenticiPermessiButton'>Copia Permessi</button>
+                  <button type='submit' class='btn btn-primary' name='AssegnaIdenticiPermessiButton'>Copia Permessi da</button>
                 </td>
+		<td>
+		  <select class="form-select"
+		  name="ListaAmministratoriSorgente"
+		  id="ListaAmministratoriSorgente">
+		    <option value="">-- Amministratori Presenti --</option>
+                    {% for lp in listaAmministratoreSorgente %}
+		      <option value="{{ lp.amministratore.id }}">{{ lp.amministratore.nome }}</option>
+		    {% endfor %}
+		  </select>
+		</td>
               </tr> 
-
           </tbody>
         </table>
       </li>

+ 26 - 4
azienda/views.py

@@ -276,14 +276,14 @@ def editAzienda(request):
 
   ### azienda su cui effettuare le operazioni
   azienda = Azienda()
-  aziendapresente=False
+  data['aziendapresente'] = False
 
   if 'AziendaIdEdit' in request.session:
     print('trovato riferimento AziendaIdEdit',request.session.get('AziendaIdEdit'))
     azid = request.session.get('AziendaIdEdit')
     try:
       azienda = Azienda.objects.get(pk=azid)
-      aziendapresente = True
+      data['aziendapresente']=True
       print('azienda trovata',azienda.nome)
     except Azienda.DoesNotExist as dnf:
       print(dnf)
@@ -313,7 +313,7 @@ def editAzienda(request):
         print("####### azienda.mail",azienda.mail)
         try:
           azienda.save()
-          aziendapresente=True
+          data['aziendapresente']=True
         except IntegrityError as ie:
           print("Errore, azienda gia' presente:",azienda.nome,azienda.partitaiva)
           return HttpResponseRedirect(reverse('azienda:welcome'))
@@ -363,7 +363,6 @@ def editAzienda(request):
             setAZP(azienda,data['admin'],"UTENTE.EDIT")
 
         data['aziendaForm'] = formAzienda(request.POST)
-        if aziendapresente: data['aziendapresente']=True
 
         return render(request,'azienda.editAzienda.html',data)
       else:
@@ -689,9 +688,24 @@ def editSedePermesso(request):
  
     if 'AssegnaIdenticiPermessiButton' in request.POST:
       # print('premuto "AssegnaIdenticiPermessiButton"')
+      print("****")
+      print('sede',sede)
+      print('admin',data['admin'])
+      print(getSEP(sede,data['admin']))
+      print("****") 
+
+      formsedeamministratoresorgente = formSedeAmministratoreSorgente(request.POST)
+      formsedeamministratoresorgente.c(Amministratore.objects.all())
+      if formsedeamministratoresorgente.is_valid():
+        print('i dati inseriti sono validi')
+      else:
+        print('fail')
+      '''
       listapermessidisponibili = getSEP(sede,data['admin'])[0]
+
       print('listapermessidisponibili',listapermessidisponibili)
       formsedepermessi = formSedePermessi(request.POST,amministratori=Amministratore.objects.all(),permessi=Permesso.objects.all())
+
       if formaziendapermessi.is_valid():
         print('formSedePermessi valida')
         amministratore = formsedepermessi.cleaned_data.get('ListaAmministratori')
@@ -701,6 +715,7 @@ def editSedePermesso(request):
               setSEP(sede,a,p)
             except ValueError as ve:
               print('errore in setSEP')
+      '''
 
     if 'CancellaSedePermessiButton' in request.POST:
       print('premuto "CancellaSedePermessiButton"')
@@ -711,10 +726,17 @@ def editSedePermesso(request):
         print('Permesso Sede Amministratore trovato - cancello')
         sep.delete()
 
+  # lista degli amministratori gia presenti 
   data['listaAmministratore'] = listaAMMperSede(data['SedeId'])[1]
   data['listaAmministratore'] = sorted(data['listaAmministratore'], key = lambda x: x.amministratore.nome,reverse=False)
 
+  data['listaAmministratoreSorgente'] = list()
+  for x in data['listaAmministratore']:
+      if x not in data['listaAmministratoreSorgente']:
+        data['listaAmministratoreSorgente'].append(x)
+  
   print("listaAmministratore",len(data['listaAmministratore']))
+  print("listaAmministratoreSorgente",len(data['listaAmministratoreSorgente']))
 
   data['listaAmministratoreDaAggiungere'] = Amministratore.objects.all()
   data['listaPermessoDaAggiungere'] = Permesso.objects.filter(Q(classe="SED")|Q(classe="DOC")|Q(classe="UTE"))

+ 1 - 1
gd/settings.py

@@ -130,7 +130,7 @@ STATIC_URL = 'static/'
 
 DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField'
 
-FORCE_SCRIPT_NAME = '/gd'
+#FORCE_SCRIPT_NAME = '/gd'
 
 #la sessione comunque scade alla chiusura del browser
 SESSION_EXPIRE_AT_BROWSER_CLOSE=True

+ 78 - 38
sicurezza/views.py

@@ -46,8 +46,6 @@ def getP(azienda=None,sede=None,amministratore=None,permesso=None):
   elif isinstance(azienda,int):
     print('azienda: int')
     azi = Azienda.objects.get(pk=azienda)
-  else:
-    azi = None
             
   ### permessi inizio ###
   data = list()
@@ -64,6 +62,7 @@ def getP(azienda=None,sede=None,amministratore=None,permesso=None):
         if t not in data:
           data.append(t)
   print("getP Permessi:",data)
+
   return data
   
 # getAMP: riporta l'elenco dei permessi per amministratore
@@ -81,10 +80,11 @@ def getAMP(amministratore=None):
   oggettoPermesso = list()
   oggettoAMM = list()
 
-  for p in amm.amp_set.all():
-    permessi.append(p.permesso.nome)
-    oggettoPermesso.append(p.permesso)
-    oggettoAMM.append(p)
+  if amm:
+    for p in amm.amp_set.all():
+      permessi.append(p.permesso.nome)
+      oggettoPermesso.append(p.permesso)
+      oggettoAMM.append(p)
 
   print('permessi disponibili',len(permessi))
   #for i in permessi: print(i,)
@@ -297,10 +297,10 @@ def listaSEP(azienda=None,amministratore=None,permesso=None):
   elif isinstance(permesso,str):
     print('si tratta di una str, quindi dobbiamo cercare il valore')
     per = Permesso.objects.get(nome=permesso)
+    print('permesso trovato',per.nome)
   else:
     per = None
-    
-  print(amm,azi)
+
   if not amm: 
     print('problema con la definizione di amministratore')
     return []
@@ -325,25 +325,27 @@ def listaSEP(azienda=None,amministratore=None,permesso=None):
   ### verificare che in lam venga effettivamente inserita solo la sede e non altri componenti
   ### sia che ci siano che non ci siano i permessi assegnati
 
-  
-  if per and per.nome not in permessi_assegnati:
-    print("per.nome non in permessi assegnati")
-    for s in sedix:
-      tmp = SEP.objects.filter(sede=s).filter(amministratore=amm).filter(permesso=per)
-      for n in tmp:
-        #lam.append({'sede':n,'permesso':per})
-        print("s:",n,per.nome,type(n))
-        lam.append(n.sede)
-  else:
-    print("per.nome in permessi assegnati")
-    #abbiamo un diritto di livello superiore
-    for s in sedix:
-      print("s:",s,type(s))
-      lam.append(s)
-      #tmp.append({'sede':s,'permesso':per})
-      #tmp.append(s)
-    #lam = tmp
- 
+  if per:
+    print('per.nome',per.nome)
+    print('per.asse',permessi_assegnati)
+    if per.nome not in permessi_assegnati:
+      print("per.nome non in permessi assegnati")
+      for s in sedix:
+        tmp = SEP.objects.filter(sede=s).filter(amministratore=amm).filter(permesso=per)
+        for n in tmp:
+          #lam.append({'sede':n,'permesso':per})
+          print("s:",n,per.nome,type(n))
+          lam.append(n.sede)
+    else:
+      print("per.nome in permessi assegnati")
+      #abbiamo un diritto di livello superiore
+      for s in sedix:
+        print("s:",s,per.nome,type(s))
+        lam.append(s)
+        #tmp.append({'sede':s,'permesso':per})
+        #tmp.append(s)
+      #lam = tmp
+
   print("lam",len(lam),type(lam))
   print(lam)
   print("****")
@@ -373,7 +375,7 @@ def getSEP(sede=None,amministratore=None):
 
   sed=None
   if isinstance(sede,Sede):
-    print('si tratta di una istanza dede')
+    print('si tratta di una istanza sede')
     sed=sede
   if isinstance(sede,int):
     print('sede: istanza int')
@@ -383,14 +385,19 @@ def getSEP(sede=None,amministratore=None):
   if isinstance(amministratore,Amministratore):
     print('si tratta di una istanza amministratore, quindi possiamo direttamente accedere')
     amm = amministratore
+    print('amministratore',amm.nome)
   if isinstance(amministratore,int):
     print('si tratta di un int, quindi dobbiamo cercare il valore')
     amm = Amministratore.objects.get(pk=amministratore)
 
   if not sed:
+     print('sede non presente')
      return []
   permessi = list()
 
+  for t in sed.sep_set.all():
+    print(t.amministratore.nome,t.permesso.nome)
+
   for p in sed.sep_set.all().filter(amministratore=amm):
     permessi.append(p.permesso.nome)
 
@@ -448,41 +455,72 @@ def setAMP(amministratore=None,permesso=None):
     print(ie)
   return [p,]
 
+def delAMP(amministratore=None,permesso=None):
+  # rimuovere un permesso a un amministratore
+
+  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 per or not amm:
+    return False
+
+  p = None
+  try:
+    p = AMP.objects.filter(amministratore=amm).filter(permesso=per)
+  except AMP.DoesNotExist as dne:
+    print('errore: record non trovato')
+    return False
+  p.delete()
+  return True
+
 # setAZP: imposta i permessi a livello azienda
 def setAZP(azienda=None,amministratore=None,permesso=None):
   print('setAZP:',azienda,amministratore,permesso) 
+
   azi = None
   if isinstance(azienda,Azienda):
-    print('azienda: istanza')
     azi=azienda
+  if isinstance(azienda,str):
+    try:
+      azienda = int(azienda)
+    except ValueError as ve:
+      print(ve)
   if isinstance(azienda,int):
-    print('azienda: int')
     azi = Azienda.objects.get(pk=azienda)
 
   amm=None
   if isinstance(amministratore,Amministratore):
-    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
   if isinstance(permesso,Permesso):
-    print('permesso: istanza')
     per = permesso
   if isinstance(permesso,int):
-    print('permesso: int')
     per = Permesso.objects.get(pk=permesso)
   if isinstance(permesso,str):
-    print('permesso: str')
     per = Permesso.objects.get(nome=permesso)
     
   if not azi: print("Errore opzione azi")
@@ -490,11 +528,13 @@ def setAZP(azienda=None,amministratore=None,permesso=None):
   if not per: print("Errore opzione per")
 
   # aggiungiamo il permesso necessario
-  print('in fase di salvataggio',azi,amm,per)
+  print('in fase di salvataggio',azi,type(azi),amm,type(amm),per,type(per))
+
   p = AZP()
   p.permesso=per
   p.amministratore=amm
   p.azienda=azi
+
   try:
     p.save()
   except IntegrityError as ie:

+ 3 - 3
static/templates/base.html

@@ -18,7 +18,7 @@
   <!-- https://getbootstrap.com/docs/5.0/components/navbar/ -->
   <nav class="navbar fixed-top navbar-expand-lg navbar-light bg-light">
 
-  <div class="container-fluid">
+  <div class="container-fluid h4">
     <a class="navbar-brand" href="#"></a>
     <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
       <span class="navbar-toggler-icon"></span>
@@ -64,7 +64,7 @@
         {% endif %}
       </ul>
       <ul class="navbar-nav me-auto mb-2 mb-lg-0">
-        <li class="nav-item form-outline text-center mb-2 h2">
+        <li class="nav-item form-outline text-center mb-2 h4">
           {{ HeaderTitle }}
         </li>
       </ul>
@@ -99,7 +99,7 @@
 <!-- blocco info generali -->
 <div class='container'>
     {% block top %}
-    <div class='form-outline mb-2 text-center h3'>
+    <div class='form-outline mb-2 text-center h4'>
 	    {% if admin %} {{ admin.nome }} {% endif %}
     <!--</div>
     <div class='form-outline mb-5 text-center h3'>-->

+ 2 - 3
utente/views.py

@@ -53,7 +53,6 @@ def OrdinaUtenti(rq=None,ou=None):
     return ou
   return tmp    
 
- 
 def welcome(request):
   if not 'AdminId' in request.session or 'UserId' in request.session:
     print("Non rilevo presensa UserId e AdminId in request.session")
@@ -68,7 +67,7 @@ def welcome(request):
   else:
     data['AziendaId'] = request.session['AziendaId']
     data['azienda'] = Azienda.objects.get(pk=data['AziendaId'])
-    data['utenti'] = data['azienda'].utente_set.all().order_by('nome')
+    data['utenti'] = data['azienda'].utente_set.all().order_by('nome').filter(special=False)
     data['numeroRecordAzienda'] = len(data['utenti'])
 
   if 'AdminId' in request.session:
@@ -81,7 +80,7 @@ def welcome(request):
     print('presente SedeId',request.session['SedeId'])
     data['SedeId'] = request.session['SedeId']
     data['sede'] = Sede.objects.get(pk=request.session['SedeId'])
-    data['utenti'] = data['sede'].utente_set.all().order_by('nome')
+    data['utenti'] = data['sede'].utente_set.all().order_by('nome').filter(special=False)
   else:
     data['sede'] = None