예제 #1
0
    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()
예제 #2
0
    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)
예제 #3
0
    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)
예제 #4
0
    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()