Przeglądaj źródła

iniziato a verificare la gestione dei permessi nei vari moduli, aggiunto campo privato per i documenti

Mauro 9 miesięcy temu
rodzic
commit
f891aaa17b
44 zmienionych plików z 367 dodań i 207 usunięć
  1. 6 3
      azienda/views.py
  2. BIN
      documento/__pycache__/__init__.cpython-311.pyc
  3. BIN
      documento/__pycache__/admin.cpython-311.pyc
  4. BIN
      documento/__pycache__/apps.cpython-311.pyc
  5. BIN
      documento/__pycache__/forms.cpython-311.pyc
  6. BIN
      documento/__pycache__/managefile.cpython-311.pyc
  7. BIN
      documento/__pycache__/models.cpython-311.pyc
  8. BIN
      documento/__pycache__/urls.cpython-311.pyc
  9. BIN
      documento/__pycache__/views.cpython-311.pyc
  10. 18 0
      documento/migrations/0015_documento_privato.py
  11. BIN
      documento/migrations/__pycache__/0001_initial.cpython-311.pyc
  12. BIN
      documento/migrations/__pycache__/0002_remove_documento_utente.cpython-311.pyc
  13. BIN
      documento/migrations/__pycache__/0003_remove_documento_dataupload.cpython-311.pyc
  14. BIN
      documento/migrations/__pycache__/0004_documento_utente.cpython-311.pyc
  15. BIN
      documento/migrations/__pycache__/0005_documento_azienda.cpython-311.pyc
  16. BIN
      documento/migrations/__pycache__/0006_documento_documento_d_documen_a68d7b_idx_and_more.cpython-311.pyc
  17. BIN
      documento/migrations/__pycache__/0007_remove_documento_azienda_documento_dataupload.cpython-311.pyc
  18. BIN
      documento/migrations/__pycache__/0008_alter_documento_utente.cpython-311.pyc
  19. BIN
      documento/migrations/__pycache__/0009_documento_descrizione_alter_documento_crc.cpython-311.pyc
  20. BIN
      documento/migrations/__pycache__/0010_documento_azienda.cpython-311.pyc
  21. BIN
      documento/migrations/__pycache__/0011_documento_pertutti.cpython-311.pyc
  22. BIN
      documento/migrations/__pycache__/0012_remove_documento_pertutti.cpython-311.pyc
  23. BIN
      documento/migrations/__pycache__/0013_remove_documento_documento_d_documen_a68d7b_idx.cpython-311.pyc
  24. BIN
      documento/migrations/__pycache__/0014_remove_documento_azienda.cpython-311.pyc
  25. BIN
      documento/migrations/__pycache__/__init__.cpython-311.pyc
  26. 1 0
      documento/models.py
  27. 137 0
      documento/templates/documento.welcome.deleteold.html
  28. 4 0
      documento/templates/documento.welcome.documento.html
  29. 16 109
      documento/templates/documento.welcome.html
  30. 2 0
      documento/templates/documento.welcome.lista.html
  31. 84 0
      documento/templates/documento.welcome.upload.html
  32. 55 94
      documento/views.py
  33. BIN
      sicurezza/__pycache__/__init__.cpython-311.pyc
  34. BIN
      sicurezza/__pycache__/admin.cpython-311.pyc
  35. BIN
      sicurezza/__pycache__/apps.cpython-311.pyc
  36. BIN
      sicurezza/__pycache__/models.cpython-311.pyc
  37. BIN
      sicurezza/__pycache__/views.cpython-311.pyc
  38. BIN
      sicurezza/migrations/__pycache__/0001_initial.cpython-311.pyc
  39. BIN
      sicurezza/migrations/__pycache__/0002_azp_amministratore_sep_amministratore.cpython-311.pyc
  40. BIN
      sicurezza/migrations/__pycache__/0003_alter_amp_unique_together.cpython-311.pyc
  41. BIN
      sicurezza/migrations/__pycache__/0004_alter_azp_unique_together_alter_sep_unique_together.cpython-311.pyc
  42. BIN
      sicurezza/migrations/__pycache__/__init__.cpython-311.pyc
  43. 43 0
      sicurezza/views.py
  44. 1 1
      static/templates/base.html

+ 6 - 3
azienda/views.py

@@ -5,7 +5,7 @@ from .models import *
 from config.views import *
 from att.views import *
 from .forms import *
-from sicurezza.views import getAMP,getAZP,getSEP,setAZP,setSEP,listaAMMperAzienda,listaAMMperSede
+from sicurezza.views import *
 
 def welcome(request):
 
@@ -48,12 +48,15 @@ def welcome(request):
   print('permesso_sede',data['permesso_sede'])
   print('admin',admin.id,admin.nome)
 
-  assegnazioneazienda = AssegnazioneAzienda.objects.filter(amministratore=admin.id).order_by('azienda__nome')
+  #assegnazioneazienda = AssegnazioneAzienda.objects.filter(amministratore=admin.id).order_by('azienda__nome')
+  assegnazioneazienda = listaAZP(admin)[0]
   print('assegnazioneazienda',len(assegnazioneazienda))
 
   assegnazionesede=None
   if azienda:
-    assegnazionesede = AssegnazioneSede.objects.filter(amministratore=admin,azienda=azienda).order_by('sede__nome')
+    #assegnazionesede = AssegnazioneSede.objects.filter(amministratore=admin,azienda=azienda).order_by('sede__nome')
+    assegnazionesede = listaSEP(admin,azienda)
+    print("assegnazionesede",len(assegnazionesede))
 
   data['listaAttivitaxAmministrazione']=getLogxAmministrazione(admin)
 

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


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


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


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


BIN
documento/__pycache__/managefile.cpython-311.pyc


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


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


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


+ 18 - 0
documento/migrations/0015_documento_privato.py

@@ -0,0 +1,18 @@
+# Generated by Django 5.1.2 on 2025-02-13 21:21
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('documento', '0014_remove_documento_azienda'),
+    ]
+
+    operations = [
+        migrations.AddField(
+            model_name='documento',
+            name='privato',
+            field=models.BooleanField(default=False),
+        ),
+    ]

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


BIN
documento/migrations/__pycache__/0002_remove_documento_utente.cpython-311.pyc


BIN
documento/migrations/__pycache__/0003_remove_documento_dataupload.cpython-311.pyc


BIN
documento/migrations/__pycache__/0004_documento_utente.cpython-311.pyc


BIN
documento/migrations/__pycache__/0005_documento_azienda.cpython-311.pyc


BIN
documento/migrations/__pycache__/0006_documento_documento_d_documen_a68d7b_idx_and_more.cpython-311.pyc


BIN
documento/migrations/__pycache__/0007_remove_documento_azienda_documento_dataupload.cpython-311.pyc


BIN
documento/migrations/__pycache__/0008_alter_documento_utente.cpython-311.pyc


BIN
documento/migrations/__pycache__/0009_documento_descrizione_alter_documento_crc.cpython-311.pyc


BIN
documento/migrations/__pycache__/0010_documento_azienda.cpython-311.pyc


BIN
documento/migrations/__pycache__/0011_documento_pertutti.cpython-311.pyc


BIN
documento/migrations/__pycache__/0012_remove_documento_pertutti.cpython-311.pyc


BIN
documento/migrations/__pycache__/0013_remove_documento_documento_d_documen_a68d7b_idx.cpython-311.pyc


BIN
documento/migrations/__pycache__/0014_remove_documento_azienda.cpython-311.pyc


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


+ 1 - 0
documento/models.py

@@ -10,6 +10,7 @@ class Documento(models.Model):
   dataupload = models.DateField(null=True,default=datetime.date.today)
   crc = models.CharField(max_length=256,null=False,default="")
   descrizione = models.CharField(max_length=128,null=False,default="")
+  privato = models.BooleanField(null=False,default=False)
 
   def __str__(self):
     return f"{self.id}: {self.documento}"

+ 137 - 0
documento/templates/documento.welcome.deleteold.html

@@ -0,0 +1,137 @@
+<div class="tab-pane fade {% if pane == 'Deleteold' %}show active{% endif %}" id="deleteold-pane" role="tabpanel" aria-labelledby="deleteold-tab" tabindex="2">
+
+  {% if upload_ok %}
+    <div>
+    Sono stati caricati {{ xx }} documenti.
+    Sono stati correttamente assegnati {{ xx }} documenti ai rispettivi utenti.
+    <table class='table table-striped table-hover'>
+
+    </table>
+    
+    I seguenti documenti non risultano assegnabili:
+
+    <table class='table table-striped table-hover'>
+    </table>
+
+    {% endif %}
+
+  <!-- Modal -->
+  <div class="modal fade" id="ConfirmDocumentDeleteModal" tabindex="-1" role="dialog" aria-labelledby="ConfirmDocumentDeleteLabel{{ document.id }}" aria-hidden="true">
+         <div class="modal-dialog" role="document">
+           <div class="modal-content">
+             <form name='ConfirmDeleteModal' method='POST'>
+               {% csrf_token %}
+               <div class="modal-header">
+                <h5 class="modal-title" id="ConfirmDeleteLabel">Conferma Cancellazione?</h5>
+                  <span aria-hidden="true">&times;</span>
+                </button>
+               </div>
+               <div class="modal-body">
+               Confermi la cancellazione dei vecchi documenti?<br>
+               La cancellazione è definitiva,immediata e non recuperabile
+               <label for='limite'>Documenti più vecchi di:&nbsp;</label>
+               <input type='text' name='limite' id='limite' value='{{ eol }}' maxlenght='4' size='4'>
+               <label for='limite'>giorni.</label>
+               </div>
+               <div class="modal-footer">
+                 <button type="submit" name="DeleteOldDocuments" value='{{ documento.id }}' class="btn btn-primary">Elimina Vecchi Documenti</button>
+                 <button type="button" class="btn btn-primary" data-bs-dismiss="modal">Chiudi</button>
+	       </div>
+	     </form>
+           </div>
+         </div>
+       </div>
+     </div>
+     <!-- end modal -->
+  <div><br></div>
+</div>
+{% endblock %}
+
+{% block bodybottom %}
+    <!-- tasti per il ritorno e altre funzioni generiche -->
+      <div class='card'>
+        <div class='card-body'>" 
+          <h5 class="card-title">Upload Documenti</h5>
+          <form name='upload' method='post' enctype='multipart/form-data'>
+            {% csrf_token %}
+
+   	    <div class='form-group form-inline'>
+              <label for='allegati'>Allegati:</label>
+	      <input type='file' class="btn btn-primary" name='allegati' id='allegati' value='{{ uf.allegati }}' accept='application/pdf' multiple>
+	    </div>
+	    <br>
+            <div class='form-group form-inline'>
+              <label for='descrizione'>Descrizione:&nbsp;</label>
+              <input type='text' name='descrizione' id='descrizione' value='' maxlength='120' size='80'>
+            </div>
+	    <br>
+	    <div class='form-check'>
+              <input type='checkbox' class="form-check-input" name='pertutti' id='pertutti'>
+              <label for='pertutti' class='form-check-label'>Documento in comune (un singolo documento a disposizione di tutti gli utenti)</label>
+            </div>
+            <br>
+   	    <div class='form-check'>
+	      <input type="checkbox" class="form-check-input" name="ignoraAzienda" id="ignoraAzienda">
+              <label for='ignoraAzienda' class="form-check-label">Ignora le aziende: cerca il codice fiscale ovunque.</label>
+            </div>
+            <br>
+	    <div class='form-check'>
+              <input type='checkbox' class="form-check-input" name='comunicazione' id='comunicazione'>
+              <label for='comunicazione' class='form-check-label'>Invia una comunicazione all'utente (Se l'utente ha la mail correttamente registrata)</label>
+            </div>
+
+            <div><br></div>
+
+  	    <div class='form-group form-inline'>
+	      <input type='submit' class="btn btn-primary" name="carica" value='Carica Nuovi Documenti'>
+              <button type='button' class='btn btn-primary' data-bs-toggle='modal' data-bs-target='#ConfirmDocumentDeleteModal'>Elimina Vecchi Documenti</button></td>
+	      <input type='submit' class="btn btn-primary" name='indietro' value='Indietro'>
+            </div>
+          </form>
+        </div>
+      </div>
+    <!-- fine barra tasti ritorno e utilita' -->
+
+  <div>
+  <br>
+  </div>
+
+
+
+  {% if listaok %}
+    <table class='table table-striped table-hover'>
+      <thead class='thead-dark'>
+      <tr>
+        <th scope='col'>Documento caricato con successo</th>
+      </tr>
+      </thead>
+      <tbody>
+        {% for l in listaok %}
+        <tr>
+          <td> {{ l.documento }} </td>
+        </tr>
+        {% endfor %}
+      </tbody>
+    </table>
+  {% endif %}
+
+  <div><br><br></div>
+
+  {% if listanotok %}
+    <table class='table table-striped table-hover'>
+      <thead class='thead-dark'>
+      <tr>
+        <th scope='col'>Documento non caricato perche già presente</th>
+      </tr>
+      </thead>
+      <tbody>
+        {% for l in listanotok %}
+        <tr>
+          <td> {{ l.documento }} </td>
+        </tr>
+        {% endfor %}
+      </tbody>
+    </table>
+  {% endif %}
+
+{% endblock %}

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

@@ -0,0 +1,4 @@
+<div class="tab-pane fade {% if pane == 'Documento' %}show active{% endif %}" id="documento-pane" role="tabpanel" aria-labelledby="documento-tab" tabindex="0">
+  {# il modulo di visualizzazione documenti e' condiviso con la gestione utenti #}
+  {% include 'documento.welcome.lista.html' %}  
+</div>

+ 16 - 109
documento/templates/documento.welcome.html

@@ -12,23 +12,20 @@ function toggle(source) {
 {% endblock %}
 
 {% block body %}
-  {% if upload_ok %}
-    <div>
-    Sono stati caricati {{ xx }} documenti.
-    Sono stati correttamente assegnati {{ xx }} documenti ai rispettivi utenti.
-    <table class='table table-striped table-hover'>
-
-    </table>
-    
-    I seguenti documenti non risultano assegnabili:
-
-    <table class='table table-striped table-hover'>
-    </table>
-
-    {% endif %}
-
-  {# il modulo di visualizzazione documenti e' condiviso con la gestione utenti #}
-  {% include 'documento.welcome.lista.html' %}  
+<!-- Nav tabs -->
+<div class="button-group" role="tablist">
+  <button class="btn btn-primary active" id="documento-tab" data-bs-toggle="tab" data-bs-target="#documento-pane" type="button" role="tab" aria-controls="documento-pane" aria-selected="true">Documento</button>
+  <button class="btn btn-primary" id="upload-tab" data-bs-toggle="tab" data-bs-target="#upload-pane" type="button" role="tab" aria-controls="upload-pane" aria-selected="true">Upload</button>
+  <button class="btn btn-primary" id="delete-tab" data-bs-toggle="tab" data-bs-target="#delete-pane" type="button" role="tab" aria-controls="delete-pane" aria-selected="true">Cancella Vecchi</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 'azienda:welcome' %}">Indietro</a></button>
+</div>
+<!-- end nav tabs -->
+<div>&nbsp;</div>
+<!-- Tab panes -->
+<div class="tab-content" id='mycontent'>
+  {% include 'documento.welcome.documento.html' %}
+  {% include 'documento.welcome.upload.html' %}
+</div>
 
   <!-- Modal -->
   <div class="modal fade" id="ConfirmDocumentDeleteModal" tabindex="-1" role="dialog" aria-labelledby="ConfirmDocumentDeleteLabel{{ document.id }}" aria-hidden="true">
@@ -51,102 +48,12 @@ function toggle(source) {
                <div class="modal-footer">
                  <button type="submit" name="DeleteOldDocuments" value='{{ documento.id }}' class="btn btn-primary">Elimina Vecchi Documenti</button>
                  <button type="button" class="btn btn-primary" data-bs-dismiss="modal">Chiudi</button>
-	       </div>
-	     </form>
+               </div>
+             </form>
            </div>
          </div>
        </div>
      </div>
      <!-- end modal -->
-  <div><br></div>
-
-{% endblock %}
-
-{% block bodybottom %}
-    <!-- tasti per il ritorno e altre funzioni generiche -->
-      <div class='card'>
-        <div class='card-body'>" 
-          <h5 class="card-title">Upload Documenti</h5>
-          <form name='upload' method='post' enctype='multipart/form-data'>
-            {% csrf_token %}
-
-   	    <div class='form-group form-inline'>
-              <label for='allegati'>Allegati:</label>
-	      <input type='file' class="btn btn-primary" name='allegati' id='allegati' value='{{ uf.allegati }}' accept='application/pdf' multiple>
-	    </div>
-	    <br>
-            <div class='form-group form-inline'>
-              <label for='descrizione'>Descrizione:&nbsp;</label>
-              <input type='text' name='descrizione' id='descrizione' value='' maxlength='120' size='80'>
-            </div>
-	    <br>
-	    <div class='form-check'>
-              <input type='checkbox' class="form-check-input" name='pertutti' id='pertutti'>
-              <label for='pertutti' class='form-check-label'>Documento in comune (un singolo documento a disposizione di tutti gli utenti)</label>
-            </div>
-            <br>
-   	    <div class='form-check'>
-	      <input type="checkbox" class="form-check-input" name="ignoraAzienda" id="ignoraAzienda">
-              <label for='ignoraAzienda' class="form-check-label">Ignora le aziende: cerca il codice fiscale ovunque.</label>
-            </div>
-            <br>
-	    <div class='form-check'>
-              <input type='checkbox' class="form-check-input" name='comunicazione' id='comunicazione'>
-              <label for='comunicazione' class='form-check-label'>Invia una comunicazione all'utente (Se l'utente ha la mail correttamente registrata)</label>
-            </div>
-
-            <div><br></div>
-
-  	    <div class='form-group form-inline'>
-	      <input type='submit' class="btn btn-primary" name="carica" value='Carica Nuovi Documenti'>
-              <button type='button' class='btn btn-primary' data-bs-toggle='modal' data-bs-target='#ConfirmDocumentDeleteModal'>Elimina Vecchi Documenti</button></td>
-	      <input type='submit' class="btn btn-primary" name='indietro' value='Indietro'>
-            </div>
-          </form>
-        </div>
-      </div>
-    <!-- fine barra tasti ritorno e utilita' -->
-
-  <div>
-  <br>
-  </div>
-
-
-
-  {% if listaok %}
-    <table class='table table-striped table-hover'>
-      <thead class='thead-dark'>
-      <tr>
-        <th scope='col'>Documento caricato con successo</th>
-      </tr>
-      </thead>
-      <tbody>
-        {% for l in listaok %}
-        <tr>
-          <td> {{ l.documento }} </td>
-        </tr>
-        {% endfor %}
-      </tbody>
-    </table>
-  {% endif %}
-
-  <div><br><br></div>
-
-  {% if listanotok %}
-    <table class='table table-striped table-hover'>
-      <thead class='thead-dark'>
-      <tr>
-        <th scope='col'>Documento non caricato perche già presente</th>
-      </tr>
-      </thead>
-      <tbody>
-        {% for l in listanotok %}
-        <tr>
-          <td> {{ l.documento }} </td>
-        </tr>
-        {% endfor %}
-      </tbody>
-    </table>
-  {% endif %}
 
 {% endblock %}

+ 2 - 0
documento/templates/documento.welcome.lista.html

@@ -19,6 +19,7 @@
       </thead>
       <tbody>
         {% for documento in ElencoDocumenti %}
+        {% if not permesso %}
         <tr>
           <td><input type='checkbox' class='form-check-input' value='{{ documento.id }}' name='selezione'></td>
           <td> <button type='button' class='btn btn-primary' onclick="window.open('{% url "documento:finalize" documento.id documento.utente.id%}')">Vedi</button></td>
@@ -55,6 +56,7 @@
             </div>
           </div>
           <!-- end modal -->
+        {% endif %}
         {% endfor %}
       </tbody>
     </table>

+ 84 - 0
documento/templates/documento.welcome.upload.html

@@ -0,0 +1,84 @@
+<div class="tab-pane fade {% if pane == 'Upload' %}show active{% endif %}" id="upload-pane" role="tabpanel" aria-labelledby="upload-tab" tabindex="1">
+
+  <!-- tasti per il ritorno e altre funzioni generiche -->
+  <div class='card'>
+    <div class='card-body'> 
+      <h5 class="card-title">Upload Documenti</h5>
+      <form name='upload' method='post' enctype='multipart/form-data'>
+        {% csrf_token %}
+
+        <div class='form-group form-inline'>
+          <label for='allegati'>Allegati:</label>
+          <input type='file' class="btn btn-primary" name='allegati' id='allegati' value='{{ uf.allegati }}' accept='application/pdf' multiple>
+        </div>
+        <br>
+        <div class='form-group form-inline'>
+          <label for='descrizione'>Descrizione:&nbsp;</label>
+          <input type='text' name='descrizione' id='descrizione' value='' maxlength='120' size='80'>
+        </div>
+        <br>
+        <div class='form-check'>
+          <input type='checkbox' class="form-check-input" name='pertutti' id='pertutti'>
+          <label for='pertutti' class='form-check-label'>Documento in comune (un singolo documento a disposizione di tutti gli utenti)</label>
+        </div>
+        <br>
+   	<div class='form-check'>
+	  <input type="checkbox" class="form-check-input" name="ignoraAzienda" id="ignoraAzienda">
+          <label for='ignoraAzienda' class="form-check-label">Ignora le aziende: cerca il codice fiscale ovunque.</label>
+        </div>
+        <br>
+	<div class='form-check'>
+          <input type='checkbox' class="form-check-input" name='comunicazione' id='comunicazione'>
+          <label for='comunicazione' class='form-check-label'>Invia una comunicazione all'utente (Se l'utente ha la mail correttamente registrata)</label>
+        </div>
+
+        <div><br></div>
+
+  	<div class='form-group form-inline'>
+	  <input type='submit' class="btn btn-primary" name="CaricaDocumentoButton" value='Carica Nuovi Documenti'>
+          <button type='button' class='btn btn-primary' data-bs-toggle='modal' data-bs-target='#ConfirmDocumentDeleteModal'>Elimina Vecchi Documenti</button></td>
+	 <input type='submit' class="btn btn-primary" name='indietro' value='Indietro'>
+        </div>
+      </form>
+    </div>
+  </div>
+  <!-- fine barra tasti ritorno e utilita' -->
+
+  <div><br></div>
+
+  {% if listaok %}
+    <table class='table table-striped table-hover'>
+      <thead class='thead-dark'>
+        <tr>
+          <th scope='col'>Documento caricato con successo</th>
+        </tr>
+      </thead>
+      <tbody>
+        {% for l in listaok %}
+        <tr>
+          <td> {{ l.documento }} </td>
+        </tr>
+        {% endfor %}
+      </tbody>
+    </table>
+  {% endif %}
+
+  <div><br></div>
+
+  {% if listanotok %}
+    <table class='table table-striped table-hover'>
+      <thead class='thead-dark'>
+        <tr>
+          <th scope='col'>Documento non caricato perche già presente</th>
+        </tr>
+      </thead>
+      <tbody>
+        {% for l in listanotok %}
+        <tr>
+          <td> {{ l.documento }} </td>
+        </tr>
+        {% endfor %}
+      </tbody>
+    </table>
+  {% endif %}
+</div>

+ 55 - 94
documento/views.py

@@ -29,6 +29,7 @@ def welcome(request,utente=None):
 
   data = dict()
   data['HeaderTitle'] = getConfig('HeaderTitle')
+  data['pane'] = "Documento"
 
   if not 'AziendaId' in request.session:
     print('manca azienda')
@@ -95,7 +96,6 @@ def welcome(request,utente=None):
   data['ElencoDocumenti'] = ElencoDocumenti
 
   if request.method == 'POST':
-
     if 'indietro' in request.POST:
       print("AziendaId",request.session['AziendaId'])
       print("AdminId",request.session['AdminId'])
@@ -142,6 +142,7 @@ def welcome(request,utente=None):
           print('documento',i.documento)
           delete_file(i)
           i.delete()
+      data['pane'] = "Deleteold"
 
     if 'DeleteDocument' in request.POST and request.POST.get('DeleteDocument'):
       print('Richiesta cancellazione Documento',request.POST)
@@ -154,110 +155,70 @@ def welcome(request,utente=None):
       except Documento.DoesNotExist as dne:
         print('il documento non esiste')
 
-    filecaricati = AdminUpload(request.POST,request.FILES)
-
-    if filecaricati.is_valid():
-      pertutti = filecaricati.cleaned_data.get('pertutti')
-      print('stato -pertutti-',pertutti," ",filecaricati.cleaned_data.get('pertutti'))
-      #pertutti: il documento viene messo a disposizione a tutti gli utenti, non rientra nel filtro x utente, ma solo nel filtro x azienda
+    if "CaricaDocumentoButton" in request.POST:
+      print("Premuto CaricaDocumentoButton")
+      filecaricati = AdminUpload(request.POST,request.FILES)
+      if filecaricati.is_valid():
+        pertutti = filecaricati.cleaned_data.get('pertutti')
+        print('stato -pertutti-',pertutti," ",filecaricati.cleaned_data.get('pertutti'))
+        #pertutti: il documento viene messo a disposizione a tutti gli utenti, non rientra nel filtro x utente, ma solo nel filtro x azienda
      
-      print('record filecaricati validi')
-
-      comunicazione = filecaricati.cleaned_data.get('comunicazione')
-      ignoraAzienda = filecaricati.cleaned_data.get('ignoraAzienda')
-      if 'allegati' in filecaricati.cleaned_data and filecaricati.cleaned_data.get('allegati'):
-        print('presenti documenti da allegare')
-        listadocumenti = filecaricati.cleaned_data['allegati']
-        print(listadocumenti)
-        print(type(azienda))
-        print(azienda.id)
+        print('record filecaricati validi')
+
+        comunicazione = filecaricati.cleaned_data.get('comunicazione')
+        ignoraAzienda = filecaricati.cleaned_data.get('ignoraAzienda')
+        if 'allegati' in filecaricati.cleaned_data and filecaricati.cleaned_data.get('allegati'):
+          print('presenti documenti da allegare')
+          listadocumenti = filecaricati.cleaned_data['allegati']
+          print(listadocumenti)
+          print(type(azienda))
+          print(azienda.id)
     
-        if not utente:
-          if ignoraAzienda:
-            listaok,listanotok = save_and_load_file_multiple(listadocumenti,request,Utente.objects.all(),azienda,sede,filecaricati.cleaned_data['descrizione'],admin.nome,pertutti,ignoraAzienda=ignoraAzienda)
+          if not utente:
+            if ignoraAzienda:
+              listaok,listanotok = save_and_load_file_multiple(listadocumenti,request,Utente.objects.all(),azienda,sede,filecaricati.cleaned_data['descrizione'],admin.nome,pertutti,ignoraAzienda=ignoraAzienda)
+            else:
+              listaok,listanotok = save_and_load_file_multiple(listadocumenti,request,utenti,azienda,sede,filecaricati.cleaned_data['descrizione'],admin.nome,pertutti,ignoraAzienda=ignoraAzienda)
+            data['listaok'] = listaok
+            data['listanotok'] = listanotok
           else:
-            listaok,listanotok = save_and_load_file_multiple(listadocumenti,request,utenti,azienda,sede,filecaricati.cleaned_data['descrizione'],admin.nome,pertutti,ignoraAzienda=ignoraAzienda)
+            u = Utente.objects.get(pk=uu)
+            listaok,listanotok = save_and_load_file_single(listadocumenti,request,u,data['azienda'],data['sede'],filecaricati.cleaned_data['descrizione'],data['admin'])
+          print('stato caricamenti',listaok,listanotok)
           data['listaok'] = listaok
-          data['listanotok'] = listanotok
-        else:
-          u = Utente.objects.get(pk=uu)
-          listaok,listanotok = save_and_load_file_single(listadocumenti,request,u,data['azienda'],data['sede'],filecaricati.cleaned_data['descrizione'],data['admin'])
-        print('stato caricamenti',listaok,listanotok)
-
-        data['listaok'] = listaok
-        data['listnotok'] = listaok
-
-        print('listaok',listaok)
-        print('listanotok',listanotok)
-
-      if comunicazione:
-        ### comunicazioni ###
-        sm = ServizioMail(debug=True)
-
-        try:
-          comunicazione = Comunicazione.objects.get(pk=7)
-        except Comunicazione.DoesNotExist as dne:
-          print("Record comunicazione inesistente",dne)
-        u = Utente.objects.get(pk=uu)
-        sm.set_mailfrom=comunicazione.mittente
-        sm.add_to(u.mail)
+          data['listnotok'] = listaok
 
-        sm.set_soggetto(comunicazione.soggetto)
-        sm.set_corpo(comunicazione.corpo)
+          print('listaok',listaok)
+          print('listanotok',listanotok)
 
-        sm_data = dict()
-        tmp_utente=dict() #adattamento campo utente
+        if comunicazione:
+          ### comunicazioni ###
+          sm = ServizioMail(debug=True)
 
-        tmp_utente['nome'] = u.nome
-        tmp_utente['mail'] = u.mail
-        tmp_utente['sito'] = getConfig('DefaultSite')
-        tmp_utente['titolo'] = getConfig('HeaderTitle')
-        sm_data['utente'] = tmp_utente
+          try:
+            comunicazione = Comunicazione.objects.get(pk=7)
+          except Comunicazione.DoesNotExist as dne:
+            print("Record comunicazione inesistente",dne)
+          u = Utente.objects.get(pk=uu)
+          sm.set_mailfrom=comunicazione.mittente
+          sm.add_to(u.mail)
 
-        sm.set_data(sm_data)
-        sm.send()
-      ### comunicazioni ###
+          sm.set_soggetto(comunicazione.soggetto)
+          sm.set_corpo(comunicazione.corpo)
 
-  '''
-  ElencoDocumenti = list()
-  if utente: #visualizza i documenti per l'utente
-    ElencoDocumenti = Documento.objects.filter(utente=utente).order_by("utente__nome","documento") 
-  elif sede:
-    tmpUtenti = sede.utente_set.all()
-    for t in tmpUtenti:
-      d = t.documento_set.all()
-      for id in d:
-        ElencoDocumenti.append(id)
-  else:
-    tmpUtenti = azienda.utente_set.all()
-    for t in tmpUtenti:
-      d = t.documento_set.all()
-      for id in d:
-        ElencoDocumenti.append(id)
+          sm_data = dict()
+          tmp_utente=dict() #adattamento campo utente
 
-  data['ElencoDocumenti'] = ElencoDocumenti
-  
-  if request.method == "POST":
-    if 'ScaricaSelezionati' in request.POST:
-      print('Premuto tasto Scarica Selezionati')
-      print('request',request.POST)
-      if 'select' in request.POST:
-        SelectResponse = formMultipleCheckBox(request.POST)
-        SelectResponse.c(data['ElencoDocumenti'])
-        print("SelectResponse",SelectResponse)
+          tmp_utente['nome'] = u.nome
+          tmp_utente['mail'] = u.mail
+          tmp_utente['sito'] = getConfig('DefaultSite')
+          tmp_utente['titolo'] = getConfig('HeaderTitle')
+          sm_data['utente'] = tmp_utente
 
-        if SelectResponse.is_valid():
-          select = SelectResponse.cleaned_data.get('select')
-          print('select',select,type(select))
-          (pathzipfile,filePreparato) = PrepareZipFile(select)
-          # scarica il file
-          response = None
-          with open(os.path.join(pathzipfile,filePreparato),'rb') as f:
-            response =  HttpResponse(f.read(),content_type='application/zip')
-            response['Content-Disposition'] = 'attachment; filename={}'.format(filePreparato)
-          os.unlink(os.path.join(pathzipfile,filePreparato))
-          return response
-  '''     
+          sm.set_data(sm_data)
+          sm.send()
+        ### comunicazioni ###
+      data['pane'] = "Upload"
 
   print("Numero documenti associati",len(ElencoDocumenti),len(data['ElencoDocumenti']))
 

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


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


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


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


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


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


BIN
sicurezza/migrations/__pycache__/0002_azp_amministratore_sep_amministratore.cpython-311.pyc


BIN
sicurezza/migrations/__pycache__/0003_alter_amp_unique_together.cpython-311.pyc


BIN
sicurezza/migrations/__pycache__/0004_alter_azp_unique_together_alter_sep_unique_together.cpython-311.pyc


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


+ 43 - 0
sicurezza/views.py

@@ -181,6 +181,49 @@ def listaAZP(amministratore=None):
   print('aziende disponibili',len(aziende))
   return (aziende,oggetto)
 
+# ritorna la lista delle sedi per azienda e amministratore
+def listaSEP(azienda=None,amministratore=None):
+
+  print('Parametro azienda',azienda,type(azienda))
+  azi = None
+  if isinstance(azienda,Azienda):
+    print('Azienda: instanza Azienda')
+    azi = azienda
+  if isinstance(azienda,int):
+    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')
+    amm = amministratore
+  if isinstance(amministratore,int):
+    print('amministratore: istanza int')
+    amm = Amministratore.objects.get(pk=amministratore)
+
+  print(amm,azi)
+  if not amm: 
+    print('problema con la definizione di amministratore')
+    return []
+  if not azi:
+    print('problema con la definizione di azienda')
+    return []
+
+  print('dati rilevati',amm.id,amm.login)
+
+  lam = amm.sep_set.filter(amministratore=amm,permesso__nome="AMMINISTRATORE")
+  print('lunghezza LAM',lam)
+
+  sedi = list()
+  oggetto = list()
+  for p in lam:
+    aziende.append(p.azienda)
+    oggetto.append(p)
+
+  print('aziende disponibili',len(aziende))
+  return (aziende,oggetto)
+
 #riporta l'elenco dei permessi per sede filtrato per amministratore
 def getSEP(sede=None,amministratore=None):
 

+ 1 - 1
static/templates/base.html

@@ -33,7 +33,7 @@
             <select class="form-select form-select-lg mb-1" aria-label=".form-select-lg" name="sceltaazienda" onchange="this.form.submit()">
 	      <option value=-1>Scelta Azienda</option>
               {% for a in AziendaLista %}
-	      <option value={{ a.azienda.id }} {% if a.azienda.id == azienda.id %}selected{% endif %}>{{ a.azienda.nome }}</button></option>
+	      <option value={{ a.id }} {% if a.id == azienda.id %}selected{% endif %}>{{ a.nome }}</button></option>
               {% endfor %}
               <option value=0>Nuova Azienda</option>
             </select>