from django.shortcuts import render from django.http import JsonResponse import random import re from .models import * # riporta la configurazione o solleva un'eccezione def getConfigurazione(id=None,regex=False,rule=None): try: risultato = Configurazione.objects.get(pk=id) except Configurazione.DoesNotExist as dne: print('Configurazione: valore errato \'{}\'.'.format(id)) return None ''' di default viene passato valore a value, pronto per essere restituito. nel caso si presente regex, andiamo a valutare nell'ordine, la regola passata, se presente, oppure la regola inserita nel db. ''' value = risultato.valore if regex: if rule: value = re.findall(rule,risultato.valore) else: value = re.findall(risultato.regex,risultato.valore) print('Configurazione: valore corretto \'{}\'.'.format(value)) return value def setConfigurazione(id=None,valore=None): try: configurazione = Configurazione.objects.get(pk=id) except Configurazione.DoesNotExist as dne: print('Configurazione, valore errato \'{}\'.'.format(id)) configurazione = Configurazione() configurazione.id = id configurazione.valore = valore configurazione.save() print('Configurazione: valore aggiornato \'{}\': \'{}\''.format(id,valore)) return configurazione.valore #genera password def getPassword(): lunghezzapassword=int(getConfigurazione('mail_password_length')) print('lunghezza default password: ',lunghezzapassword) value ='abcdefghikjlmnopqrstuvwxyz' valueup=value.upper() number='0123456789' symbol='.,[!@#$%^&*?_~-:;()[]{}' #calcolo dei pesi (intendo dire, che ci sara' maggior spazio per le lettere, minore per i numeri, minimo per i simboli) vLo = int(lunghezzapassword * 0.40) vUp = int(lunghezzapassword * 0.40) nUm = int(lunghezzapassword * 0.20) sYm = lunghezzapassword -vLo -vUp -nUm print("pesi: ",vLo,vUp,nUm,sYm) # a questo punto estraggo tante liste (4) di voci random l=list() for i in range(0,vLo): l.append(random.choice(value)) for i in range(0,vUp): l.append(random.choice(valueup)) for i in range(0,nUm): l.append(random.choice(number)) for i in range(0,sYm): l.append(random.choice(symbol)) print("originale: ".join(l)) random.shuffle(l) print("definitivo: ".join(l)) return("".join(l)) # restituisce una nuova password via Json def getJsonPassword(request): data = { 'newPassword': getPassword() } return JsonResponse(data)