def __resulatEnvoi(self, errCode): u"""Slot notifié quand l'envoi du mail est fini errCode indique le succès, ou l'échec (avec la raison) de l'envoi du mail """ if errCode == MailSender.MAIL_ERROR_NONE: # Mail envoyé, mise à jour de la base self.notification.emit(u"Email envoyé", MailUI.DUREE_MESSAGE) index = self._ui.cbAbsence.currentIndex() sql = MailSQL.mailEnvoye(str(self.__absences[index]["id"])) req = QSqlQuery() if not req.exec_(sql): QMessageBox.critical(self, u"Erreur de base de données", u"Le mail a été envoyé mais impossible de <br />" + u"l'enregistrer dans la base.") # TODO logger print "SQL error" print str(req.lastError().text().toUtf8()) print req.lastQuery() else: self.majBdd.emit() elif (errCode == MailSender.MAIL_ERROR_TIMEOUT or errCode == MailSender.MAIL_ERROR_CONNECTION): message = u"Email non envoyé - " if errCode == MailSender.MAIL_ERROR_TIMEOUT: message += u"Durée dépassée" else: message += u"Erreur de connexion" self.notification.emit(message, MailUI.DUREE_MESSAGE) QMessageBox.critical(self, "Erreur de connection", u"Impossible de contacter le serveur.<br />" + u"Veuillez vérifier la connexion à internet, <br />" + u"ainsi que l'adresse du serveur de messagerie.") elif errCode == MailSender.MAIL_ERROR_AUTHENTICATION: message = u"Email non envoyé - Erreur d'authentification" self.notification.emit(message, MailUI.DUREE_MESSAGE) QMessageBox.critical(self, "Erreur d'authentification", "Indentifiants incorrects.<br />(login " + self.__conf["email"] + ")") del self.__password else: # MailSender.MAIL_ERROR_OTHER: message = u"Email non envoyé - Erreur inconnue" self.notification.emit(message, MailUI.DUREE_MESSAGE) QMessageBox.critical(self, "Erreur inconnue", "Une erreur inconnue s'est produite.<br />(login '" + self.__conf["email"] + "')") # TODO logger l'erreur réelle à la levée de l'exception self.majBdd.emit()
def miseAJour(self): u"""Liste les absences pouvant donner lieu à un email de rappel""" self._ui.cbAbsence.clear() # Vérification des mails à envoyer req = QSqlQuery() sql = MailSQL.construitRequeteComptage(self.__conf["duree"]) if req.exec_(sql): req.next() nbMails = req.record().value(0) else: # TODO log print req.lastError().text() print req.lastQuery() print "Erreur de requête" return label = str(nbMails) + " absence" if nbMails == 0: label += " :" self._ui.lAbsence.setText(label) self._ui.leSujet.setText("") self._ui.teCorps.setText("") self.__activerUi(False) self._ui.pbEnvoyer.setText("Envoyer") return else: self.__activerUi(True) if nbMails > 1: label += "s" label += " :" self._ui.lAbsence.setText(label) sql = MailSQL.construitRequeteListe(self.__conf["duree"]) if not req.exec_(sql): print req.lastError().text() print req.lastQuery() print "Erreur de requête" else: self.__absences = [] while (req.next()): absence = {} rec = req.record() absence = {} absence["id"] = rec.value(0) absence["date"] = QDate.fromString(rec.value(1), Qt.ISODate) absence["nom"] = rec.value(2) absence["adresse"] = rec.value(3) self.__absences.append(absence) item = absence["nom"] + " le " item += absence["date"].toString(Qt.SystemLocaleLongDate) self._ui.cbAbsence.addItem(item)
def __resulatEnvoi(self, errCode): u"""Slot notifié quand l'envoi du mail est fini errCode indique le succès, ou l'échec (avec la raison) de l'envoi du mail """ if errCode == MailSender.MAIL_ERROR_NONE: # Mail envoyé, mise à jour de la base self.notification.emit(u"Email envoyé", MailUI.DUREE_MESSAGE) index = self._ui.cbAbsence.currentIndex() sql = MailSQL.mailEnvoye(str(self.__absences[index]["id"])) req = QSqlQuery() if not req.exec_(sql): QMessageBox.critical( self, u"Erreur de base de données", u"Le mail a été envoyé mais impossible de <br />" + u"l'enregistrer dans la base.") # TODO logger print "SQL error" print str(req.lastError().text().toUtf8()) print req.lastQuery() else: self.majBdd.emit() elif (errCode == MailSender.MAIL_ERROR_TIMEOUT or errCode == MailSender.MAIL_ERROR_CONNECTION): message = u"Email non envoyé - " if errCode == MailSender.MAIL_ERROR_TIMEOUT: message += u"Durée dépassée" else: message += u"Erreur de connexion" self.notification.emit(message, MailUI.DUREE_MESSAGE) QMessageBox.critical( self, "Erreur de connection", u"Impossible de contacter le serveur.<br />" + u"Veuillez vérifier la connexion à internet, <br />" + u"ainsi que l'adresse du serveur de messagerie.") elif errCode == MailSender.MAIL_ERROR_AUTHENTICATION: message = u"Email non envoyé - Erreur d'authentification" self.notification.emit(message, MailUI.DUREE_MESSAGE) QMessageBox.critical( self, "Erreur d'authentification", "Indentifiants incorrects.<br />(login " + self.__conf["email"] + ")") del self.__password else: # MailSender.MAIL_ERROR_OTHER: message = u"Email non envoyé - Erreur inconnue" self.notification.emit(message, MailUI.DUREE_MESSAGE) QMessageBox.critical( self, "Erreur inconnue", "Une erreur inconnue s'est produite.<br />(login '" + self.__conf["email"] + "')") # TODO logger l'erreur réelle à la levée de l'exception self.majBdd.emit()