예제 #1
0
    def remove_event(self):
        """
            Delete an existing event.
        """
        # Verifies if there is a selected event
        try:
            # Gets the event id
            r = self.eventsTable.currentRow()
            event_id = self.eventsTable.item(r, 0).text()

            # Asks if the user really wants to remove the event
            choice = QtGui.QMessageBox.question(
                self, u"Apagar evento",
                u"Tem certeza que deseja apagar este evento?",
                QtGui.QMessageBox.Yes | QtGui.QMessageBox.No)
            if choice == QtGui.QMessageBox.Yes:
                cursor.execute("DELETE FROM events WHERE id=?",
                               (str(event_id), ))
                conn.commit()
            else:
                pass

            # Updates the events table
            self.load_table()
        except AttributeError:
            self.errorMsg.setText(u"Selecione um registro existente!")
예제 #2
0
    def load_table(self):
        self.clientsTable.clear()

        cursor.execute("SELECT * FROM clients")
        data = cursor.fetchall()

        if len(data) < 10:
            self.clientsTable.setRowCount(10)
        else:
            self.clientsTable.setRowCount(len(data))
        self.clientsTable.setColumnCount(4)
        self.clientsTable.setHorizontalHeaderLabels(
            (u"ID", u"Nome Completo", u"E-mail", u"CPF"))
        self.clientsTable.horizontalHeader().setResizeMode(
            QtGui.QHeaderView.Stretch)
        self.clientsTable.verticalHeader().setResizeMode(
            QtGui.QHeaderView.Stretch)
        r, c = 0, 0
        for item in data:
            for i in range(4):
                newitem = QtGui.QTableWidgetItem(unicode(item[i]))
                self.clientsTable.setItem(r, c, newitem)
                c += 1
            r += 1
            c = 0
예제 #3
0
 def add_client(self):
     cursor.execute("INSERT INTO subscriptions VALUES (NULL,?,?)",
                    (str(self.event_id),
                     str(self.clients[self.clientsList.currentIndex()][0])))
     conn.commit()
     self.certificates_instance.load_list()
     self.hide()
    def load_list(self):
        """
            Loads all subscriptions of the selected event
            and insert them in the subscriptionList widget.
        """

        # Get the subscripted clients
        if self.events:
            cursor.execute(
                "SELECT id,client_id FROM subscriptions WHERE event_id=?",
                str(self.events[self.eventsList.currentIndex()][0])
            )
            self.clients = cursor.fetchall()
        else:
            self.clients = []

        # Clears the widget to insert updated info
        self.subscriptionList.clear()

        # Select all subscripted clients and add them
        # to the subscriptionList widget
        for client in self.clients:
            cursor.execute(
                "SELECT name FROM clients WHERE id=?",
                str(client[1])
            )
            client_name = cursor.fetchone()
            if client:
                self.subscriptionList.addItem(unicode(client_name[0]))
    def remove_event(self):
        """
            Delete an existing event.
        """
        # Verifies if there is a selected event
        try:
            # Gets the event id
            r = self.eventsTable.currentRow()
            event_id = self.eventsTable.item(r, 0).text()

            # Asks if the user really wants to remove the event
            choice = QtGui.QMessageBox.question(
                self, u"Apagar evento",
                u"Tem certeza que deseja apagar este evento?",
                QtGui.QMessageBox.Yes | QtGui.QMessageBox.No
            )
            if choice == QtGui.QMessageBox.Yes:
                cursor.execute("DELETE FROM events WHERE id=?", str(event_id))
                conn.commit()
            else:
                pass

            # Updates the events table
            self.load_table()
        except AttributeError:
            self.errorMsg.setText(u"Selecione um registro existente!")
예제 #6
0
    def remove_signature(self):
        """
            Delete an existing signature.
        """
        # Verifies if there is a selected signature
        try:
            # Gets the selected signature id
            sig_id = self.signatures[self.signaturesList.currentRow()][0]

            # Asks if the user really wants to delete the signature
            choice = QtGui.QMessageBox.question(
                self, u"Apagar assinatura",
                u"Tem certeza que deseja apagar esta assinatura?",
                QtGui.QMessageBox.Yes | QtGui.QMessageBox.No)

            if choice == QtGui.QMessageBox.Yes:
                os.remove(
                    os.path.join(app_dir, "signatures",
                                 "{0}.png".format(str(sig_id))))
                cursor.execute("DELETE FROM signatures WHERE id=?",
                               (str(sig_id), ))
                conn.commit()
            else:
                pass

            # Updates the signatures list
            self.load_list()
        except IndexError:
            self.errorMsg.setText(u"Selecione um registro existente!")
    def remove_client(self):
        """
            Remove a client from the event's subscriptions.
        """

        # If there is a client selected, removes it.
        # If there is not, shows up an error message.
        try:
            current_subscription = self.subscriptionList.currentRow()
            subscription_id = self.clients[current_subscription][0]
            # Asks if the user really wants to remove the client
            choice = QtGui.QMessageBox.question(
                self, u"Apagar inscrição",
                u"Tem certeza que deseja apagar esta inscrição?",
                QtGui.QMessageBox.Yes | QtGui.QMessageBox.No
            )
            if choice == QtGui.QMessageBox.Yes:
                cursor.execute(
                    "DELETE FROM subscriptions WHERE id=?",
                    str(subscription_id)
                )
                conn.commit()
            else:
                pass
            self.load_list()
        except IndexError:
            self.errorMsg.setText(u"Selecione um cliente existente!")
예제 #8
0
    def load_list(self):
        """
            Loads all subscriptions of the selected event
            and insert them in the subscriptionList widget.
        """

        # Get the subscripted clients
        if self.events:
            cursor.execute(
                "SELECT id,client_id FROM subscriptions WHERE event_id=?",
                (str(self.events[self.eventsList.currentIndex()][0]),)
            )
            self.clients = cursor.fetchall()
        else:
            self.clients = []

        # Clears the widget to insert updated info
        self.subscriptionList.clear()

        # Select all subscripted clients and add them
        # to the subscriptionList widget
        for client in self.clients:
            cursor.execute(
                "SELECT name FROM clients WHERE id=?",
                (str(client[1]),)
            )
            client_name = cursor.fetchone()
            if client:
                self.subscriptionList.addItem(unicode(client_name[0]))
예제 #9
0
    def remove_client(self):
        """
            Remove a client from the event's subscriptions.
        """

        # If there is a client selected, removes it.
        # If there is not, shows up an error message.
        try:
            current_subscription = self.subscriptionList.currentRow()
            subscription_id = self.clients[current_subscription][0]
            # Asks if the user really wants to remove the client
            choice = QtGui.QMessageBox.question(
                self, u"Apagar inscrição",
                u"Tem certeza que deseja apagar esta inscrição?",
                QtGui.QMessageBox.Yes | QtGui.QMessageBox.No
            )
            if choice == QtGui.QMessageBox.Yes:
                cursor.execute(
                    "DELETE FROM subscriptions WHERE id=?",
                    (str(subscription_id),)
                )
                conn.commit()
            else:
                pass
            self.load_list()
        except IndexError:
            self.errorMsg.setText(u"Selecione um cliente existente!")
예제 #10
0
    def load_table(self):
        self.eventsTable.clear()

        cursor.execute("SELECT * FROM events")
        data = cursor.fetchall()

        if len(data) < 10:
            self.eventsTable.setRowCount(10)
        else:
            self.eventsTable.setRowCount(len(data))
        self.eventsTable.setColumnCount(4)
        self.eventsTable.setHorizontalHeaderLabels((u"ID",
                                                    u"Título",
                                                    u"Data de Início",
                                                    u"Data de Término"))
        self.eventsTable.horizontalHeader().setResizeMode(QtGui.QHeaderView.Stretch)
        self.eventsTable.verticalHeader().setResizeMode(QtGui.QHeaderView.Stretch)
        r,c=0,0
        for item in data:
            for i in range(4):
                newitem = QtGui.QTableWidgetItem(str(item[i]))
                self.eventsTable.setItem(r,c,newitem)
                c += 1
            r += 1
            c = 0
예제 #11
0
    def __init__(self, certificates_instance, event_id):
        super(AddClientDialog, self).__init__()
        self.event_id = event_id
        self.certificates_instance = certificates_instance

        cursor.execute("SELECT * FROM clients")
        self.clients = cursor.fetchall()

        self.mainLayout = QtGui.QVBoxLayout()

        self.titleLabel = QtGui.QLabel("Selecione um cliente")
        self.titleLabel.setFont(titleFont)

        self.clientsList = QtGui.QComboBox()
        for client in self.clients:
            self.clientsList.addItem(str(client[1]))

        self.saveBtn = QtGui.QPushButton("Selecionar")
        self.saveBtn.clicked.connect(self.add_client)

        self.mainLayout.addWidget(self.titleLabel)
        self.mainLayout.addWidget(self.clientsList)
        self.mainLayout.addWidget(self.saveBtn)

        self.setLayout(self.mainLayout)
    def remove_signature(self):
        """
            Delete an existing signature.
        """
        # Verifies if there is a selected signature
        try:
            # Gets the selected signature id
            sig_id = self.signatures[self.signaturesList.currentRow()][0]

            # Asks if the user really wants to delete the signature
            choice = QtGui.QMessageBox.question(
                self, u"Apagar assinatura",
                u"Tem certeza que deseja apagar esta assinatura?",
                QtGui.QMessageBox.Yes | QtGui.QMessageBox.No
            )

            if choice == QtGui.QMessageBox.Yes:
                os.remove(os.path.join(app_dir, "signatures",
                                       "{0}.png".format(str(sig_id))))
                cursor.execute(
                    "DELETE FROM signatures WHERE id=?",
                    (str(sig_id),)
                )
                conn.commit()
            else:
                pass

            # Updates the signatures list
            self.load_list()
        except IndexError:
            self.errorMsg.setText(u"Selecione um registro existente!")
예제 #13
0
    def load_table(self):
        self.eventsTable.clear()

        cursor.execute("SELECT * FROM events ORDER BY id DESC")
        data = cursor.fetchall()

        if len(data) < 10:
            self.eventsTable.setRowCount(10)
        else:
            self.eventsTable.setRowCount(len(data))
        self.eventsTable.setColumnCount(4)
        self.eventsTable.setHorizontalHeaderLabels((u"ID",
                                                    u"Título",
                                                    u"Data de Início",
                                                    u"Data de Término"))
        self.eventsTable.horizontalHeader().setResizeMode(QtGui.QHeaderView.Stretch)
        self.eventsTable.verticalHeader().setResizeMode(QtGui.QHeaderView.Stretch)
        r,c=0,0
        for item in data:
            for i in range(4):
                newitem = QtGui.QTableWidgetItem(unicode(item[i]))
                self.eventsTable.setItem(r,c,newitem)
                c += 1
            r += 1
            c = 0
예제 #14
0
    def generate_send(self):
        if len(self.clients) == 0:
            self.errorMsg.setText(u"Primeiro inscreva clientes!")
        else:
            self.generate()
            self.mailer = Mailer()
            self.mailer.connect()
            for client in self.clients:
                cursor.execute("SELECT name,email FROM clients WHERE id=?",
                               str(client[1]))
                client_data = cursor.fetchone()

                filepath = self.save_folder + "/"
                filepath += ''.join(i for i in unicode(client_data[0])
                                    if ord(i) < 128).upper()
                filepath += ".pdf"
                filepath.replace(" ", "")
                self.mailer.send_certificate(filepath, unicode(client_data[1]))

            cursor.execute(
                "SELECT name,email FROM signatures WHERE id=?",
                str(self.signatures[self.responsibleList.currentIndex()][0]))
            responsible = cursor.fetchone()
            filepath = self.save_folder + "/responsible.pdf"
            self.mailer.send_certificate(filepath, unicode(responsible[1]))

            self.mailer.quit()
    def generate(self):
        if len(self.clients) == 0:
            self.errorMsg.setText(u"Primeiro inscreva clientes!")
        else:
            self.save_folder = QtGui.QFileDialog.getExistingDirectory(None,
                                                                u"Salvar em")

            self.cert_data = {"event": unicode(self.events[self.eventsList.currentIndex()][1]).upper(),
                         "start_date": unicode(self.events[self.eventsList.currentIndex()][2]),
                         "end_date": unicode(self.events[self.eventsList.currentIndex()][3]),
                         "hours": unicode(self.events[self.eventsList.currentIndex()][4]),
                         "content": unicode(self.events[self.eventsList.currentIndex()][5]).upper(),
                         "responsible_sig": unicode(self.signatures[self.responsibleList.currentIndex()][0]),
                         "institution_sig": unicode(self.signatures[self.institutionList.currentIndex()][0]),
                         "role": unicode(self.signatures[self.institutionList.currentIndex()][2]),
                         "institution": unicode(self.Config.get("Main","Name")).upper(),
                         "inst_register": unicode(self.Config.get("Main","ID"))}

            for client in self.clients:
                cursor.execute("SELECT name,register FROM clients WHERE id=?",str(client[1]))
                client_data = cursor.fetchone()
                self.cert_data["name"] = unicode(client_data[0]).upper()
                self.cert_data["register"] = unicode(client_data[1])
                generate_certificate(self.save_folder, self.cert_data)

            cursor.execute("SELECT * FROM signatures WHERE id=?",
                           str(self.signatures[self.responsibleList.currentIndex()][0]))
            responsible = cursor.fetchone()
            self.cert_data["name"] = unicode(responsible[1]).upper()
            self.cert_data["register"] = unicode(responsible[4]).upper()
            generate_certificate_responsible(self.save_folder, self.cert_data)
    def run(self):
        self.mailer = Mailer()
        self.mailer.connect()
        self.emit(QtCore.SIGNAL("update"),1,0)

        n = 1
        for client in self.clients:
            cursor.execute("SELECT name,email FROM clients WHERE id=?",str(client[1]))
            client_data = cursor.fetchone()

            filepath = os.path.join(unicode(self.save_folder),u''.join(i for i in \
                                                                unicode(client_data[0]) \
                                                                if ord(i)<128)\
                                                                .upper()\
                                                                .replace(" ",""))
            filepath += ".pdf"

            self.cert_data["name"] = unicode(client_data[0]).upper()
            self.cert_data["register"] = unicode(client_data[1])

            self.emit(QtCore.SIGNAL("update"),2,n)
            generate_certificate(self.save_folder, self.cert_data)
            self.mailer.send_certificate(filepath,unicode(client_data[1]))
            n+=1

        filepath = os.path.join(unicode(self.save_folder),u"responsible.pdf")
        self.cert_data["name"] = unicode(self.responsible[1]).upper()
        self.cert_data["register"] = unicode(self.responsible[4]).upper()
        self.emit(QtCore.SIGNAL("update"),3,0)
        generate_certificate_responsible(self.save_folder, self.cert_data)
        self.mailer.send_certificate(unicode(filepath),unicode(self.responsible[3]))

        self.emit(QtCore.SIGNAL("update"),4,0)
        self.mailer.quit()
예제 #17
0
    def load_table(self):
        self.clientsTable.clear()

        cursor.execute("SELECT * FROM clients")
        data = cursor.fetchall()

        if len(data) < 10:
            self.clientsTable.setRowCount(10)
        else:
            self.clientsTable.setRowCount(len(data))
        self.clientsTable.setColumnCount(4)
        self.clientsTable.setHorizontalHeaderLabels((u"ID",
                                                    u"Nome Completo",
                                                    u"E-mail",
                                                    u"CPF"))
        self.clientsTable.horizontalHeader().setResizeMode(QtGui.QHeaderView.Stretch)
        self.clientsTable.verticalHeader().setResizeMode(QtGui.QHeaderView.Stretch)
        r,c=0,0
        for item in data:
            for i in range(4):
                newitem = QtGui.QTableWidgetItem(unicode(item[i]))
                self.clientsTable.setItem(r,c,newitem)
                c += 1
            r += 1
            c = 0
    def __init__(self, certificates_instance, event_id):
        super(AddClientDialog,self).__init__()
        self.setWindowTitle(u"Adicionar cliente")

        self.event_id = event_id
        self.certificates_instance = certificates_instance

        cursor.execute("SELECT * FROM clients ORDER BY name ASC")
        self.clients = cursor.fetchall()

        self.mainLayout = QtGui.QVBoxLayout()

        self.titleLabel = QtGui.QLabel(u"Selecione um cliente")
        self.titleLabel.setFont(titleFont)

        self.clientsList = QtGui.QComboBox()
        for client in self.clients:
            self.clientsList.addItem(unicode(client[1]))

        self.saveBtn = QtGui.QPushButton(u"Selecionar")
        self.saveBtn.clicked.connect(self.add_client)

        self.mainLayout.addWidget(self.titleLabel)
        self.mainLayout.addWidget(self.clientsList)
        self.mainLayout.addWidget(self.saveBtn)

        self.setLayout(self.mainLayout)
예제 #19
0
 def save_data(self):
     if self.clientNameLineEdit.text() == "":
         self.errorMsg.setText("O nome precisa estar preenchido!")
     elif self.clientEmailLineEdit.text() == "":
         self.errorMsg.setText("O email precisa estar preenchido!")
     elif validar_cpf(self.clientRegisterLineEdit.text()) == False:
         self.errorMsg.setText(u"O CPF é inválido!")
     else:
         if self.client_id:
             cursor.execute(
                 """
                             UPDATE clients
                             SET name=?,
                             email=?,
                             register=?
                             WHERE id=?
                            """, (str(self.clientNameLineEdit.text()),
                                  str(self.clientEmailLineEdit.text()),
                                  str(self.clientRegisterLineEdit.text()),
                                  str(self.client_id)))
         else:
             cursor.execute("INSERT INTO clients VALUES (NULL,?,?,?)",
                            (str(self.clientNameLineEdit.text()),
                             str(self.clientEmailLineEdit.text()),
                             str(self.clientRegisterLineEdit.text())))
         conn.commit()
         self.clients_list_instance.load_table()
         self.hide()
    def load_list(self):
        self.signaturesList.clear()

        cursor.execute("SELECT * FROM signatures ORDER BY name ASC")
        self.signatures = cursor.fetchall()

        for sig in self.signatures:
            self.signaturesList.addItem(unicode(sig[1]))
예제 #21
0
    def load_list(self):
        self.signaturesList.clear()

        cursor.execute("SELECT * FROM signatures")
        self.signatures = cursor.fetchall()

        for sig in self.signatures:
            self.signaturesList.addItem(sig[1])
예제 #22
0
    def load_list(self):
        self.signaturesList.clear()

        cursor.execute("SELECT * FROM signatures")
        self.signatures = cursor.fetchall()

        for sig in self.signatures:
            self.signaturesList.addItem(sig[1])
 def add_client(self):
     cursor.execute("INSERT INTO subscriptions VALUES (NULL,?,?)",
                   (
                   str(self.event_id),
                   str(self.clients[self.clientsList.currentIndex()][0])
                   ))
     conn.commit()
     self.certificates_instance.load_list()
     self.hide()
예제 #24
0
    def __init__(self, clients_list_instance, client_id=None):
        super(ClientDialog, self).__init__()
        self.setGeometry(450, 300, 400, 200)
        self.clients_list_instance = clients_list_instance

        self.client_id = client_id

        self.mainLayout = QtGui.QVBoxLayout()
        self.formLayout = QtGui.QFormLayout()

        self.clientName = QtGui.QLabel(u"Nome completo", self)
        self.clientNameLineEdit = QtGui.QLineEdit(self)
        self.clientNameLineEdit.setPlaceholderText("Ex: Fulano da Silva")
        self.formLayout.addRow(self.clientName, self.clientNameLineEdit)

        self.clientEmail = QtGui.QLabel(u"E-mail", self)
        self.clientEmailLineEdit = QtGui.QLineEdit(self)
        self.clientEmailLineEdit.setPlaceholderText("Ex: [email protected]")
        self.formLayout.addRow(self.clientEmail, self.clientEmailLineEdit)

        self.clientRegister = QtGui.QLabel(u"CPF", self)
        self.clientRegisterLineEdit = QtGui.QLineEdit(self)
        self.clientRegisterLineEdit.setInputMask(
            "999.999.999-99")  ## Brazil CPF
        self.formLayout.addRow(self.clientRegister,
                               self.clientRegisterLineEdit)

        self.errorMsg = QtGui.QLabel("", self)
        self.errorMsg.setStyleSheet("color: red; font-weight: bold;")

        self.saveBtn = QtGui.QPushButton("Salvar")
        self.saveBtn.clicked.connect(self.save_data)

        if self.client_id:
            self.setWindowTitle("Editar cliente")
            self.titleLabel = QtGui.QLabel("Editar cliente", self)
            self.titleLabel.setFont(titleFont)

            cursor.execute("SELECT * FROM clients WHERE id=?",
                           str(self.client_id))
            data = cursor.fetchone()

            self.clientNameLineEdit.setText(str(data[1]))
            self.clientEmailLineEdit.setText(str(data[2]))
            self.clientRegisterLineEdit.setText(str(data[3]))
        else:
            self.setWindowTitle("Cadastrar cliente")
            self.titleLabel = QtGui.QLabel("Cadastrar cliente", self)
            self.titleLabel.setFont(titleFont)

        self.mainLayout.addWidget(self.titleLabel)
        self.mainLayout.addLayout(self.formLayout)
        self.mainLayout.addWidget(self.errorMsg)
        self.mainLayout.addWidget(self.saveBtn)

        self.setLayout(self.mainLayout)
예제 #25
0
def select(table: str, values: Dict) -> List:
    """
    todo add try/except and exceptions processing; for now it's suitable only for login case
    """
    values_ToSelect = values['select_values']
    condition = values['condition']
    cursor.execute(f"SELECT {values_ToSelect} "
                   f"FROM {table} "
                   f"WHERE username =\'{condition['username']}\';")
    result = cursor.fetchall()
    return result
예제 #26
0
def insert(table: str, column_values: Dict):
    """
    todo add try/except and exceptions processing; for now it's suitable only for registration case
    """
    columns = ', '.join(column_values.keys())
    values = [v for v in column_values.values()]
    placeholders = f'\'{values[0]}\', \'{values[1]}\''
    cursor.execute(f"INSERT INTO {table} "
                   f"({columns}) "
                   f"VALUES ({placeholders});")
    connection.commit()
예제 #27
0
    def __init__(self, clients_list_instance, client_id=None):
        super(ClientDialog,self).__init__()
        self.setGeometry(450,300,400,200)
        self.clients_list_instance = clients_list_instance

        self.client_id = client_id

        self.mainLayout = QtGui.QVBoxLayout()
        self.formLayout = QtGui.QFormLayout()

        self.clientName = QtGui.QLabel(u"Nome completo", self)
        self.clientNameLineEdit = QtGui.QLineEdit(self)
        self.clientNameLineEdit.setPlaceholderText(u"Ex: Fulano da Silva")
        self.formLayout.addRow(self.clientName, self.clientNameLineEdit)

        self.clientEmail = QtGui.QLabel(u"E-mail", self)
        self.clientEmailLineEdit = QtGui.QLineEdit(self)
        self.clientEmailLineEdit.setPlaceholderText(u"Ex: [email protected]")
        self.formLayout.addRow(self.clientEmail, self.clientEmailLineEdit)

        self.clientRegister = QtGui.QLabel(u"CPF", self)
        self.clientRegisterLineEdit = QtGui.QLineEdit(self)
        self.clientRegisterLineEdit.setInputMask(u"999.999.999-99") ## Brazil CPF
        self.formLayout.addRow(self.clientRegister, self.clientRegisterLineEdit)

        self.errorMsg = QtGui.QLabel(u"",self)
        self.errorMsg.setStyleSheet("color: red; font-weight: bold;")

        self.saveBtn = QtGui.QPushButton(u"Salvar")
        self.saveBtn.clicked.connect(self.save_data)

        if self.client_id:
            self.setWindowTitle(u"Editar cliente")
            self.titleLabel = QtGui.QLabel(u"Editar cliente", self)
            self.titleLabel.setFont(titleFont)

            cursor.execute("SELECT * FROM clients WHERE id=?", str(self.client_id))
            data = cursor.fetchone()

            self.clientNameLineEdit.setText(unicode(data[1]))
            self.clientEmailLineEdit.setText(unicode(data[2]))
            self.clientRegisterLineEdit.setText(unicode(data[3]))
        else:
            self.setWindowTitle(u"Cadastrar cliente")
            self.titleLabel = QtGui.QLabel(u"Cadastrar cliente", self)
            self.titleLabel.setFont(titleFont)

        self.mainLayout.addWidget(self.titleLabel)
        self.mainLayout.addLayout(self.formLayout)
        self.mainLayout.addWidget(self.errorMsg)
        self.mainLayout.addWidget(self.saveBtn)

        self.setLayout(self.mainLayout)
    def load_list(self):
        if self.events:
            cursor.execute("SELECT id,client_id FROM subscriptions WHERE event_id=?",
                            str(self.events[self.eventsList.currentIndex()][0]))
            self.clients = cursor.fetchall()
        else:
            self.clients = []

        self.subscriptionList.clear()
        for client in self.clients:
            cursor.execute("SELECT name FROM clients WHERE id=?",str(client[1]))
            client_name = unicode(cursor.fetchone()[0])
            self.subscriptionList.addItem(client_name)
    def generate_send(self):
        self.generate_general()

        cursor.execute("SELECT * FROM signatures WHERE id=?",
                       str(self.signatures[self.responsibleList.currentIndex()][0]))
        responsible = cursor.fetchone()

        self.generate_send_progress = GenerateSendProgress(self.save_folder,
                                                           self.cert_data,
                                                           self.clients,
                                                           responsible
                                                          )
        self.generate_send_progress.show()
예제 #30
0
    def generate(self):
        if len(self.clients) == 0:
            self.errorMsg.setText(u"Primeiro inscreva clientes!")
        else:
            self.save_folder = QtGui.QFileDialog.getExistingDirectory(
                None, u"Salvar em")

            self.cert_data = {
                "event":
                unicode(
                    self.events[self.eventsList.currentIndex()][1]).upper(),
                "start_date":
                unicode(self.events[self.eventsList.currentIndex()][2]),
                "end_date":
                unicode(self.events[self.eventsList.currentIndex()][3]),
                "hours":
                unicode(self.events[self.eventsList.currentIndex()][4]),
                "content":
                unicode(
                    self.events[self.eventsList.currentIndex()][5]).upper(),
                "responsible_sig":
                unicode(
                    self.signatures[self.responsibleList.currentIndex()][0]),
                "institution_sig":
                unicode(
                    self.signatures[self.institutionList.currentIndex()][0]),
                "role":
                unicode(
                    self.signatures[self.institutionList.currentIndex()][2]),
                "institution":
                unicode(self.Config.get("Main", "Name")).upper(),
                "inst_register":
                unicode(self.Config.get("Main", "ID"))
            }

            for client in self.clients:
                cursor.execute("SELECT name,register FROM clients WHERE id=?",
                               str(client[1]))
                client_data = cursor.fetchone()
                self.cert_data["name"] = unicode(client_data[0]).upper()
                self.cert_data["register"] = unicode(client_data[1])
                generate_certificate(self.save_folder, self.cert_data)

            cursor.execute(
                "SELECT * FROM signatures WHERE id=?",
                str(self.signatures[self.responsibleList.currentIndex()][0]))
            responsible = cursor.fetchone()
            self.cert_data["name"] = unicode(responsible[1]).upper()
            self.cert_data["register"] = unicode(responsible[4]).upper()
            generate_certificate_responsible(self.save_folder, self.cert_data)
예제 #31
0
def insert_currency(table: str, values: Dict):
    """
    add prices for chosen currency. if on these dates data already exist do nothing.
    :param table:
    :param values:
    """
    placeholders = ', '.join([
        f"('{date}',{price})"
        for date, price in zip(values['date'], values['price'])
    ])
    query = f"INSERT INTO {table} " \
            f"(date, price) " \
            f"VALUES {placeholders} on conflict (date) do nothing;"
    cursor.execute(query)
    connection.commit()
예제 #32
0
    def load_list(self):
        """
            Updates the list widget with the signatures data.
        """

        # Clear the list widget to add new data
        self.signaturesList.clear()

        # Select all signatures
        cursor.execute("SELECT * FROM signatures ORDER BY name ASC")
        self.signatures = cursor.fetchall()

        # Add all signatures to the list widget
        for sig in self.signatures:
            self.signaturesList.addItem(unicode(sig[1]))
    def load_list(self):
        """
            Updates the list widget with the signatures data.
        """

        # Clear the list widget to add new data
        self.signaturesList.clear()

        # Select all signatures
        cursor.execute("SELECT * FROM signatures ORDER BY name ASC")
        self.signatures = cursor.fetchall()

        # Add all signatures to the list widget
        for sig in self.signatures:
            self.signaturesList.addItem(unicode(sig[1]))
예제 #34
0
 def remove_signature(self):
     try:
         sig_id = self.signatures[self.signaturesList.currentRow()][0]
         choice = QtGui.QMessageBox.question(self, "Apagar assinatura",
         "Tem certeza que deseja apagar esta assinatura?",
         QtGui.QMessageBox.Yes |
         QtGui.QMessageBox.No)
         if choice == QtGui.QMessageBox.Yes:
             cursor.execute("DELETE FROM signatures WHERE id=?", str(sig_id))
             conn.commit()
         else:
             pass
         self.load_list()
     except IndexError:
         self.errorMsg.setText("Selecione um registro existente!")
예제 #35
0
    def load_list(self):
        if self.events:
            cursor.execute(
                "SELECT id,client_id FROM subscriptions WHERE event_id=?",
                str(self.events[self.eventsList.currentIndex()][0]))
            self.clients = cursor.fetchall()
        else:
            self.clients = []

        self.subscriptionList.clear()
        for client in self.clients:
            cursor.execute("SELECT name FROM clients WHERE id=?",
                           str(client[1]))
            client_name = cursor.fetchone()[0]
            self.subscriptionList.addItem(str(client_name))
예제 #36
0
 def remove_signature(self):
     try:
         sig_id = self.signatures[self.signaturesList.currentRow()][0]
         choice = QtGui.QMessageBox.question(
             self, "Apagar assinatura",
             "Tem certeza que deseja apagar esta assinatura?",
             QtGui.QMessageBox.Yes | QtGui.QMessageBox.No)
         if choice == QtGui.QMessageBox.Yes:
             cursor.execute("DELETE FROM signatures WHERE id=?",
                            str(sig_id))
             conn.commit()
         else:
             pass
         self.load_list()
     except IndexError:
         self.errorMsg.setText("Selecione um registro existente!")
예제 #37
0
 def remove_client(self):
     try:
         r = self.clientsTable.currentRow()
         client_id = self.clientsTable.item(r,0).text()
         choice = QtGui.QMessageBox.question(self, u"Apagar cliente",
                                             u"Tem certeza que deseja apagar este cliente?",
                                             QtGui.QMessageBox.Yes |
                                             QtGui.QMessageBox.No)
         if choice == QtGui.QMessageBox.Yes:
             cursor.execute("DELETE FROM clients WHERE id=?", str(client_id))
             conn.commit()
         else:
             pass
         self.load_table()
     except AttributeError:
         self.errorMsg.setText(u"Selecione um registro existente!")
예제 #38
0
 def remove_event(self):
     try:
         r = self.eventsTable.currentRow()
         event_id = self.eventsTable.item(r,0).text()
         choice = QtGui.QMessageBox.question(self, "Apagar evento",
                                             "Tem certeza que deseja apagar este evento?",
                                             QtGui.QMessageBox.Yes |
                                             QtGui.QMessageBox.No)
         if choice == QtGui.QMessageBox.Yes:
             cursor.execute("DELETE FROM events WHERE id=?", str(event_id))
             conn.commit()
         else:
             pass
         self.load_table()
     except AttributeError:
         self.errorMsg.setText("Selecione um registro existente!")
 def remove_client(self):
     try:
         subscription_id = self.clients[self.subscriptionList.currentRow()][0]
         choice = QtGui.QMessageBox.question(self, u"Apagar inscrição",
                                             u"Tem certeza que deseja apagar esta inscrição?",
                                             QtGui.QMessageBox.Yes |
                                             QtGui.QMessageBox.No)
         if choice == QtGui.QMessageBox.Yes:
             cursor.execute("DELETE FROM subscriptions WHERE id=?",
                             str(subscription_id))
             conn.commit()
         else:
             pass
         self.load_list()
     except IndexError:
         self.errorMsg.setText(u"Selecione um cliente existente!")
예제 #40
0
 def remove_client(self):
     try:
         subscription_id = self.clients[
             self.subscriptionList.currentRow()][0]
         choice = QtGui.QMessageBox.question(
             self, u"Apagar inscrição",
             u"Tem certeza que deseja apagar esta inscrição?",
             QtGui.QMessageBox.Yes | QtGui.QMessageBox.No)
         if choice == QtGui.QMessageBox.Yes:
             cursor.execute("DELETE FROM subscriptions WHERE id=?",
                            str(subscription_id))
             conn.commit()
         else:
             pass
         self.load_list()
     except IndexError:
         self.errorMsg.setText("Selecione um cliente existente!")
 def save_data(self):
     """
         Saves the event data.
     """
     # Verifies if all fields are filled
     if unicode(self.eventTitleLineEdit.text()) == "":
         self.errorMsg.setText(u"O título precisa ser preenchido!")
     elif len(unicode(self.eventStartDateLineEdit.text())) < 10 or \
             len(unicode(self.eventEndDateLineEdit.text())) < 10:
         self.errorMsg.setText(u"As datas precisam estar \
                               em um formato xx/xx/xxxx!")
     elif unicode(self.eventHoursLineEdit.text()) == "":
         self.errorMsg.setText(u"As horas precisam ser um inteiro!")
     else:
         if self.event_id:
             # Updates the record if it is an existing event
             cursor.execute(
                 "UPDATE events SET title=?, start_date=?, end_date=?, \
                 hours=?, content=? WHERE id=?",
                 (
                     unicode(self.eventTitleLineEdit.text()),
                     unicode(self.eventStartDateLineEdit.text()),
                     unicode(self.eventEndDateLineEdit.text()),
                     unicode(self.eventHoursLineEdit.text()),
                     unicode(self.eventContentTextEdit.toPlainText()),
                     str(self.event_id)
                 )
             )
         else:
             # Register the event
             cursor.execute(
                 "INSERT INTO events VALUES (NULL,?,?,?,?,?)",
                 (
                     unicode(self.eventTitleLineEdit.text()),
                     unicode(self.eventStartDateLineEdit.text()),
                     unicode(self.eventEndDateLineEdit.text()),
                     unicode(self.eventHoursLineEdit.text()),
                     unicode(self.eventContentTextEdit.toPlainText())
                 )
             )
         # Saves the database
         conn.commit()
         # Update the table
         self.events_list_instance.load_table()
         # Hide the dialog
         self.hide()
    def run(self):
        """
            Generate all certificates.
        """
        n = 1
        if not self.preview:
            for client in self.clients:
                # Select client info
                cursor.execute(
                    "SELECT name,register FROM clients \
                    WHERE id=?",
                    str(client[1])
                )
                client_data = cursor.fetchone()
                self.cert_data["name"] = unicode(client_data[0]).upper()
                self.cert_data["register"] = unicode(client_data[1])

                # Updates the progress bar status
                self.emit(QtCore.SIGNAL("update"), 1, n)

                # Generate the certificate
                generate_certificate(self.save_folder, self.cert_data)
                n += 1

            # Updates the progress bar status
            self.emit(QtCore.SIGNAL("update"), 2, 0)

            # Get the responsible info
            self.cert_data["name"] = unicode(self.responsible[1]).upper()
            self.cert_data["register"] = unicode(self.responsible[4]).upper()

            # Generate the responsible certificate
            generate_certificate(self.save_folder, self.cert_data, True)

            # Updates the progress bar status
            self.emit(QtCore.SIGNAL("update"), 3, 0)
        else:
            # Setup preview info
            self.cert_data["name"] = u"Preview de Cliente".upper()
            self.cert_data["register"] = u"000.000.000-00"

            # Generate preview certificate
            self.emit(QtCore.SIGNAL("update"), 1, n)
            generate_certificate(self.save_folder, self.cert_data)
            self.emit(QtCore.SIGNAL("update"), 3, 0)
예제 #43
0
    def run(self):
        """
            Generate all certificates.
        """
        n = 1
        if not self.preview:
            for client in self.clients:
                # Select client info
                cursor.execute(
                    "SELECT name,register FROM clients \
                    WHERE id=?",
                    (str(client[1]),)
                )
                client_data = cursor.fetchone()
                self.cert_data["name"] = unicode(client_data[0]).upper()
                self.cert_data["register"] = unicode(client_data[1])

                # Updates the progress bar status
                self.emit(QtCore.SIGNAL("update"), 1, n)

                # Generate the certificate
                generate_certificate(self.save_folder, self.cert_data)
                n += 1

            # Updates the progress bar status
            self.emit(QtCore.SIGNAL("update"), 2, 0)

            # Get the responsible info
            self.cert_data["name"] = unicode(self.responsible[1]).upper()
            self.cert_data["register"] = unicode(self.responsible[4]).upper()

            # Generate the responsible certificate
            generate_certificate(self.save_folder, self.cert_data, True)

            # Updates the progress bar status
            self.emit(QtCore.SIGNAL("update"), 3, 0)
        else:
            # Setup preview info
            self.cert_data["name"] = u"Preview de Cliente".upper()
            self.cert_data["register"] = u"000.000.000-00"

            # Generate preview certificate
            self.emit(QtCore.SIGNAL("update"), 1, n)
            generate_certificate(self.save_folder, self.cert_data)
            self.emit(QtCore.SIGNAL("update"), 3, 0)
    def load_table(self):
        """
            Populates the events table with the existing
            events.
        """
        # Clears the table to show new records
        self.eventsTable.clear()

        # Select the records to show
        cursor.execute("SELECT * FROM events ORDER BY id DESC")
        data = cursor.fetchall()

        # Set the table default number of rows to 10
        # If there is more than 10 records, set to the len
        # of the records
        if len(data) < 10:
            self.eventsTable.setRowCount(10)
        else:
            self.eventsTable.setRowCount(len(data))

        # Set columns quantity and name
        self.eventsTable.setColumnCount(4)
        self.eventsTable.setHorizontalHeaderLabels(
            (u"ID", u"Título", u"Data de Início", u"Data de Término")
        )

        # Make columns and rows fit sizes to the window
        self.eventsTable.horizontalHeader().setResizeMode(
            QtGui.QHeaderView.Stretch
        )
        self.eventsTable.verticalHeader().setResizeMode(
            QtGui.QHeaderView.Stretch
        )

        # Updates the table with the selected records
        r,c = 0,0
        for item in data:
            for i in range(4):
                newitem = QtGui.QTableWidgetItem(unicode(item[i]))
                self.eventsTable.setItem(r, c, newitem)
                c += 1
            r += 1
            c = 0
예제 #45
0
    def save_data(self):
        if self.sigNameLineEdit.text() == "":
            self.errorMsg.setText("O nome precisa estar preenchido!")
        elif self.sigRoleLineEdit.text() == "":
            self.errorMsg.setText("O cargo precisa estar preenchido!")
        elif self.sigEmailLineEdit.text() == "":
            self.errorMsg.setText("O email precisa estar preenchido!")
        elif self.sigUploadName.text() == u"Faça o upload da assinatura":
            self.errorMsg.setText(u"É necessário fazer upload da assinatura em .png!")
        else:
            if self.sig_id:
                cursor.execute("""
                               UPDATE signatures
                               SET name=?,
                               role=?,
                               email=?,
                               register=?
                               WHERE id=?
                               """,(
                               str(self.sigNameLineEdit.text()),
                               str(self.sigRoleLineEdit.text()),
                               str(self.sigEmailLineEdit.text()),
                               str(self.sigRegisterLineEdit.text()),
                               str(self.sig_id)
                               ))
            else:
                cursor.execute("INSERT INTO signatures VALUES (NULL,?,?,?,?)",
                              (
                                str(self.sigNameLineEdit.text()),
                                str(self.sigRoleLineEdit.text()),
                                str(self.sigEmailLineEdit.text()),
                                str(self.sigRegisterLineEdit.text())
                              ))
                self.sig_id = cursor.lastrowid

            if self.filename:
                new_filename = "signatures/"+str(self.sig_id)+".png"
                copyfile(self.filename, new_filename)

            conn.commit()
            self.sig_list_instance.load_list()
            self.hide()
예제 #46
0
    def generate_send(self):
        if len(self.clients) == 0:
            self.errorMsg.setText("Primeiro inscreva clientes!")
        else:
            self.generate()
            self.mailer = Mailer()
            self.mailer.connect()
            for client in self.clients:
                cursor.execute("SELECT name,email FROM clients WHERE id=?",str(client[1]))
                client_data = cursor.fetchone()

                filepath = self.save_folder+"/"+client_data[0].replace(" ","").upper()+".pdf"
                self.mailer.send_certificate(filepath,client_data[1])

            cursor.execute("SELECT name,email FROM signatures WHERE id=?",
                           self.signatures[self.responsibleList.currentIndex()][0])
            responsible = cursor.fetchone()
            filepath = self.save_folder+"/responsible.pdf"
            self.mailer.send_certificate(filepath,responsible[3])

            self.mailer.quit()
예제 #47
0
    def load_table(self):
        """
            Populates the events table with the existing
            events.
        """
        # Clears the table to show new records
        self.eventsTable.clear()

        # Select the records to show
        cursor.execute("SELECT * FROM events ORDER BY id DESC")
        data = cursor.fetchall()

        # Set the table default number of rows to 10
        # If there is more than 10 records, set to the len
        # of the records
        if len(data) < 10:
            self.eventsTable.setRowCount(10)
        else:
            self.eventsTable.setRowCount(len(data))

        # Set columns quantity and name
        self.eventsTable.setColumnCount(4)
        self.eventsTable.setHorizontalHeaderLabels(
            (u"ID", u"Título", u"Data de Início", u"Data de Término"))

        # Make columns and rows fit sizes to the window
        self.eventsTable.horizontalHeader().setResizeMode(
            QtGui.QHeaderView.Stretch)
        self.eventsTable.verticalHeader().setResizeMode(
            QtGui.QHeaderView.Stretch)

        # Updates the table with the selected records
        r, c = 0, 0
        for item in data:
            for i in range(4):
                newitem = QtGui.QTableWidgetItem(unicode(item[i]))
                self.eventsTable.setItem(r, c, newitem)
                c += 1
            r += 1
            c = 0
예제 #48
0
 def save_data(self):
     """
         Saves the event data.
     """
     # Verifies if all fields are filled
     if unicode(self.eventTitleLineEdit.text()) == "":
         self.errorMsg.setText(u"O título precisa ser preenchido!")
     elif len(unicode(self.eventStartDateLineEdit.text())) < 10 or \
             len(unicode(self.eventEndDateLineEdit.text())) < 10:
         self.errorMsg.setText(u"As datas precisam estar \
                               em um formato xx/xx/xxxx!")
     elif unicode(self.eventHoursLineEdit.text()) == "":
         self.errorMsg.setText(u"As horas precisam ser um inteiro!")
     else:
         if self.event_id:
             # Updates the record if it is an existing event
             cursor.execute(
                 "UPDATE events SET title=?, start_date=?, end_date=?, \
                 hours=?, content=? WHERE id=?",
                 (unicode(self.eventTitleLineEdit.text()),
                  unicode(self.eventStartDateLineEdit.text()),
                  unicode(self.eventEndDateLineEdit.text()),
                  unicode(self.eventHoursLineEdit.text()),
                  unicode(self.eventContentTextEdit.toPlainText()),
                  str(self.event_id)))
         else:
             # Register the event
             cursor.execute(
                 "INSERT INTO events VALUES (NULL,?,?,?,?,?)",
                 (unicode(self.eventTitleLineEdit.text()),
                  unicode(self.eventStartDateLineEdit.text()),
                  unicode(self.eventEndDateLineEdit.text()),
                  unicode(self.eventHoursLineEdit.text()),
                  unicode(self.eventContentTextEdit.toPlainText())))
         # Saves the database
         conn.commit()
         # Update the table
         self.events_list_instance.load_table()
         # Hide the dialog
         self.hide()
예제 #49
0
    def save_data(self):
        if self.sigNameLineEdit.text() == "":
            self.errorMsg.setText("O nome precisa estar preenchido!")
        elif self.sigRoleLineEdit.text() == "":
            self.errorMsg.setText("O cargo precisa estar preenchido!")
        elif self.sigEmailLineEdit.text() == "":
            self.errorMsg.setText("O email precisa estar preenchido!")
        elif self.sigUploadName.text() == u"Faça o upload da assinatura":
            self.errorMsg.setText(
                u"É necessário fazer upload da assinatura em .png!")
        else:
            if self.sig_id:
                cursor.execute(
                    """
                               UPDATE signatures
                               SET name=?,
                               role=?,
                               email=?,
                               register=?
                               WHERE id=?
                               """,
                    (str(self.sigNameLineEdit.text()),
                     str(self.sigRoleLineEdit.text()),
                     str(self.sigEmailLineEdit.text()),
                     str(self.sigRegisterLineEdit.text()), str(self.sig_id)))
            else:
                cursor.execute("INSERT INTO signatures VALUES (NULL,?,?,?,?)",
                               (str(self.sigNameLineEdit.text()),
                                str(self.sigRoleLineEdit.text()),
                                str(self.sigEmailLineEdit.text()),
                                str(self.sigRegisterLineEdit.text())))
                self.sig_id = cursor.lastrowid

            if self.filename:
                new_filename = "signatures/" + str(self.sig_id) + ".png"
                copyfile(self.filename, new_filename)

            conn.commit()
            self.sig_list_instance.load_list()
            self.hide()
    def add_client(self):
        """
            Inserts the selected user into the database
            as a subscription to the selected event.
        """

        # Inserts data into the database
        cursor.execute(
            "INSERT INTO subscriptions VALUES (NULL,?,?)",
            (
                str(self.event_id),
                str(self.clients[self.clientsList.currentIndex()][0])
            )
        )
        conn.commit()

        # Update the listwidget that contains
        # the subscripted clients
        self.certificates_instance.load_list()

        # Hide the dialog
        self.hide()
예제 #51
0
    def add_client(self):
        """
            Inserts the selected user into the database
            as a subscription to the selected event.
        """

        # Inserts data into the database
        cursor.execute(
            "INSERT INTO subscriptions VALUES (NULL,?,?)",
            (
                str(self.event_id),
                str(self.clients[self.clientsList.currentIndex()][0])
            )
        )
        conn.commit()

        # Update the listwidget that contains
        # the subscripted clients
        self.certificates_instance.load_list()

        # Hide the dialog
        self.hide()
예제 #52
0
 def save_data(self):
     if unicode(self.eventTitleLineEdit.text()) == "":
         self.errorMsg.setText(u"O título precisa ser preenchido!")
     elif len(unicode(self.eventStartDateLineEdit.text())) < 10 or \
             len(unicode(self.eventEndDateLineEdit.text())) < 10:
         self.errorMsg.setText(u"As datas precisam estar em um formato xx/xx/xxxx!")
     elif unicode(self.eventHoursLineEdit.text()) == "":
         self.errorMsg.setText(u"As horas precisam ser um inteiro!")
     else:
         if self.event_id:
             cursor.execute("""
                             UPDATE events
                             SET title=?,
                             start_date=?,
                             end_date=?,
                             hours=?,
                             content=?
                             WHERE id=?
                             """, (
                             unicode(self.eventTitleLineEdit.text()),
                             unicode(self.eventStartDateLineEdit.text()),
                             unicode(self.eventEndDateLineEdit.text()),
                             unicode(self.eventHoursLineEdit.text()),
                             unicode(self.eventContentTextEdit.toPlainText()),
                             str(self.event_id)
                             ))
         else:
             cursor.execute("INSERT INTO events VALUES (NULL,?,?,?,?,?)",
                             (
                             unicode(self.eventTitleLineEdit.text()),
                             unicode(self.eventStartDateLineEdit.text()),
                             unicode(self.eventEndDateLineEdit.text()),
                             unicode(self.eventHoursLineEdit.text()),
                             unicode(self.eventContentTextEdit.toPlainText())
                             ))
         conn.commit()
         self.events_list_instance.load_table()
         self.hide()
예제 #53
0
 def save_data(self):
     if self.eventTitleLineEdit.text() == "":
         self.errorMsg.setText("O titulo precisa ser preenchido!")
     elif len(self.eventStartDateLineEdit.text()) < 10 or \
             len(self.eventEndDateLineEdit.text()) < 10:
         self.errorMsg.setText("As datas precisam estar em um formato xx/xx/xxxx!")
     elif self.eventHoursLineEdit.text() == "":
         self.errorMsg.setText("As horas precisam ser um inteiro!")
     else:
         if self.event_id:
             cursor.execute("""
                             UPDATE events
                             SET title=?,
                             start_date=?,
                             end_date=?,
                             hours=?,
                             content=?
                             WHERE id=?
                             """, (
                             str(self.eventTitleLineEdit.text()),
                             str(self.eventStartDateLineEdit.text()),
                             str(self.eventEndDateLineEdit.text()),
                             str(self.eventHoursLineEdit.text()),
                             str(self.eventContentTextEdit.toPlainText()),
                             str(self.event_id)
                             ))
         else:
             cursor.execute("INSERT INTO events VALUES (NULL,?,?,?,?,?)",
                             (
                             str(self.eventTitleLineEdit.text()),
                             str(self.eventStartDateLineEdit.text()),
                             str(self.eventEndDateLineEdit.text()),
                             str(self.eventHoursLineEdit.text()),
                             str(self.eventContentTextEdit.toPlainText())
                             ))
         conn.commit()
         self.events_list_instance.load_table()
         self.hide()
    def run(self):
        n = 1
        if not self.preview:
            for client in self.clients:
                cursor.execute("SELECT name,register FROM clients WHERE id=?",str(client[1]))
                client_data = cursor.fetchone()
                self.cert_data["name"] = unicode(client_data[0]).upper()
                self.cert_data["register"] = unicode(client_data[1])
                self.emit(QtCore.SIGNAL("update"),1,n)
                generate_certificate(self.save_folder, self.cert_data)
                n+=1

            self.emit(QtCore.SIGNAL("update"),2,0)
            self.cert_data["name"] = unicode(self.responsible[1]).upper()
            self.cert_data["register"] = unicode(self.responsible[4]).upper()
            generate_certificate_responsible(self.save_folder, self.cert_data)
            self.emit(QtCore.SIGNAL("update"),3,0)
        else:
            self.cert_data["name"] = u"Preview de Cliente".upper()
            self.cert_data["register"] = u"000.000.000-00"
            self.emit(QtCore.SIGNAL("update"),1,n)
            generate_certificate(self.save_folder, self.cert_data)
            self.emit(QtCore.SIGNAL("update"),3,0)
예제 #55
0
    def __init__(self, certificates_instance, event_id):
        """
            Setup widgets and select data from database.
        """
        super(AddClientDialog, self).__init__()
        # Window config
        self.setWindowTitle(u"Adicionar cliente")
        self.certificates_instance = certificates_instance
        self.event_id = event_id

        # Select clients in alphabetical order
        cursor.execute("SELECT * FROM clients ORDER BY name ASC")
        self.clients = cursor.fetchall()

        # Define layouts
        self.mainLayout = QtGui.QVBoxLayout()

        # Frame config
        self.titleLabel = QtGui.QLabel(u"Selecione um cliente")
        self.titleLabel.setFont(titleFont)

        # Fill combo with clients info
        self.clientsList = QtGui.QComboBox()
        for client in self.clients:
            self.clientsList.addItem(unicode(client[1]))

        # Create the main button
        self.saveBtn = QtGui.QPushButton(u"Selecionar")
        self.saveBtn.clicked.connect(self.add_client)

        # Add all widgets to the mainLayout
        self.mainLayout.addWidget(self.titleLabel)
        self.mainLayout.addWidget(self.clientsList)
        self.mainLayout.addWidget(self.saveBtn)

        # Set mainLayout as the visible layout
        self.setLayout(self.mainLayout)
    def __init__(self, certificates_instance, event_id):
        """
            Setup widgets and select data from database.
        """
        super(AddClientDialog, self).__init__()
        # Window config
        self.setWindowTitle(u"Adicionar cliente")
        self.certificates_instance = certificates_instance
        self.event_id = event_id

        # Select clients in alphabetical order
        cursor.execute("SELECT * FROM clients ORDER BY name ASC")
        self.clients = cursor.fetchall()

        # Define layouts
        self.mainLayout = QtGui.QVBoxLayout()

        # Frame config
        self.titleLabel = QtGui.QLabel(u"Selecione um cliente")
        self.titleLabel.setFont(titleFont)

        # Fill combo with clients info
        self.clientsList = QtGui.QComboBox()
        for client in self.clients:
            self.clientsList.addItem(unicode(client[1]))

        # Create the main button
        self.saveBtn = QtGui.QPushButton(u"Selecionar")
        self.saveBtn.clicked.connect(self.add_client)

        # Add all widgets to the mainLayout
        self.mainLayout.addWidget(self.titleLabel)
        self.mainLayout.addWidget(self.clientsList)
        self.mainLayout.addWidget(self.saveBtn)

        # Set mainLayout as the visible layout
        self.setLayout(self.mainLayout)
예제 #57
0
    def save_data(self):
        """
            Saves the client data.
        """
        # Verifies if all fields are filled
        if unicode(self.clientNameLineEdit.text()) == "":
            self.errorMsg.setText(u"O nome precisa estar preenchido!")
        elif unicode(self.clientEmailLineEdit.text()) == "":
            self.errorMsg.setText(u"O email precisa estar preenchido!")
        elif unicode(validar_cpf(self.clientRegisterLineEdit.text())) is False:
            self.errorMsg.setText(u"O CPF é inválido!")
        else:
            if self.client_id:
                # Updates the record if it is an existing client
                cursor.execute(
                    "UPDATE clients SET name=?, email=?, register=? \
                    WHERE id=?", (unicode(self.clientNameLineEdit.text()),
                                  unicode(self.clientEmailLineEdit.text()),
                                  unicode(self.clientRegisterLineEdit.text()),
                                  str(self.client_id)))
                conn.commit()
                # Updates the table
                self.clients_list_instance.load_table()
                # Hide the dialog
                self.hide()
            else:
                # Verifies if the user is trying to
                # register an existent client
                cursor.execute("SELECT id FROM clients WHERE register=?",
                               (str(self.clientRegisterLineEdit.text()), ))
                existing_user = cursor.fetchone()

                if existing_user:
                    # Shows up an error message
                    error = QtGui.QMessageBox()
                    error.setIcon(QtGui.QMessageBox.Critical)
                    error.setText(u"O cliente já está cadastrado!")
                    error.setInformativeText(u"Já existe um cliente \
                                            com este CPF cadastrado \
                                            no programa.")
                    error.setWindowTitle(u"Cliente já cadastrado!")
                    error.setStandardButtons(QtGui.QMessageBox.Ok)
                    error.exec_()
                else:
                    # Register the client
                    cursor.execute(
                        "INSERT INTO clients VALUES (NULL,?,?,?)",
                        (unicode(self.clientNameLineEdit.text()),
                         unicode(self.clientEmailLineEdit.text()),
                         unicode(self.clientRegisterLineEdit.text())))
                    conn.commit()
                    # Updates the table
                    self.clients_list_instance.load_table()
                    # Hide the dialog
                    self.hide()
예제 #58
0
    def save_data(self):
        if unicode(self.clientNameLineEdit.text()) == "":
            self.errorMsg.setText(u"O nome precisa estar preenchido!")
        elif unicode(self.clientEmailLineEdit.text()) == "":
            self.errorMsg.setText(u"O email precisa estar preenchido!")
        elif unicode(validar_cpf(self.clientRegisterLineEdit.text())) == False:
            self.errorMsg.setText(u"O CPF é inválido!")
        else:
            if self.client_id:
                cursor.execute(
                    """
                                UPDATE clients
                                SET name=?,
                                email=?,
                                register=?
                                WHERE id=?
                               """,
                    (unicode(self.clientNameLineEdit.text()),
                     unicode(self.clientEmailLineEdit.text()),
                     unicode(self.clientRegisterLineEdit.text()),
                     str(self.client_id)))
                conn.commit()
                self.clients_list_instance.load_table()
                self.hide()
            else:
                cursor.execute("SELECT id FROM clients WHERE register=?",
                               [str(self.clientRegisterLineEdit.text())])
                existing_user = cursor.fetchone()

                if existing_user:
                    error = QtGui.QMessageBox()
                    error.setIcon(QtGui.QMessageBox.Critical)
                    error.setText(u"O cliente já está cadastrado!")
                    error.setInformativeText(
                        u"Já existe um cliente com este CPF cadastrado no programa."
                    )
                    error.setWindowTitle(u"Cliente já cadastrado!")
                    error.setStandardButtons(QtGui.QMessageBox.Ok)
                    error.exec_()
                else:
                    cursor.execute(
                        "INSERT INTO clients VALUES (NULL,?,?,?)",
                        (unicode(self.clientNameLineEdit.text()),
                         unicode(self.clientEmailLineEdit.text()),
                         unicode(self.clientRegisterLineEdit.text())))
                    conn.commit()
                    self.clients_list_instance.load_table()
                    self.hide()
예제 #59
0
    def save_data(self):
        if unicode(self.clientNameLineEdit.text()) == "":
            self.errorMsg.setText(u"O nome precisa estar preenchido!")
        elif unicode(self.clientEmailLineEdit.text()) == "":
            self.errorMsg.setText(u"O email precisa estar preenchido!")
        elif unicode(validar_cpf(self.clientRegisterLineEdit.text())) == False:
            self.errorMsg.setText(u"O CPF é inválido!")
        else:
            if self.client_id:
                cursor.execute("""
                                UPDATE clients
                                SET name=?,
                                email=?,
                                register=?
                                WHERE id=?
                               """,(
                               unicode(self.clientNameLineEdit.text()),
                               unicode(self.clientEmailLineEdit.text()),
                               unicode(self.clientRegisterLineEdit.text()),
                               str(self.client_id)
                               ))
                conn.commit()
                self.clients_list_instance.load_table()
                self.hide()
            else:
                cursor.execute("SELECT id FROM clients WHERE register=?",
                              [str(self.clientRegisterLineEdit.text())])
                existing_user = cursor.fetchone()

                if existing_user:
                    error = QtGui.QMessageBox()
                    error.setIcon(QtGui.QMessageBox.Critical)
                    error.setText(u"O cliente já está cadastrado!")
                    error.setInformativeText(u"Já existe um cliente com este CPF cadastrado no programa.")
                    error.setWindowTitle(u"Cliente já cadastrado!")
                    error.setStandardButtons(QtGui.QMessageBox.Ok)
                    error.exec_()
                else:
                    cursor.execute("INSERT INTO clients VALUES (NULL,?,?,?)",
                                  (
                                    unicode(self.clientNameLineEdit.text()),
                                    unicode(self.clientEmailLineEdit.text()),
                                    unicode(self.clientRegisterLineEdit.text())
                                  ))
                    conn.commit()
                    self.clients_list_instance.load_table()
                    self.hide()
    def run(self):
        """
            Connects with the mailer, generates and send the certificates.
        """

        # connects to the mailer and updates progress bar
        self.emit(QtCore.SIGNAL("update"), 1, 0)
        self.mailer = Mailer()
        r = self.mailer.connect()

        # Verifies authentication
        if r == 1:
            n = 1
            for client in self.clients:
                # Get client info
                cursor.execute(
                    "SELECT name,email FROM clients WHERE id=?",
                    str(client[1])
                )
                client_data = cursor.fetchone()

                filepath = os.path.join(
                    unicode(self.save_folder),
                    u''.join(i for i in unicode(client_data[0])
                             if ord(i) < 128)
                    .upper()
                    .replace(" ", "")
                )
                filepath += ".pdf"

                self.cert_data["name"] = unicode(client_data[0]).upper()
                self.cert_data["register"] = unicode(client_data[1])

                # Updates progress bar and generate and send certificate
                self.emit(QtCore.SIGNAL("update"), 2, n)
                generate_certificate(self.save_folder, self.cert_data)
                self.mailer.send_certificate(filepath, unicode(client_data[1]))
                n += 1

            # Gets responsible info
            filepath = os.path.join(
                unicode(self.save_folder),
                u"responsible.pdf"
            )
            self.cert_data["name"] = unicode(self.responsible[1]).upper()
            self.cert_data["register"] = unicode(self.responsible[4]).upper()

            # Updates progress bar and generate and send certificate
            self.emit(QtCore.SIGNAL("update"), 3, 0)
            generate_certificate(self.save_folder, self.cert_data, True)
            self.mailer.send_certificate(
                unicode(filepath),
                unicode(self.responsible[3])
            )

            self.emit(QtCore.SIGNAL("update"), 4, 0)

            # Quits mailer
            self.mailer.quit()
        else:
            self.emit(QtCore.SIGNAL("error_raised()"))