Procházet zdrojové kódy

1: aggiunte funzioni - da completare - in sicurezza (caricamento
parametri)
2: unificata AziendaLista e SedeLista in documento.welcome
3: disattivati temporaneamente i criteri di sicurezza in upload
documenti

mauro před 10 měsíci
rodič
revize
a0bbbfea5f

+ 3 - 1
amministratore/views.py

@@ -23,8 +23,10 @@ def welcome(request):
   admin = Amministratore.objects.get(pk=AdminId)
   data['admin'] = admin
   print('admin',admin.id,admin.nome)
-  data['permesso'] = getAMP(admin)
 
+  data['permesso'] = getAMP(admin)
+  data['permesso_amministratore'] = getAMP(admin)
+  
   azienda = None
   if 'AziendaId' in request.session:
     AziendaId = request.session['AziendaId']

+ 3 - 15
azienda/views.py

@@ -164,27 +164,15 @@ def welcome(request):
       print(' premuto tasto Amministratore')
       return HttpResponseRedirect(reverse('amministratore:welcome'))
 
-  #################
-  #tmplist1 = dict()
-  #for tmp in assegnazioneazienda:
-  #  tmplist1[tmp.azienda.id] = tmp.azienda
-  #print(len(tmplist1))
-
-  #tmplist = list()
-  #for k in tmplist1:
-  #  tmplist.append(tmplist1[k])
-
-  #data['aziendaLista'] = tmplist
   data['AziendaLista'] = assegnazioneazienda
-  ##############################
 
   if 'azienda' in data:
     print('azienda selezionata:',data['azienda'].nome)
-    data['sedeLista'] = data['azienda'].sede_set.all().order_by('nome')
+    data['SedeLista'] = data['azienda'].sede_set.all().order_by('nome')
 
   print('numero aziende',len(data['AziendaLista']))
-  if 'sedeLista' in data:
-    print('numero di sedi',len(data['sedeLista']))
+  if 'SedeLista' in data:
+    print('numero di sedi',len(data['SedeLista']))
 
   return render(request,'azienda.welcome.html',data)
 

binární
db/db.sqlite3


+ 1 - 1
documento/managefile.py

@@ -93,7 +93,7 @@ def upload_file(uploaded_file,utente,originale=False):
     print(os.path.join(fl_path,utente.azienda.partitaiva),"esistente")
   try:
     os.mkdir(os.path.join(fl_path,utente.azienda.partitaiva,utente.codicefiscale))
-  except fileexistserror as fee:
+  except FileExistsError as fee:
     print(os.path.join(fl_path,utente.azienda.partitaiva,utente.codicefiscale),"esistente")
 
   with open(os.path.join(fl_path,utente.azienda.partitaiva,utente.codicefiscale,nomefile),'wb+') as d:

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

@@ -43,7 +43,6 @@ function toggle(source) {
   {# il modulo di visualizzazione documenti e' condiviso con la gestione utenti #}
   {% include 'documento.welcome.lista.html' %}  
 
-  {% if "DOCUMENTO.EDIT" in permesso_sede or "DOCUMENTO.EDIT" in permesso_azienda %}
   <!-- 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">
@@ -72,14 +71,12 @@ function toggle(source) {
        </div>
      </div>
      <!-- end modal -->
-   {% endif %}
   <div><br></div>
 
 {% endblock %}
 
 {% block bodybottom %}
     <!-- tasti per il ritorno e altre funzioni generiche -->
-    {% if "DOCUMENTO.CREA" in permesso_sede or "DOCUMENTO.CREA" in permesso_azienda %}
       <div class='card'>
         <div class='card-body'>" 
           <h5 class="card-title">Upload Documenti</h5>
@@ -117,7 +114,6 @@ function toggle(source) {
         </div>
       </div>
     <!-- fine barra tasti ritorno e utilita' -->
-    {% endif %}
 
   <div>
   <br>

+ 1 - 6
documento/templates/documento.welcome.lista.html

@@ -14,8 +14,7 @@
         <th scope='col'>Descrizione</th>
         <th scope='col'>Inserimento</th>
 	<th scope='col'><input class="form-check-input" type="checkbox" id="selectAll" name="selectAll" value='0' onClick="toggle(this);"/>&nbsp;<label for="selectAll" class="form-check-label">Tutti</label></th>
-	{% if "DOCUMENTO.EDIT" in permesso_sede or "DOCUMENTO.EDIT" in permesso_azienda %}
-        <th scope='col'>Cancella</th> {% endif %}
+        <th scope='col'>Cancella</th> 
       </tr>
       </thead>
       <tbody>
@@ -29,11 +28,8 @@
           <td>{{ documento.dataupload | date:'d/m/Y' }} </td>
 	  <td><input class="form-check-input" type="checkbox" form="ElencoDocumenti" id="select-{{ documento.id }}" name="select" value='{{ documento.id }}'/>
           </td>
-	    {% if "DOCUMENTO.EDIT" in permesso_sede or "DOCUMENTO.EDIT" in permesso_azienda %}	
             <td><button type='button' class='btn btn-primary' data-bs-toggle='modal' data-bs-target='#ConfirmDeleteModal{{ documento.id }}' value='{{ documento.id }}'>Elimina</button></td>
-          {% endif %}
         </tr>
-        {% if "DOCUMENTO.EDIT" in permesso_sede or "DOCUMENTO.EDIT" in permesso_azienda %}
           <!-- Modal -->
           <div class="modal fade" id="ConfirmDeleteModal{{ documento.id }}" tabindex="-1" role="dialog" aria-labelledby="ConfirmDeleteLabel{{ document.id }}" aria-hidden="true">
             <div class="modal-dialog" role="document">
@@ -59,7 +55,6 @@
             </div>
           </div>
           <!-- end modal -->
-          {% endif %}
         {% endfor %}
       </tbody>
     </table>

+ 52 - 0
sicurezza/views.py

@@ -6,6 +6,12 @@ from .models import *
 from att.views import *
 from config.views import *
 
+# riporta tutti i permessi mixando i tre livelli
+def getP(azienda=None,sede=None,amministratore=None):
+  if isinstance(jolly,Azienda):
+    pass
+
+# riporta l'elenco dei permessi per amministratore
 def getAMP(amministratore=None):
   amm=None
   print('getAMP',amministratore)
@@ -24,7 +30,17 @@ def getAMP(amministratore=None):
   #for i in permessi: print(i,)
   return permessi
 
+#riporta l'elenco dei permessi per azienda, filtrato per amministratore
 def getAZP(azienda=None,amministratore=None):
+  azi = None
+  if isinstance(azienda,Azienda):
+    print('si tratta di una istanza azienda')
+    azi=azienda
+
+  if isinstance(azienda,int):
+    print('azienda: istanza int')
+    azi = Azienda.objects.get(pk=azienda)
+
   amm=None
   print('getAMP',amministratore)
   if isinstance(amministratore,Amministratore):
@@ -36,14 +52,28 @@ def getAZP(azienda=None,amministratore=None):
 
   if not amm:
     return []
+  if not azi:
+    return []
+
   permessi = list()
+
+  for p in azi.azp_set.all().filter(amministratore=amm):
+    permessi.append(p.permesso.nome)
+
+  print('permessi disponibili',len(permessi))
+  #for i in permessi: print(i,)
+  return permessi
+
+  '''
   for p in amm.amp_set.filter(amministratore=amm):
     permessi.append(p.permesso.nome)
 
   print('permessi disponibili',len(permessi))
   #for i in permessi: print(i,)
   return permessi
+  '''
 
+#riporta l'elenco dei permessi per sede filtrato per amministratore
 def getSEP(sede=None,amministratore=None):
   sed=None
   amm=None
@@ -76,3 +106,25 @@ def getSEP(sede=None,amministratore=None):
   #for i in permessi: print(i,)
   return permessi
 
+# riporta un permesso (generico) o tutti i permessi
+def getPermesso(permesso=None):
+  if permesso:
+    try:
+      p = Permesso.objects.get(nome=permesso)
+    except Permesso.DoesNotExist as dne:
+      p = None
+      print("Errore:",dne)
+  else:
+    p = Permesso.objects.all()
+  return p
+
+# da questa parte si impostano i permessi
+def setAMP(amministratore=None,permesso=None):
+  pass
+
+def setAZP(azienda=None,amministratore=None,permesso=None):
+  pass
+
+def setSEP(sede=None,amministratore=None,permesso=None):
+  pass
+

+ 50 - 0
snippets/genera_permessi_old.py

@@ -0,0 +1,50 @@
+from django.db.utils import IntegrityError 
+from azienda.models import *
+
+for a in Amministratore.objects.all():
+    for z in Azienda.objects.all():
+        print(a.nome,z.nome)
+        aa = AssegnazioneAzienda()
+        '''
+  crea_comunicazione = models.BooleanField(default=True)
+  edit_azienda = models.BooleanField(default=True)
+  edit_sede = models.BooleanField(default=True)
+  edit_utente = models.BooleanField(default=True)
+  edit_documento = models.BooleanField(default=True)
+  edit_comunicazione = models.BooleanField(default=True)
+  crea_permesso = models.BooleanField(default=False)
+  edit_permesso = models.BooleanField(default=False)
+  read_permesso = models.BooleanField(default=True)
+        '''
+        aa.azienda = z
+        aa.amministratore = a
+        aa.crea_azienda = True
+        aa.crea_sede = True
+        aa.crea_utente = True
+        aa.crea_documento = True
+        aa.crea_comunicazione = True
+        aa.crea_permesso = True
+        try:
+          aa.save()
+        except IntegrityError as ie:
+          print('presente')
+
+for a in Amministratore.objects.all():
+    for z in Azienda.objects.all():
+        for s in z.sede_set.all():
+            aa = AssegnazioneSede()
+            aa.sede = s
+            aa.azienda = z
+            aa.amministratore = a
+            aa.crea_azienda = True
+            aa.crea_sede = True
+            aa.crea_utente = True
+            aa.crea_documento = True
+            aa.crea_comunicazione = True
+            aa.crea_permesso = True
+
+            try:
+                aa.save()
+            except IntegrityError as ie:
+                print('presente')
+

+ 1 - 1
static/templates/base.html

@@ -46,7 +46,7 @@
             {% csrf_token %}
             <select class="form-select form-select-lg mb-1" aria-label=".form-select-lg" name="sceltasede" onchange="this.form.submit()">
 	      <option value=-1>Scelta Sede</option>
-              {% for s in sedeLista %}
+              {% for s in SedeLista %}
 	      <option value={{ s.id }} {% if s.id == sede.id %}selected{% endif %}>{{ s.nome }}</button></option>
               {% endfor %}
               <option value=0>Nuova Sede</option>

+ 4 - 4
utente/templates/utente.download.html

@@ -24,16 +24,16 @@ function toggle(source) {
 <!-- Nav tabs -->
 <ul class="nav nav-tabs" id="myTab" role="tablist">
   <li class="nav-item" role="presentation">
-    <button class="nav-link active" id="home-tab" data-bs-toggle="tab" data-bs-target="#home" type="button" role="tab" aria-controls="home" aria-selected="true">Documenti</button>
+    <button class="btn btn-primary active" id="home-tab" data-bs-toggle="tab" data-bs-target="#home" type="button" role="tab" aria-controls="home" aria-selected="true">Documenti</button>
   </li>
   <li class="nav-item" role="presentation">
-    <button class="nav-link" id="profile-tab" data-bs-toggle="tab" data-bs-target="#profile" type="button" role="tab" aria-controls="profile" aria-selected="false">Profilo</button>
+    <button class="btn btn-primary" id="profile-tab" data-bs-toggle="tab" data-bs-target="#profile" type="button" role="tab" aria-controls="profile" aria-selected="false">Profilo</button>
   </li>
   <li class="nav-item" role="presentation">
-    <button class="nav-link" id="messages-tab" data-bs-toggle="tab" data-bs-target="#messages" type="button" role="tab" aria-controls="messages" aria-selected="false">Attività</button>
+    <button class="btn btn-primary" id="messages-tab" data-bs-toggle="tab" data-bs-target="#messages" type="button" role="tab" aria-controls="messages" aria-selected="false">Attività</button>
   <li>
    <li class="nav-item" role="presentation">
-    <button class="nav-link" id="messages-tab" data-bs-toggle="tab" data-bs-target="#byebye" type="button" role="tab" aria-controls="byebye" aria-selected="false">Uscita</button>
+    <button class="btn btn-primary" id="messages-tab" data-bs-toggle="tab" data-bs-target="#byebye" type="button" role="tab" aria-controls="byebye" aria-selected="false">Uscita</button>
   </li>
  
 </ul>

+ 4 - 4
utente/templates/utente.edit.html

@@ -15,16 +15,16 @@ function toggle(source) {
 <!-- Nav tabs -->
 <ul class="nav nav-tabs" id="myTab" role="tablist">
   <li class="nav-item" role="presentation">
-    <button class="nav-link active" id="profile-tab" data-bs-toggle="tab" data-bs-target="#profile-pane" type="button" role="tab" aria-controls="profile-pane" aria-selected="true">Profilo</button>
+    <button class="btn btn-primary active" id="profile-tab" data-bs-toggle="tab" data-bs-target="#profile-pane" type="button" role="tab" aria-controls="profile-pane" aria-selected="true">Profilo</button>
   </li>
   <li class="nav-item" role="presentation">
-    <button class="nav-link" id="document-tab" data-bs-toggle="tab" data-bs-target="#document-pane" type="button" role="tab" aria-controls="document-pane" aria-selected="false">Documenti</button>
+    <button class="btn btn-primary" id="document-tab" data-bs-toggle="tab" data-bs-target="#document-pane" type="button" role="tab" aria-controls="document-pane" aria-selected="true">Documenti</button>
   </li>
   <li class="nav-item" role="presentation">
-    <button class="nav-link" id="logger-tab" data-bs-toggle="tab" data-bs-target="#logger-pane" type="button" role="tab" aria-controls="logger-pane" aria-selected="false">attivita</button>
+    <button class="btn btn-primary" id="logger-tab" data-bs-toggle="tab" data-bs-target="#logger-pane" type="button" role="tab" aria-controls="logger-pane" aria-selected="true">attivita</button>
   </li>
   <li class="nav-item" role="presentation">
-	  <button class="nav-link" id="return-tab" data-bs-toggle="tab" data-bs-target="#return-pane" type="button" role="tab" aria-controls="return-pane" aria-selected="false"><a href="{% url 'utente:welcome' %}">Indietro</a></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 'utente:welcome' %}">Indietro</a></button>
   </li>
 
 </ul>