Пример #1
0
class BaseTableModel(QAbstractTableModel):
    """ Base Model """

    def __init__(self, parent=None):
        super(BaseTableModel, self).__init__(parent)
        self._loading_dialog = Loading()
        self._data = []
        self._populate_job = Db_Query_Thread()

    def set_query_info(self, name, sql_statement, params=None):
        self._populate_job.set_name(name)
        self._populate_job.set_query(sql_statement)
        if params:
            self._populate_job.set_params(params)

    def load(self):
        self._populate_job.progress.connect(self._loading_dialog.setMessage)
        self._populate_job.query_row_num.connect(self._loading_dialog.setMaxRows)
        self._populate_job.query_row_read.connect(self._loading_dialog.incrementReadRows)
        self._populate_job.query_finished.connect(self.loadData)
        self._populate_job.start()
        self._loading_dialog.show()

    def loadData(self, record_list, error=None):
        self._populate_job.exit()
        self._loading_dialog.accept()
        self._loading_dialog.clear()
        if record_list:
            self._data = record_list
        else:
            self._data = []
            if error == 'conError':
                message = unicode("Erro de autenticação\n\n""Banco de dados indisponível".decode('utf-8'))
                QMessageBox.critical(self, "Seareiros", message)
        self.reset()

    def get_record(self, row):
        return self._data[row]

    def rowCount(self, index=QModelIndex()):
        return len(self._data)

    def columnCount(self, index=QModelIndex()):
        if ( len(self._data) > 0 ):
            return self._data[0].count()
        else:
            return 0
Пример #2
0
class Login(QDialog, Ui_Dialog):
    """User validation"""

    def __init__(self, parent=None):
        super(Login, self).__init__(parent)
        self.setupUi(self)
        self.btnBoxLogin.button(QDialogButtonBox.Cancel).setText("Cancelar")
        self.btnBoxLogin.button(QDialogButtonBox.Cancel).clicked.connect(self.close)
        self.btnBoxLogin.button(QDialogButtonBox.Ok).clicked.connect(self.ok_clicked)
        self.load_icon = QMovie(":icons/loading.gif")
        sql_statement = """SELECT username, password, access FROM users WHERE
                      users.username=:username AND users.password=:password"""
        self._validate_job = Db_Query_Thread(name="validation", query=sql_statement)
        self._validate_job.query_finished.connect(self.validate_login)
        self._user_logged = False
        self._username = None
        self._access = None

    def set_loading_icon(self, frame=None):
        self.btnBoxLogin.button(QDialogButtonBox.Ok).setIcon(QIcon(self.load_icon.currentPixmap()))

    def ok_clicked(self):
        """Calls validation methods"""
        self.btnBoxLogin.button(QDialogButtonBox.Ok).setEnabled(False)
        self.btnBoxLogin.button(QDialogButtonBox.Ok).setText("")
        self.load_icon.frameChanged.connect(self.set_loading_icon)
        self.load_icon.start()
        username = self.editUsername.text()
        password = self.editPassword.text()
        parameters = [["str", "username", username],["str","password",password]]
        self._validate_job.set_params(parameters)
        self._validate_job.start()

    def validate_login(self, db_result, error=None):
        self._validate_job.exit()
        if db_result:
            # correct username and password
            self._user_logged = True
            self._username = db_result[0].value(0)
            self._access = db_result[0].value(2)
            self.accept()
        else:
            if error == 'connError':
                message = unicode("Erro de autenticação\n\n""Banco de dados indisponível".decode('utf-8'))
            else:
                message = unicode("Erro de autenticação\n\n""Usuário e/ou Senha inválido(s)".decode('utf-8'))
            QMessageBox.critical(self, "Seareiros - Login", message)
            self.btnBoxLogin.button(QDialogButtonBox.Ok).setText("&OK")
            self.load_icon.frameChanged.disconnect(self.set_loading_icon)
            self.load_icon.stop()
            self.btnBoxLogin.button(QDialogButtonBox.Ok).setIcon(QIcon())
            self.btnBoxLogin.button(QDialogButtonBox.Ok).setEnabled(True)
            self.editUsername.setFocus()
            self.editUsername.selectAll()

    def get_user_data(self):
        if self._user_logged:
            return [self._username, self._access]
        else:
            return None
Пример #3
0
 def __init__(self, parent=None):
     super(Login, self).__init__(parent)
     self.setupUi(self)
     self.btnBoxLogin.button(QDialogButtonBox.Cancel).setText("Cancelar")
     self.btnBoxLogin.button(QDialogButtonBox.Cancel).clicked.connect(self.close)
     self.btnBoxLogin.button(QDialogButtonBox.Ok).clicked.connect(self.ok_clicked)
     self.load_icon = QMovie(":icons/loading.gif")
     sql_statement = """SELECT username, password, access FROM users WHERE
                   users.username=:username AND users.password=:password"""
     self._validate_job = Db_Query_Thread(name="validation", query=sql_statement)
     self._validate_job.query_finished.connect(self.validate_login)
     self._user_logged = False
     self._username = None
     self._access = None
Пример #4
0
 def __init__(self, parent=None):
     super(BaseTableModel, self).__init__(parent)
     self._loading_dialog = Loading()
     self._data = []
     self._populate_job = Db_Query_Thread()