from django import forms

import re
from sicurezza.views import getSecurityLevelAll
from .models import *
from domini.models import *

from django import forms

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

  def update(self):
    self.fields['mailfrom'] = forms.CharField(required=True)
    self.fields['domain'] = forms.IntegerField(required=True)
    self.fields['mailto'] = forms.CharField(required=False,max_length=128)
    self.fields['nota'] = forms.CharField(widget=forms.Textarea(attrs={'rows':4,'cols':60}),required=False,initial='')

    self.fields['enabled'] =  forms.BooleanField(required=False)
    self.fields['locked'] = forms.BooleanField(required=False)
    self.fields['tobedeleted'] = forms.BooleanField(required=False)
    self.fields['utenteautorizzato'] = forms.CharField(required=False,max_length=128)

  def clean_mailto(self):
    #check correttezza email.
    mailto = self.data['mailto']
    print('data',mailto)

    # se 'mailto' è vuoto, si prende l'utente autorizzato.
    if not len(mailto): mailto = self.data['utenteautorizzato']
    print('data full',mailto)

    print("self.data['domain']",self.data['domain'])
    domain_domain=""
    try:
      domain = Domini.objects.get(pk=self.data['domain'])
      domain_domain = domain.nome
    except Domini.DoesNotExist:
      raise forms.ValidationError("Il dominio non e' valido")

    baseconfronto = "{}@{}".format(self.data['mailfrom'],domain.nome)
    print("base confronto: ",baseconfronto)

    if mailto == baseconfronto:
      raise forms.ValidationError("La destinazione non può essere uguale alla sorgente!")

    '''
    #cp = re.compile("[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,4}")
    cp = re.compile("[a-z0-9\.\+_-]+@[a-z0-9\._-]+\.[a-z]{2,6}")

    if cp.match(baseconfronto):
      print('confronto non valido')
      raise forms.ValidationError("Formato Email errato")
    else: print('formato mail valido')
    '''

    return mailto
