فهرست منبع

merge cancellazione utente

Mauro 11 ماه پیش
والد
کامیت
5d9f71b3c7
3فایلهای تغییر یافته به همراه89 افزوده شده و 3 حذف شده
  1. 7 1
      utente/forms.py
  2. 2 1
      utente/urls.py
  3. 80 1
      utente/views.py

+ 7 - 1
utente/forms.py

@@ -11,7 +11,7 @@ class formUtente(forms.Form):
     self.fields['datanascita'] = forms.DateField(required=False) #,input_formats=['%d/%m/%Y',])
     self.fields['luogonascita'] = forms.CharField(required=False)
     self.fields['mail'] = forms.CharField(required=False)
-    self.fields['CancellaUtente'] = forms.BooleanField(required=False)
+    self.fields['cancellautente'] = forms.BooleanField(required=False)
     self.fields['pin'] = forms.CharField(required=True)
     self.fields['forzanuovapassword'] = forms.BooleanField(required=False)
     self.fields['cambiopassword'] = forms.BooleanField(required=False)
@@ -102,3 +102,9 @@ class formUpdatePasswordLogin(forms.Form):
            return self.data['uuid']
 
       raise forms.ValidationError("UUID non valido o scaduto")
+
+class formCancellaUtente(forms.Form):
+  def __init__(self,*args,**kwargs):
+    forms.Form.__init__(self,*args,**kwargs)
+    self.fields['ConfermaCancellazioneUtente'] = forms.BooleanField(required=False)
+

+ 2 - 1
utente/urls.py

@@ -7,5 +7,6 @@ urlpatterns = [
   path('edit',views.edit,name='edit'),
   path('download',views.download,name='download'),
   path('updatePasswordFromLogin/<uuid:uuid>',views.updatePasswordFromLogin,name='updatePasswordFromLogin'),
-  path('forceUpdatePassword/<uuid:uuid>',views.forceUpdatePassword,name='forceUpdatePassword')  
+  path('forceUpdatePassword/<uuid:uuid>',views.forceUpdatePassword,name='forceUpdatePassword'),  
+  path('cancellautente',views.cancellautente,name='cancellautente'),
   ]

+ 80 - 1
utente/views.py

@@ -4,9 +4,10 @@ from django.urls import reverse
 
 from .models import *
 from .forms import *
-from documento.forms import *
 
+from documento.forms import *
 from documento.managefile import *
+
 from att.views import *
 from comunicazione.views import ServizioMail
 
@@ -143,6 +144,7 @@ def edit(request):
       print("Non ci siamo, manca l'utente")
   
   if request.method == 'POST':
+
     if "ritorna" in request.POST:
       return HttpResponseRedirect(reverse("utente:welcome"))    
     print('request.method x edit utente')
@@ -158,6 +160,11 @@ def edit(request):
     fu = formUtente(request.POST)
     if fu.is_valid():
       print('form valida')
+      cancellautente = fu.cleaned_data.get('cancellautente')
+      if cancellautente:
+        print('richiesta cancellazione utente, passo la chiamata')
+        return HttpResponseRedirect(reverse("utente:cancellautente")) 
+
       print('i dati sono grosso modo coerenti, salviamoli')
       utente.nome = fu.cleaned_data['nome']
       utente.codicefiscale = fu.cleaned_data['codicefiscale'].upper()
@@ -475,3 +482,75 @@ def forceUpdatePassword(request,uuid):
     print(data)
 
   return render(request,'utente.edit.password.primologin.html',data)
+
+def cancellautente(request):
+  print('richiesta cancellazione definitiva utente')
+
+  # direi che la funzione lavori in due fasi:
+  # 1: viene richiesta conferma della cancellazione
+  # 2: in caso di affermazione positiva, si procede
+
+  if not 'AdminId' in request.session or 'UserId' in request.session:
+    print("Non rilevo presensa UserId e AdminId in request.session")
+    return HttpResponseRedirect(reverse("login:start"))
+
+  data=dict()
+  data['HeaderTitle'] = getConfig('HeaderTitle')
+
+  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 not 'AziendaId' in request.session:
+    return HttpResponseRedirect(reverse("login:start"))
+  data['AziendaId']=request.session['AziendaId']
+  data['azienda'] = Azienda.objects.get(pk=data['AziendaId'])
+
+  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("non esiste")
+    data['sede'] = sede
+
+  if 'UserId' in request.session:
+    data['UserId'] = request.session['UserId']
+
+  if not'UserEditId' in request.session:
+    return HttpResponseRedirect(reverse("login:start"))
+
+  data['UserEditId'] = request.session['UserEditId']
+
+  if request.method == 'POST':
+    cu = formCancellaUtente(request.POST)
+    if cu.is_valid() and cu.cleaned_data.get('ConfermaCancellazioneUtente'):
+
+      #  tutto ok,
+      #  procedo alla cancellazione
+
+      utente = Utente.objects.get(pk=data['UserEditId'])
+      print('utente',utente.codicefiscale)
+      lista_documenti = utente.documento_set.all()
+      print('quanti documenti',len(lista_documenti))
+  
+      # step1 cancellazione dei documenti.
+      for i in lista_documenti:
+        # rimuove documento fisicamente
+        delete_file(i)
+
+        # e poi lo rimuove dall'archivio
+        i.delete()
+      
+      # step2 cancellazione dell'utente
+      utente.delete()
+
+    # step3 ritorno alla lista degli utenti
+    return  HttpResponseRedirect(reverse("utente:welcome"))
+
+  return render(request,'utente.conferma.cancellazione.html',data)
+