Пример #1
0
class TableController(object):
	def __init__(self,tabHost,objectType,objectName,model):
		self.view=TableView(tabHost)
		self.model=model
		self.name=objectName
		self.type=objectType
		self._mapdata()
		self.wireUp()

	def _mapdata(self):
		assert self.model.isDBLoaded()
		self.datamodel=QSqlTableModel(self.view,self.model.db)
		self.datamodel.setTable(self.name)
		self.refresh()
	
	def wireUp(self):
		self.datamodel.setEditStrategy(QSqlTableModel.OnManualSubmit)
		self.view.ui.tableView.setModel(self.datamodel)
		self.view.ui.tableView.show()
		if self.type==self.model.ModelArea.TABLES:	##make widget read-write
			self.view.ui.tableView.setEditTriggers(QAbstractItemView.DoubleClicked | QAbstractItemView.SelectedClicked)
			self.datamodel.setEditStrategy(QSqlTableModel.OnRowChange)	#TODO: track edits for safe saving
		
	def refresh(self):
		self.datamodel.select()
class IntervenantUI(TableUI):
    """Classe chargée de l'interface de gestion des intervenants"""
    def setupModel(self):
        u"""Définit et configure le modèle sous-jacent à la table"""
        self._modele = QSqlTableModel(self)
        self._modele.setTable("intervenant")
        self._modele.setHeaderData(1, Qt.Horizontal, "Nom")
        self._modele.setHeaderData(2, Qt.Horizontal, u"Téléphone")
        self._modele.setHeaderData(3, Qt.Horizontal, "Email")
        self._modele.setEditStrategy(QSqlTableModel.OnFieldChange)
        self._modele.select()

        self._ui.tv.setModel(self._modele)

    def msgValidationNouveau(self):
        u"""Message d'erreur quand on veut créer deux items de suite"""
        return u"Valider l'intervenant avant d'en recréer un nouveau"

    def titreErrSuppression(self):
        return u"Cliquer sur l'intervenant à supprimer"

    def msgErrSuppression(self):
        return u"""Veuiller cliquer sur un intervenant avant de cliquer sur \
supprimer"""

    def msgSuppression(self, index):
        return u"Êtes-vous sûr de vouloir supprimer l'intervenant " + index.sibling(
            index.row(), 1).data() + " ? "

    def preSupprVerification(self, index):
        u"""Vérification à effectuer avant d'autoriser à supprimer un item
        
        Renvoit False si la suppression est interdite
        
        """
        sql = """
          SELECT COUNT(*)
          FROM absence
          WHERE id_intervenant=""" + str(index.sibling(index.row(), 0).data())
        req = QSqlQuery()
        if req.exec_(sql):
            req.next()
            nbAbsences = req.record().value(0)
            if nbAbsences != 0:
                pl = ""
                if nbAbsences != 1:
                    pl = "s"
                QMessageBox.critical(
                    self, "Impossible de suppprimer",
                    u"L'intervenant a encore " + str(nbAbsences) +
                    u" absence" + pl + u" enregistrée" + pl + "<br />" +
                    u"Il faut les supprimer avant")
                # TODO trouver un moyen de setter l'onglet de l'application
                # self._ui.tabWidget.setCurrentIndex(1)
                return False
        # TODO gérer le else, au moins logger quelque chose

        return True
class IntervenantUI(TableUI):
    """Classe chargée de l'interface de gestion des intervenants"""

    def setupModel(self):
        u"""Définit et configure le modèle sous-jacent à la table"""
        self._modele = QSqlTableModel(self)
        self._modele.setTable("intervenant")
        self._modele.setHeaderData(1, Qt.Horizontal, "Nom")
        self._modele.setHeaderData(2, Qt.Horizontal, u"Téléphone")
        self._modele.setHeaderData(3, Qt.Horizontal, "Email")
        self._modele.setEditStrategy(QSqlTableModel.OnFieldChange)
        self._modele.select()

        self._ui.tv.setModel(self._modele)

    def msgValidationNouveau(self):
        u"""Message d'erreur quand on veut créer deux items de suite"""
        return u"Valider l'intervenant avant d'en recréer un nouveau"

    def titreErrSuppression(self):
        return u"Cliquer sur l'intervenant à supprimer"

    def msgErrSuppression(self):
        return u"""Veuiller cliquer sur un intervenant avant de cliquer sur \
supprimer"""

    def msgSuppression(self, index):
        return u"Êtes-vous sûr de vouloir supprimer l'intervenant " + index.sibling(index.row(), 1).data() + " ? "

    def preSupprVerification(self, index):
        u"""Vérification à effectuer avant d'autoriser à supprimer un item
        
        Renvoit False si la suppression est interdite
        
        """
        sql = """
          SELECT COUNT(*)
          FROM absence
          WHERE id_intervenant=""" + str(index.sibling(index.row(), 0).data())
        req = QSqlQuery()
        if req.exec_(sql):
            req.next()
            nbAbsences = req.record().value(0)
            if nbAbsences != 0:
                pl = ""
                if nbAbsences != 1:
                    pl = "s"
                QMessageBox.critical(self, "Impossible de suppprimer",
                    u"L'intervenant a encore " + str(nbAbsences) +
                    u" absence" + pl + u" enregistrée" + pl + "<br />" +
                    u"Il faut les supprimer avant")
                # TODO trouver un moyen de setter l'onglet de l'application
                # self._ui.tabWidget.setCurrentIndex(1)
                return False
        # TODO gérer le else, au moins logger quelque chose

        return True
Пример #4
0
    def InitTable(self):
        """Funzione che accede al database ed imposta il data model"""
        db = QSqlDatabase.addDatabase("QSQLITE")

        db.setDatabaseName(self.myWidget.txtPercorso.text())
        db.open()

        model = QSqlTableModel()
        model.setTable("contatti")
        model.setEditStrategy(QSqlTableModel.OnManualSubmit)
        model.select()
        model.setHeaderData(0, QtCore.Qt.Horizontal, "Nome")
        model.setHeaderData(1, QtCore.Qt.Horizontal, "Cognome")
        model.setHeaderData(2, QtCore.Qt.Horizontal, "Telefono")

        self.tableModel = model
        self.myWidget.lstRubrica.setModel(model)
Пример #5
0
    def InitTable(self):
        """Funzione che accede al database ed imposta il data model"""
        db = QSqlDatabase.addDatabase("QSQLITE")

        db.setDatabaseName(self.myWidget.txtPercorso.text())
        db.open()
        
        model =  QSqlTableModel()
        model.setTable("contatti")
        model.setEditStrategy(QSqlTableModel.OnManualSubmit)
        model.select()
        model.setHeaderData(0, QtCore.Qt.Horizontal, "Nome")
        model.setHeaderData(1, QtCore.Qt.Horizontal, "Cognome")
        model.setHeaderData(2, QtCore.Qt.Horizontal, "Telefono")
                
        self.tableModel = model
        self.myWidget.lstRubrica.setModel(model)