瀏覽代碼

modified: db/db.sqlite3
modified: documento/managefile.py
modified: documento/templates/documento.welcome.html
modified: documento/views.py
modified: utente/views.py

Mauro Morichi 1 年之前
父節點
當前提交
d0848eb6a5
共有 5 個文件被更改,包括 48 次插入3 次删除
  1. 二進制
      db/db.sqlite3
  2. 12 0
      documento/managefile.py
  3. 27 1
      documento/templates/documento.welcome.html
  4. 8 0
      documento/views.py
  5. 1 2
      utente/views.py

二進制
db/db.sqlite3


+ 12 - 0
documento/managefile.py

@@ -21,6 +21,18 @@ from codicefiscale import codicefiscale
 
 import os
 
+def delete_file(documento):
+  # questo blocco rimuove fisicamente il file prima della sua rimozione logica nel db
+  fl_path = '/'.join((settings.MEDIA_ROOT,documento.utente.azienda.partitaiva,documento.utente.codicefiscale))
+  print('Path completa:',fl_path)
+  posizione = '/'.join((fl_path,documento.storage))
+  if os.path.isfile(posizione):
+    print('rimozione fisica file:',posizione)  
+    try:
+      os.remove(posizione)
+    except OSError as ose:
+      print('errore nella rimozione del file:',ose)
+
 def download_file(request,uid):
     u = Utenti.objects.get(pk=uid)
     fl_path = '/'.join((settings.MEDIA_ROOT,azienda.codicefiscale,))

+ 27 - 1
documento/templates/documento.welcome.html

@@ -39,6 +39,7 @@
         <th scope='col'>Storage</th>
         <th scope='col'>Descrizione</th>
         <th scope='col'>Inserimento</th>
+        <th scope='col'>Cancella</th>
       </tr>
       </thead>
       <tbody>
@@ -50,8 +51,33 @@
           <td> {{ documento.storage}} </td>
           <td> {{ uu.descrizione }} </td>
           <td> {{ documento.dataupload | date:'d/m/Y' }} </td>
-
+          <td><button type='button' class='btn btn-secondary' data-bs-toggle='modal' data-bs-target='#ConfirmDeleteModal{{ documento.id }}' value='{{ documento.id }}'>Elimina</button></td>
         </tr>
+        <!-- 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">
+           <div class="modal-content">
+             <div class="modal-header">
+              <h5 class="modal-title" id="ConfirmDeleteLabel">Conferma Cancellazione</h5>
+              <button type="button" class="close" data-bs-dismiss="modal" aria-label="Close">
+                <span aria-hidden="true">&times;</span>
+              </button>
+            </div>
+            <div class="modal-body">
+            Confermi la cancellazione di {{ documento.documento }}?<br>
+            La cancellazione del documento è definitiva,immediata e non recuperabile.
+           </div>
+           <div class="modal-footer">
+             <button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Close</button>
+             <form name='ConfirmDeleteModal' method='POST'>
+               {% csrf_token %}
+               <button type="submit" name="DeleteDocument" value='{{ documento.id }}' class="btn btn-primary">Conferma</button>
+             </form>
+           </div>
+         </div>
+       </div>
+     </div>
+     <!-- end modal -->
         {% endfor %}
       </tbody>
     </table>

+ 8 - 0
documento/views.py

@@ -55,6 +55,14 @@ def welcome(request):
     if 'ritorna' in request.POST:
       return HttpResponseRedirect(reverse("azienda:welcome"))
 
+    if 'DeleteDocument' in request.POST:
+      print('Richiesta cancellazione Documento',request.POST)
+      documento = request.POST['DeleteDocument']  # perche' lo considera una lista e non un singolo valore?
+      print('richiesta cancellazione documento:',documento)
+      d = Documento.objects.get(pk=documento)
+      delete_file(d)  #rimozione fisica del documento 
+      d.delete()
+
     filecaricati = AdminUpload(request.POST,request.FILES)
     if filecaricati.is_valid():
       print('record filecaricati validi')

+ 1 - 2
utente/views.py

@@ -130,9 +130,8 @@ def edit(request):
       documento = request.POST['DeleteDocument']
       print('documento da rimuovere',documento)
       d = Documento.objects.get(pk=documento)
-      # dobbiamo modificare il codice in modo che possa venir rimosso anche il file fisico,
-      # altrimenti restano un mare di cadaveri
       if d:
+       delete_file(d) #rimozione fisica del documento
        d.delete()
 
     fu = formUtente(request.POST)