Ciao lista, sto facendo una applicazione con genropy, per cui ho scritto un servizio che mi permette di integrare (in forma minima, per adesso) genropy e il server ldap. Lo uso per l'autenticazione degli utenti, e per recuperare i dati utente durante le varie lavorazione (gestione dei ticket, l'utente digita solo la matricola e si ritrova i suoi dati o i dati della persona per cui sta facendo la richiesta). Il problema che mi ritrovo ad affrontare è la gestione delle date (tipicamente l'account expiration date), che in ldap è in un formato non compatibile con datetime (ms-file, ho trovato questa indicazione durante le mie ricerche).
Possibile che python-ldap non abbia già previsto di suo un metodo per la conversione dei due formati? mi sono letto quasi tutta la documentazione del sito ufficiale, ma non ne ho trovata traccia... con un po' di reverse engineering, ho sfornato il codice allegato, che mi fa la conversione, ma mi ritrovo con uno strano problema... evidentemente per alcuni utenti, sono state inserite delle date estremamente avanti nel futuro, e quando cerco di fare la conversione, il codice va in errore di overflow. per ovviare alla cosa, ho fatto un controllo che se i giorni calcolati sono superiore a 400, rispetto alla data attuale, semplicemente viene ignorata la data di scadenza (impostandola a None), in questo modo posso trasasformarlo in datetime e continuare a far funzionare il tutto... Il tutto non dovrebbe dare problemi, in quanto il programma dovrebbe fare il controllo degli utenti con una cadenza almeno annuale, spostando di volta in volta le scadenze che superano i 400 giorni dal momento dell'esecuzione. ora... la mia domanda è più pragmaticamente semplice... il codice funziona, e per ora mi va bene... ma possibile che un tools come python-ldap non lo preveda già di suo? qualcuno ha esperienze in merito? Byez -- Gollum1 - http://www.gollumone.it Tesssssoro, dov'é il mio tessssoro...
def convertMS_time(self, dt): delta = datetime.datetime.now() + datetime.timedelta(400) - datetime.datetime.strptime('1/1/1601', "%m/%d/%Y") microseconds = int(dt)/10 seconds, microseconds = divmod(microseconds, 1000000) days, seconds = divmod(seconds, 86400) if days > delta.days: return None return datetime.datetime.strptime('1/1/1601', "%m/%d/%Y") + datetime.timedelta(days, seconds, microseconds)
_______________________________________________ Python mailing list Python@lists.python.it https://lists.python.it/mailman/listinfo/python