def setDao(self, dao):
     self.dao = dao
     if dao is None:
         # Crea un nuovo Dao vuoto
         self.dao = AccountEmail()
     self._refresh()
     return self.dao
class AnagraficaAccountMailEdit(AnagraficaEdit):
    """ Modifica un record dell'anagrafica account di posta elettronica """

    def __init__(self, anagrafica):
        AnagraficaEdit.__init__(self,
            anagrafica,
            'Dati account di posta elettronica',
            root='anagrafica_account_mail_detail_table',
            path='_anagrafica_account_mail_elements.glade')
        self._widgetFirstFocus = self.denominazione_entry

    def draw(self, cplx=False):
        pass

    def setDao(self, dao):
        self.dao = dao
        if dao is None:
            # Crea un nuovo Dao vuoto
            self.dao = AccountEmail()
        self._refresh()
        return self.dao

    def clear(self):
        self.denominazione_entry.set_text('')
        self.indirizzo_entry.set_text('')
        self.preferito_checkbutton.set_active(False)
        self.server_smtp_entry.set_text('')
        self.porta_smtp_entry.set_text('')
        self.crypto_ssl_checkbutton.set_active(False)
        self.username_entry.set_text('')
        self.password_entry.set_text('')
        self.memo_password_checkbutton.set_active(False)
        self.oggetto_entry.set_text('')
        textview_set_text(self.firma_textview, 'Documento creato e inviato tramite Promogest http://www.promogest.me')
        textview_set_text(self.body_textview, '')
        self.result_test_label.set_text('')

    def _refresh(self):
        self.clear()
        self.denominazione_entry.set_text(self.dao.denominazione or '')
        self.indirizzo_entry.set_text(self.dao.indirizzo or '')
        self.preferito_checkbutton.set_active(self.dao.preferito or False)
        self.server_smtp_entry.set_text(self.dao.server_smtp or '')
        self.porta_smtp_entry.set_text(str(self.dao.porta_smtp or '465'))
        self.crypto_ssl_checkbutton.set_active(self.dao.cripto_SSL or False)
        self.username_entry.set_text(self.dao.username or '')
        self.oggetto_entry.set_text(self.dao.oggetto or '')
        textview_set_text(self.firma_textview, self.dao.firma or 'Documento creato e inviato tramite Promogest http://www.promogest.me')
        textview_set_text(self.body_textview, self.dao.body or '')
        password = ''
        try:
            password = keyring.get_password('promogest2',
                                            self.dao.username)
        except:
            pass
        self.password_entry.set_text(password or '')
        del password
        #self.memo_password_checkbutton.set_active(False)

    def saveDao(self, tipo=None):
        denominazione = self.denominazione_entry.get_text()
        if denominazione == '':
            obligatoryField(self.dialogTopLevel, self.denominazione_entry)
        self.dao.denominazione = denominazione
        self.dao.id_azienda = env.azienda
        self.dao.indirizzo = self.indirizzo_entry.get_text()
        self.dao.preferito = self.preferito_checkbutton.get_active()
        self.dao.server_smtp = self.server_smtp_entry.get_text()
        self.dao.porta_smtp = int(self.porta_smtp_entry.get_text())
        self.dao.cripto_SSL = self.crypto_ssl_checkbutton.get_active()
        self.dao.username = self.username_entry.get_text()
        self.dao.oggetto = self.oggetto_entry.get_text()
        self.dao.firma = textview_get_text(self.firma_textview)
        self.dao.body = textview_get_text(self.body_textview)
        #self.dao.memo_password = self.memo_password_checkbutton.get_active()
        self.dao.persist()

        if keyring:
            password = self.password_entry.get_text()
            try:
                keyring.set_password('promogest2', self.dao.username, password)
            except Exception as ex:
                messageWarning('Impossibile salvare la password nel portachiavi di sistema:\n\n%s.' % str(ex))

    def on_test_conn_button_clicked(self, widget):
        s = None
        self.result_test_label.set_text('Connessione in corso...')

        if self.crypto_ssl_checkbutton.get_active():
            try:
                s = smtplib.SMTP_SSL(self.server_smtp_entry.get_text(),
                                    port=self.porta_smtp_entry.get_text())
            except:
                self.result_test_label.set_text('Connessione al server non riuscita.')
                return
        else:
            try:
                s = smtplib.SMTP(self.server_smtp_entry.get_text())
                s.starttls()
            except:
                self.result_test_label.set_text('Connessione al server non riuscita.')
                return
        try:
            s.login(self.username_entry.get_text(),
                    self.password_entry.get_text())
        except:
            self.result_test_label.set_text('Nome utente o password non validi.')
            return
        if s:
            s.quit()
        self.result_test_label.set_text('Connessione riuscita con successo.')