from django import  forms
from .models import *
import re
from configurazione.views import *

class LoginUser(forms.Form):
  def __init__(self,*args,**kwargs):
    forms.Form.__init__(self,*args,**kwargs)
    self.fields['username'] = forms.CharField(required=True)
    self.fields['password'] = forms.CharField(required=True,widget=forms.PasswordInput)


class NuoveCredenziali(forms.Form):
  def __init__(self,*args,**kwargs):
    forms.Form.__init__(self,*args,**kwargs)

    self.fields['password1'] = forms.CharField(required=True,widget=forms.PasswordInput)
    self.fields['password2'] = forms.CharField(required=True,widget=forms.PasswordInput)

  def clean_password1(self):
    # password uguali nei due campi
    data = self.data['password1']
    if data != self.data['password2']:
      raise forms.ValidationError("I due campi password devono essere uguali")

    # lunghezza password
    if len(data.strip()) < int(getConfigurazione('mail_password_length')):
      raise forms.ValidationError("Password troppo corta!")

    # presenza di spazi non validi
    if re.search('\s',data):
      raise forms.ValidationError("Sono presenti caratteri non validi. I caratteri accettati sono: a-z,A-Z,0-9 e \.\,\[\!\@\#\$\%\^\&\*\?\_\~\-\:\;\(\)\[\]\{\}")

    if re.search('\d',data):
      if re.search('[a-z]',data):
        if re.search('[A-Z]',data):
          if re.search('[\.\,\[\!\@\#\$\%\^\&\*\?\_\~\-\:\;\(\)\[\]\{\}]',data):
            return data
    raise forms.ValidationError("Non e' presente almeno un numero, una lettera maiuscola, una minuscola e un simbolo")

  def clean_password2(self):
    data2 = self.data['password2']
    data1 = self.data['password1']
    if data2 != data1: raise forms.ValidationError('Confronto Email non riuscito')
    return data2

