views.py 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. from django.shortcuts import render
  2. from django.http import JsonResponse
  3. import random
  4. import re
  5. from .models import *
  6. # riporta la configurazione o solleva un'eccezione
  7. def getConfigurazione(id=None,regex=False,rule=None):
  8. try:
  9. risultato = Configurazione.objects.get(pk=id)
  10. except Configurazione.DoesNotExist as dne:
  11. print('Configurazione: valore errato \'{}\'.'.format(id))
  12. return None
  13. '''
  14. di default viene passato valore a value, pronto per essere restituito.
  15. nel caso si presente regex, andiamo a valutare nell'ordine,
  16. la regola passata, se presente, oppure la regola inserita nel db.
  17. '''
  18. value = risultato.valore
  19. if regex:
  20. if rule:
  21. value = re.findall(rule,risultato.valore)
  22. else:
  23. value = re.findall(risultato.regex,risultato.valore)
  24. print('Configurazione: valore corretto \'{}\'.'.format(value))
  25. return value
  26. def setConfigurazione(id=None,valore=None):
  27. try:
  28. configurazione = Configurazione.objects.get(pk=id)
  29. except Configurazione.DoesNotExist as dne:
  30. print('Configurazione, valore errato \'{}\'.'.format(id))
  31. configurazione = Configurazione()
  32. configurazione.id = id
  33. configurazione.valore = valore
  34. configurazione.save()
  35. print('Configurazione: valore aggiornato \'{}\': \'{}\''.format(id,valore))
  36. return configurazione.valore
  37. #genera password
  38. def getPassword():
  39. lunghezzapassword=int(getConfigurazione('mail_password_length'))
  40. print('lunghezza default password: ',lunghezzapassword)
  41. value ='abcdefghikjlmnopqrstuvwxyz'
  42. valueup=value.upper()
  43. number='0123456789'
  44. symbol='.,[!@#$%^&*?_~-:;()[]{}'
  45. #calcolo dei pesi (intendo dire, che ci sara' maggior spazio per le lettere, minore per i numeri, minimo per i simboli)
  46. vLo = int(lunghezzapassword * 0.40)
  47. vUp = int(lunghezzapassword * 0.40)
  48. nUm = int(lunghezzapassword * 0.20)
  49. sYm = lunghezzapassword -vLo -vUp -nUm
  50. print("pesi: ",vLo,vUp,nUm,sYm)
  51. # a questo punto estraggo tante liste (4) di voci random
  52. l=list()
  53. for i in range(0,vLo):
  54. l.append(random.choice(value))
  55. for i in range(0,vUp):
  56. l.append(random.choice(valueup))
  57. for i in range(0,nUm):
  58. l.append(random.choice(number))
  59. for i in range(0,sYm):
  60. l.append(random.choice(symbol))
  61. print("originale: ".join(l))
  62. random.shuffle(l)
  63. print("definitivo: ".join(l))
  64. return("".join(l))
  65. # restituisce una nuova password via Json
  66. def getJsonPassword(request):
  67. data = { 'newPassword': getPassword() }
  68. return JsonResponse(data)