forms.py 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131
  1. from django import forms
  2. import re
  3. from sicurezza.views import getSecurityLevelAll
  4. from configurazione.views import *
  5. from .models import *
  6. class formMsg(forms.Form):
  7. oggetto = forms.CharField(required=True)
  8. soggetto = forms.CharField(required=True)
  9. conferma = forms.CharField(required=False)
  10. class formEmail(forms.Form):
  11. def __init__(self,*args,**kwargs):
  12. forms.Form.__init__(self,*args,**kwargs)
  13. def update(self):
  14. self.fields['mail'] = forms.CharField(required=True)
  15. self.fields['dominio'] = forms.IntegerField(required=True)
  16. self.fields['dominio_domain'] = forms.CharField(required=True)
  17. self.fields['nome'] = forms.CharField(max_length=128,required=True)
  18. self.fields['nota'] = forms.CharField(widget=forms.Textarea(attrs={'rows':4,'cols':60}),required=False,initial='')
  19. self.fields['password1'] = forms.CharField(required=True,widget=forms.PasswordInput)
  20. self.fields['password2'] = forms.CharField(required=True,widget=forms.PasswordInput)
  21. self.fields['clear'] = forms.CharField(required=False)
  22. self.fields['passwordchanged'] = forms.BooleanField(required=False,widget=forms.HiddenInput) #utilizzato come campo hidden, per segnalare che la password e' stata cambiata.
  23. self.fields['rigenerapassword'] = forms.BooleanField(required=False,initial=False)
  24. self.fields['inviaparametri'] = forms.BooleanField(required=False,initial=False)
  25. self.fields['password_change_enabled'] = forms.BooleanField(required=False,initial=True)
  26. self.fields['emailtest'] = forms.BooleanField(required=False,initial=False)
  27. self.fields['pop3'] = forms.BooleanField(required=False,initial=True)
  28. self.fields['imap'] = forms.BooleanField(required=False,initial=True)
  29. self.fields['smtp'] = forms.BooleanField(required=False,initial=True)
  30. self.fields['smtp_relay'] = forms.BooleanField(required=False,initial=True)
  31. self.fields['lmtp'] = forms.BooleanField(required=False,initial=True)
  32. self.fields['lmtp_server'] = forms.IntegerField(required=False,initial=0)
  33. self.fields['mail_server'] = forms.IntegerField(required=False,initial=0)
  34. self.fields['sql_remote'] = forms.IntegerField(required=False,initial=0)
  35. self.fields['mail_proxy'] = forms.IntegerField(required=False,initial=0)
  36. self.fields['webmail'] = forms.BooleanField(required=False,initial=True)
  37. self.fields['sms'] = forms.BooleanField(required=False,initial=False)
  38. self.fields['securitylevel'] = forms.ChoiceField(required=False,choices=self.getLevel())
  39. self.fields['nextcloud'] = forms.BooleanField(required=False,initial=False)
  40. self.fields['nextcloud_pwd'] = forms.BooleanField(required=False,initial=True)
  41. self.fields['tobedeleted'] = forms.BooleanField(required=False,initial=False)
  42. self.fields['enabled'] = forms.BooleanField(required=False,initial=True)
  43. self.fields['sendafile'] = forms.BooleanField(required=False)
  44. self.fields['warning_mail_quota']= forms.IntegerField(required=False,initial=0)
  45. self.fields['limit_mail_quota'] = forms.IntegerField(required=False,initial=0)
  46. self.fields['mail_di_recupero'] = forms.CharField(required=False,initial="")
  47. self.fields['mail_who'] = forms.CharField(required=False,initial='')
  48. self.fields['sieve'] = forms.BooleanField(required=False,initial=1)
  49. self.fields['antivirus'] = forms.BooleanField(required=False,initial=1)
  50. self.fields['blacklist'] = forms.BooleanField(required=False,initial=1)
  51. self.fields['spf'] = forms.BooleanField(required=False,initial=1)
  52. self.fields['mail_quota'] = forms.IntegerField(required=False,initial=1)
  53. def clean_password1(self):
  54. # non e' possibile cambiare la password
  55. #if not self.data['password_change_enabled']:
  56. # print('non e\' possibile cambiare la password')
  57. # raise forms.ValidationError("Non si e' abilitati a cambiare la password")
  58. #bypass in caso di password non modificata
  59. print('stato password changed:',self.data['passwordchanged'])
  60. if self.data['passwordchanged'] == '0':
  61. return self.data['password1']
  62. # nel caso la mail sia disattivata o da cancellare, bypass
  63. if 'enabled' in self.data and self.data['enabled'] == 1 and 'tobedeleted' in self.data and self.data['tobedeleted'] == 0:
  64. return self.data['password1']
  65. # password uguali nei due campi
  66. print(self.data['password1'])
  67. print(self.data['password2'])
  68. if self.data['password1'] != self.data['password2']:
  69. raise forms.ValidationError("I due campi password devono essere uguali")
  70. # lunghezza password
  71. if len(self.data['password1'].strip()) < int(getConfigurazione('mail_password_length')):
  72. raise forms.ValidationError("Password troppo corta!")
  73. # stessa password usata attualmente
  74. if 'mail' in self.data:
  75. if self.data['password1'].strip() == self.data['mail']:
  76. raise forms.ValidationError("Password gia' utilizzata")
  77. # password = nome
  78. if self.data['password1'].strip() == self.data['nome']:
  79. raise forms.ValidationError("Password uguale al nome")
  80. # presenza di spazi non validi
  81. if re.search('\s',self.data['password1']):
  82. raise forms.ValidationError("Sono presenti caratteri non validi. I caratteri accettati sono: a-z,A-Z,0-9 e \.\,\[\!\@\#\$\%\^\&\*\?\_\~\-\:\;\(\)\[\]\{\}")
  83. if re.search('\d',self.data['password1']):
  84. if re.search('[a-z]',self.data['password1']):
  85. if re.search('[A-Z]',self.data['password1']):
  86. if re.search('[\.\,\[\!\@\#\$\%\^\&\*\?\_\~\-\:\;\(\)\[\]\{\}]',self.data['password1']):
  87. return self.data['password1']
  88. raise forms.ValidationError("Non e' presente almeno un numero, una lettera maiuscola, una minuscola e un simbolo")
  89. #return self.data['password1']
  90. #def clean_password2(self):
  91. # if self.fields['password1'] != self.fields['password2']:
  92. # raise forms.ValidationError('Confronto Email non riuscito')
  93. # return self.fields['password2']
  94. def clean__mail(self):
  95. if ('@',' ','!') in self.data['mail']:
  96. raise forms.ValidationError('Caratteri non validi')
  97. return self.data['mail']
  98. def getLevel(self):
  99. securitylevel = []
  100. s = getSecurityLevelAll()
  101. #s = SecurityLevel.objects.filter(enabled=True).order_by('nome')
  102. for i in s:
  103. securitylevel.append((i.id,i.nome))
  104. return securitylevel