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!")
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 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!")
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!")
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_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!")
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
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!")
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
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()
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)
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]))
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()
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)
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
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()
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()
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 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()
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 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!")
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))
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!")
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!")
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!")
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)
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
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 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()
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
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 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()
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()
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)
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 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()
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 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()"))