Przeglądaj źródła

gestione amministratori - welcome e first edit

Mauro 10 miesięcy temu
rodzic
commit
812b4410ab

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

@@ -0,0 +1,127 @@
+{% extends 'base.html' %}
+
+{% block top %}
+  <div class='form-outline mb-3 text-center btn-primary h3'>
+     {{ HeaderTitle }}
+  </div>
+  <div class='form-outline mb-3 text-center btn-primary h3'>
+     Amministratore: {{ admin.username }} 
+  </div>
+{% endblock %}
+
+{% block body %}
+  <!-- errori form sede -->
+  {% if sede.errors %}
+    <div class="alert alert-danger">
+    {{ sede.errors }}
+    </div>
+  {% endif %}
+  <!-- fine zona errori -->
+
+  <!-- profilo sede -->
+  <form name='SedeEdit' 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 }}' {% if admin.sola_lettura %}readonly{% endif %}>
+    </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 }}' {% if admin.sola_lettura %}readonly{% endif %}>
+    </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 }}' {% if admin.sola_lettura %}readonly{% endif %}>
+    </div>
+    <div class='form-group'>
+     <label for="pin">Pin/Password</label>
+      <input type='text' class='form-control form-control-lg' name='pin' id='pin' value='{{ amministratore.pin.value }}' {% if admin.sola_lettura %}readonly{% endif %}>
+    </div>
+
+    <br>
+    <div class="card">
+      <div class="card-header">
+        Sicurezza
+      </div>
+      <ul class="list-group list-group-flush">
+      <li class="list-group-item">
+        <div class='form-check'>
+          <input class="form-check-input" type="checkbox" {% if amministratore.sola_lettura.value %} checked {% endif %} id="sola_lettura" name="sola_lettura" {% if admin.sola_lettura %} readonly {% endif %}>
+          <label for='sola_lettura' class='form-control-label'>Accesso consentito in sola lettura</label>
+        </div>
+        <div class="form-check">
+          <input class="form-check-input" type="checkbox" id="crea_azienda" name="crea_azienda" {% if admin.sola_lettura %}readonly{% endif %}/>
+          <label for='crea_azienda' class='form-control-label'>Autorizzato a creare aziende</label>
+        </div>
+        <div class="form-check">
+          <input class="form-check-input" type="checkbox" id="crea_sede" name="crea_sede" {% if admin.sola_lettura %}readonly{% endif %}/>
+          <label for='crea_sede' class='form-control-label'>Autorizzato a creare sedi</label>
+        </div>
+        <div class="form-check">
+          <input class="form-check-input" type="checkbox" id="crea_utente" name="crea_utente" {% if admin.sola_lettura %}readonly{% endif %}/>
+          <label for='crea_utente' class='form-control-label'>Autorizzato a creare dipendenti</label>
+        </div>
+        <div class="form-check">
+          <input class="form-check-input" type="checkbox" id="crea_documento" name="crea_documento" {% if admin.sola_lettura %}readonly{% endif %}/>
+          <label for='crea_documento' class='form-control-label'>Autorizzato a caricare documenti</label>
+        </div>
+        <div class="form-check">
+          <input class="form-check-input" type="checkbox" id="crea_comunicazione" name="crea_comunicazione" {% if admin.sola_lettura %}readonly{% endif %}/>
+          <label for='crea_comunicazione' class='form-control-label'>Autorizzato a creare messaggio per comunicazioni</label>
+        </div>
+        <div class="form-check">
+          <input class="form-check-input" type="checkbox" id="crea_permesso" name="crea_permesso" {% if admin.sola_lettura %}readonly{% endif %}/>
+          <label for='crea_permesso' clasm='form-control-label'>Autorizzato a creare/associare permessi</label>
+        </div>
+     </li>
+
+     <!-- editing -->
+     <li class="list-group-item">
+        <div class='form-check'>
+          <input class="form-check-input" type="checkbox" {% if amministratore.edit_azienda.value %} checked {% endif %} id="edit_azienda" name="edit_azienda" {% if admin.sola_lettura %}readonly{% endif %}/>
+          <label for='edit_azienda' class='form-control-label'>Autorizzato a modificare aziende</label>
+        </div>
+        <div class='form-check'>
+          <input class="form-check-input" type="checkbox" {% if amministratore.edit_sede.value %} checked {% endif %} id="edit_sede" name="edit_sede" {% if admin.sola_lettura %}readonly{% endif %}/>
+          <label for='edit_sede' class='form-control-label'>Autorizzato a modificare sedi</label>
+        </div>
+        <div class='form-check'>
+          <input class="form-check-input" type="checkbox" {% if amministratore.edit_utente.value %} checked {% endif %} id="edit_utente" name="edit_utente" {% if admin.sola_lettura %}readonly{% endif %}/>
+           <label for='edit_utente' class='form-control-label'>Autorizzato a modificare dipendenti</label>
+        </div>
+        <div class='form-check'>
+          <input class="form-check-input" type="checkbox" {% if amministratore.edit_documento.value %} checked {% endif %} id="edit_documento" name="edit_documento" {% if admin.sola_lettura %}readonly{% endif %}/>
+           <label for='edit_documento' class='form-control-label'>Autorizzato a modificare documenti</label>
+        </div>
+        <div class='form-check'>
+          <input class="form-check-input" type="checkbox" {% if amministratore.edit_comunicazione.value %} checked {% endif %} id="edit_comunicazione" name="edit_comunicazione" {% if admin.sola_lettura %}readonly{% endif %}/>
+           <label for='edit_comunicazione' class='form-control-label'>Autorizzato a modificare messaggi per comunicazione</label>
+        </div>
+        <div class='form-check'>
+          <input class="form-check-input" type="checkbox" {% if amministratore.edit_permesso.value %} checked {% endif %} id="edit_permesso" name="edit_permesso" {% if admin.sola_lettura %}readonly{% endif %}/>
+           <label for='edit_permesso' class='form-control-label'>Autorizzato a modificare permessi e associazioni</label>
+        </div>
+        <div class='form-check'>
+          <input class="form-check-input" type="checkbox" {% if amministratore.vedi_permesso.value %} checked {% endif %} id="vedi_permesso" name="vedi_permesso" {% if admin.sola_lettura %}readonly{% endif %}/>
+           <label for='vedi_permesso' class='form-control-label'>Visualizza permessi e associazioni</label>
+        </div>
+      </li>
+
+      <!-- blocco automazione OTP accesso -->
+      <li class="list-group-item">
+      </li>
+    </ul>
+    </div>
+
+    <br>
+
+    <div class="btn-group">
+      <input type='submit' class="btn btn-primary" value='Aggiorna' {% if admin.sola_lettura %} disable {% endif %}>
+      <input type='submit' class="btn btn-primary" name="indietro" value="Indietro">
+    </div>
+
+  </form>
+</div>
+{% endblock %}
+

+ 144 - 0
amministratore/templates/amministratore.welcome.html

@@ -0,0 +1,144 @@
+{% extends 'base.html' %}
+
+{% block body %}
+  <form name="inputUtente" method="POST">
+  <div class='form-control'>
+    {% if admin.crea_amministratore %} 
+      <input type='submit' class="btn btn-primary" name='scelta' value='Nuovo Amministratore'>
+    {% endif %}
+    <input type='submit' class="btn btn-primary" name="indietro" value="Indietro">
+  </div>
+  <div class='form-control'>
+    Numero di  amministratori per questa azienda {{ numeroRecordAttuali }} su un totale di {{ numeroRecordAmministratore }}.
+  </div>
+
+  {% csrf_token %}
+  <table class='table table-striped table-hover'>
+    <thead class='thead-dark'>
+      <tr>
+        {% if admin.edit_amministratore %}<th scope='col'>*</th>{% endif %}
+        <th scope='col'>Login</th>
+        <th scope='col'>Nome</th>
+        <th scope='col'>Mail</th>
+        {% if admin.edit_amministratore %}
+  	  <th scope='col'>Pin</th>
+        {% endif %}
+        <th scope='col'>Inserimento</th>
+      </tr>
+    </thead>
+    <tbody>
+      {% csrf_token %}
+      {% for aa in listaAmministratoreAzienda %}
+        <tr>
+          {% if admin.edit_utente %}
+            <td> <button type='submit' class='btn btn-primary btn-block btn-lg mb-2 active' name='scelta' value='{{ uu.id }}' {% if not admin.crea_utente %}disable{% endif %}>Edit</button></td>
+          {% endif %}
+          <td> {{ aa.amministratore.login }} </td>
+	  <td> {{ aa.amministratore.nome }} </td>
+          <td> {{ aa.amministratore.mail }} </td>
+          {% if admin.edit_amministratore %}
+            <td> {{ aa.amministratore.pin }} </td>
+          {% endif %}
+	</tr>
+      {% endfor %} 
+    </tbody>
+  </table>
+  </form>
+
+  {% if admin.crea_amministratore %}
+  <!-- Modal -->
+  <div class="modal fade" id="CaricaIndiceModal" tabindex="-1" role="dialog" aria-labelledby="CaricaIndiceLabel" aria-hidden="true">
+    <div class="modal-dialog" role="document">
+      <div class="modal-content">
+             <form name='formCaricaIndice' method='POST' enctype='multipart/form-data'>
+               {% csrf_token %}
+               <div class="modal-header">
+                <h5 class="modal-title" id="CaricaIndiceLabel">Carica Elenco Dipendenti</h5>
+                  <span aria-hidden="true">&times;</span>
+                </button>
+               </div>
+               <div class="modal-body">
+                 Caricamento Lista Dipendenti<br>
+                 Formato File CSV - obbligatorio <br>
+                 Separatore: ',' - prima riga: "Nome colonna".</br>
+                 <table class='table table-striped table-hover'>
+                   <tbody>
+                     <tr>
+                       <td>Nome Cognome</td>
+                       <td>Codice Fiscale</td>
+                       <td>Data di Nascita</td>
+                       <td>Luogo di Nascita</td>
+                       <td/email</td>
+                     </tr>
+                   </tbody>
+                 </table><br>
+                 <label for='indice'>Elenco Dipendenti:&nbsp;</label>
+                 <input type='file' name='indice' id='indice' value='' accept='text/csv'>
+               </div>
+               <div class="modal-footer">
+                 <button type="submit" name="CaricaIndice" value='Carica Lista' class="btn btn-primary">Carica Lista Dipendenti</button>
+                 <button type="button" class="btn btn-primary" data-bs-dismiss="modal">Annulla</button>
+               </div>
+             </form>
+           </div>
+         </div>
+       </div>
+     </div>
+     <!-- end modal -->
+   {% endif %}
+
+{% endblock %}
+
+{% block bodybottom %}
+  <div><br><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 }} </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 }} </td>
+        </tr>
+        {% endfor %}
+      </tbody>
+    </table>
+  {% endif %}
+
+  {% if listaok %}
+    {% for i in listaok %}
+      {{i }}
+    {% endfor %}
+  {% endif %}
+
+  {% if listanotok %}
+    {% for i in listanotok %}
+      {{i }}
+    {% endfor %}
+  {% endif %}
+
+{% endblock %}
+

+ 9 - 0
amministratore/urls.py

@@ -0,0 +1,9 @@
+from django.urls import path
+from . import views
+
+app_name='amministratore'
+urlpatterns = [
+  path('welcome',views.welcome,name='welcome'),
+  path('edit',views.edit,name='edit'),
+]
+

+ 128 - 1
amministratore/views.py

@@ -1,3 +1,130 @@
 from django.shortcuts import render
+from .models import *
+from config.views import *
+from att.views import *
+from django.http import HttpResponse,HttpResponseRedirect
+from django.urls import reverse
 
-# Create your views here.
+def welcome(request):
+  if not 'AdminId' in request.session:
+    print("Non rilevo presensa AdminId in request.session")
+    return HttpResponseRedirect(reverse("login:start"))
+
+  AdminId = request.session['AdminId']
+  print('AdminId',AdminId)
+
+  data = dict()
+  data['HeaderTitle'] = getConfig('HeaderTitle')
+  data['Navbar']=False
+
+  admin = Amministratore.objects.get(pk=AdminId)
+  data['admin'] = admin
+  print('admin',admin.id,admin.nome)
+
+  azienda = None
+  if 'AziendaId' in request.session:
+    AziendaId = request.session['AziendaId']
+    print('AziendaId',AziendaId)
+    azienda = Azienda.objects.get(pk=AziendaId)
+    data['azienda'] = azienda
+
+  sede = None
+  if 'SedeId' in request.session:
+    SedeId = request.session['SedeId']
+    print('SedeId',SedeId)
+    try:
+      sede = Sede.objects.get(pk=SedeId)
+    except Sede.DoesNotExist as dne:
+      print("Sede non esiste")
+    data['sede'] = sede
+
+  amministratoreAzienda = azienda.assegnazioneazienda_set.all()
+  print("Lista amministratori azienda",len(amministratoreAzienda))
+  data['listaAmministratoreAzienda'] = amministratoreAzienda
+
+  if sede:
+    amministratoreSede = sede.assegnazionesede_set.all()
+    data['listaAmministratoreSede'] = amministratoreSede
+
+  if request.method == 'POST':
+    print("qualcosa e' stato premuto")
+  
+    if 'indietro' in request.POST:
+      return HttpResponseRedirect(reverse("azienda:welcome"))
+
+    if 'scelta' in request.POST:
+      scelta = request.POST.get("scelta")
+      request.session['AmministratoreEditId'] = scelta
+      print("Scelta effettuata",scelta)
+      return HttpResponseRedirect(reverse("amministratore:edit"))
+
+  return render(request,'amministratore.welcome.html',data)
+
+def edit(request):
+  '''
+  edit amministratore o simile
+  sulla base dei diritti assegnati, puo' leggero e/o scrivere nell'utente 
+  nella sede o nell'azienda.
+  i diritti sono assegnati sulla base dell'utente e non successivamente
+  all'assegnazione, tanto se l'utente ha una zona assegnata, quella puo' vedere
+  e basta.
+  '''
+
+  if not 'AdminId' in request.session:
+    return HttpResponseRedirect(reverse("login:start"))
+
+  AdminId = request.session['AdminId']
+  print('AdminId',AdminId)
+
+  data = dict()
+  data['HeaderTitle'] = getConfig('HeaderTitle')
+  data['Navbar']=True
+
+  if not 'AziendaId' in request.session:
+    return HttpResponseRedirect(reverse("login:start"))
+  else:
+    data['AziendaId'] = request.session['AziendaId']
+    azienda = Azienda.objects.get(pk=data['AziendaId'])
+    data['azienda'] = azienda
+
+  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)
+
+  if 'SedeId' in request.session and request.session['SedeId'] > 0:
+    print('presente SedeId',request.session['SedeId'])
+    data['SedeId'] = request.session['SedeId']
+    sede = Sede.objects.get(pk=request.session['SedeId'])
+    data['sede'] = sede
+  else:
+    data['sede'] = None
+
+  azienda = None
+  if 'AziendaId' in request.session:
+    AziendaId = request.session['AziendaId']
+    print('AziendaId',AziendaId)
+    azienda = Azienda.objects.get(pk=AziendaId)
+    data['azienda'] = azienda
+
+
+  assegnazioneazienda = AssegnazioneAzienda.objects.filter(amministratore=AdminId)
+  print('assegnazioneazienda',len(assegnazioneazienda))
+  assegnazionesede=None
+  if azienda:
+    assegnazionesede = AssegnazioneSede.objects.filter(amministratore=admin,azienda=azienda)
+
+  data['listaAttivitaxAmministrazione']=getLogxAmministrazione(admin)
+
+  print("request.method",request.method)
+
+  if request.method == 'POST':
+    print("qualcosa e' stato premuto")
+  
+    if 'indietro' in request.POST:
+      return HttpResponseRedirect(reverse("azienda:welcome"))
+
+  print('data',data)
+
+  return render(request,'amministratore.edit.html',data)

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

@@ -18,6 +18,9 @@
       <button type='submit' class='btn btn-primary' name='comunicazioni' value='{{ azienda.id }}'>Comunicazioni</button>
       <button type='submit' class='btn btn-primary' name='parazienda' value='{{ azienda.id }}'>Par.Azienda</button>
       <button type='submit' class='btn btn-primary' name='parsede' value='{{ sede.id }}' {% if not sede.id %} disabled {% endif %}>Par.Sede</button>
+      {% if admin.vedi_permesso %}
+        <button type='submit' class='btn btn-primary' name='amministratore' value='{{ admin.id }}'>Amministratori</button> 
+      {% endif %}
     </form>
   {% endif %}
   </div>

+ 4 - 0
azienda/views.py

@@ -148,6 +148,10 @@ def welcome(request):
       request.session['SedeIdEdit'] = sede.id
       return HttpResponseRedirect(reverse('azienda:editSede'))
 
+    if 'amministratore' in request.POST:
+      print(' premuto tasto Amministratore')
+      return HttpResponseRedirect(reverse('amministratore:welcome'))
+
   #################
   tmplist1 = dict()
   for tmp in assegnazioneazienda:

+ 1 - 0
gd/urls.py

@@ -25,5 +25,6 @@ urlpatterns = [
     path('azienda/',include('azienda.urls')),
     path('documento/',include('documento.urls')),
     path('comunicazione/',include('comunicazione.urls')),
+    path('amministratore',include('amministratore.urls')),
 ]
 

+ 1 - 0
static/templates/base.html

@@ -80,6 +80,7 @@
     </div>
     <div class='form-outline mb-5 text-center h3'>
             {% if azienda %} {{ azienda.nome }} {% endif %}
+            {% if sede %} / {{ sede.nome }} {% endif %}
     </div>
 
     {% endblock %}