import os
import crypt
import random

#from configurazione.views import *
 
def GeneraPassword(chiave=None,salt=None):
  ''' genera una password md5
  nel caso sia fornito il 'salt', la chiave viene generata con questo valore,
  altrimenti, viene generata utilizzando la funzione os.getpid()'''
  if not salt:
    return crypt.crypt(chiave,"$1$"+str(os.getpid()) +"$")
  return crypt.crypt(chiave,salt)


'''
generazione della password

viene pescata la stringa dalla configurazione (mail_default_password)
il valore di ritorno contiene le indicazioni per generare la password.

il formato e' il seguente:

la stringa e' formata da 2 parti divise da uno /

la parte di sinistra e' formata cosi':

# Singola lettera
a: lettere minuscole
A: lettere maiuscole
n: numeri
s: simboli
# Frasi
c: citta'
o: colore
p: parole

dopo lo slash prevediamo per il momento di mettere solo:

r: la password e' randomizzata
'''

class myPassword:
    
  def __init__(self,password_schema):
    #self.formato = getConfigurazione(password_schema)
    self.formato = password_schema
    self.stringa,self.opzioni = self.formato.split('/')
    self.risultato=[]

  def parse(self):
    self.risultato = []
    for i in self.stringa:
      print('lettera:',i)
      if 'a' in i:
        print('a',i)
        self.risultato.append(self.get_alfa()) 
      if 'n' in i:
        print('n',i)
        self.risultato.append(self.get_int())
      if 'A' in i:
        print('A',i)
        self.risultato.append(self.get_upper())
      if 's' in i:
        self.risultato.append(self.get_simble())
      if 'c' in i:
        #citta'
        pass
 
    for i in self.opzioni:
      if 'r' in i:
        self.get_shuffle() 

  def get_alfa(self):
    stringa="abcdefghikjlmnopqrstuvwxyz"
    return  stringa[int(random.randrange(len(stringa)))]

  def get_upper(self):
    stringa="abcdefghikjlmnopqrstuvwxyz"
    return stringa[int(random.randrange(len(stringa)))].upper()

  def get_int(self):
    return str(int(random.randrange(10)))

  def get_simble(self):
    stringa=",.-;:_@#!$%&/()=?^'\"[]{}"
    return stringa[int(random.randrange(len(stringa)))]

  def get_shuffle(self):
    print(self.risultato)
    random.shuffle(self.risultato)

  def getPassword(self):
    return "".join(self.risultato)

if __name__ == '__main__':
  x = GeneraPassword('aaasnnn/r')
  print("password generata: ",x)

