Esempio n. 1
0
    def __init__(self, parent=None, clientId=None):
        QtGui.QDialog.__init__(self, parent)
        self.ui = AddUserForm()
        self.ui.setupUi(self)

        self.clientId = clientId
        self.ui.btnOk.clicked.connect(self.save)
        self.ui.btnClose.clicked.connect(self.closeDialog)

        if self.clientId:
            query = QtSql.QSqlQuery()
            query.prepare(
                '''SELECT ID, Deleted, Surname, Name, MidName, BirthDate, Sex, SNILS, Growth, Weight, birthPlace, notes, deleted
                   FROM Client
                   WHERE ID = :client_Id;''')
            query.bindValue(":client_id", self.clientId)
            query.exec_()

            while query.next():
                self.ui.leSurname.setText(query.record().value('Surname').toString())
                self.ui.leName.setText(query.record().value('Name').toString())
                self.ui.leMidName.setText(query.record().value('MidName').toString())
                self.ui.leBirthDate.setText(query.record().value('BirthDate').toString())
                self.ui.cmbSex.setCurrentIndex(int(query.record().value('Sex').toString()))
                self.ui.leSNILS.setText(query.record().value('SNILS').toString())
                self.ui.leGrowth.setText(query.record().value('Growth').toString())
                self.ui.leWeight.setText(query.record().value('Weight').toString())
                self.ui.leBirthPlace.setText(query.record().value('birthPlace').toString())
                self.ui.leNotes.setText(query.record().value('notes').toString())
                if int(query.record().value('deleted').toString()) == 1:
                    self.ui.cbDeleted.setChecked(True)

            queryModel = CServiceModel(self)
            queryModel.loadData(self.clientId)
            self.ui.tableView.setModel(queryModel)
        else:
            queryModel = CServiceModel(self)
            queryModel.loadEmpty()
            self.ui.tableView.setModel(queryModel)

        valuesModel = MyServiceModel(self)
        valuesModel.loadAllData()
        self.ui.tableView.setItemDelegateForColumn(0, CComboBoxDelegate(self, valuesModel))

        self.ui.tableView.setContextMenuPolicy(Qt.CustomContextMenu)
        self.ui.tableView.customContextMenuRequested.connect(self.popup)
Esempio n. 2
0
class CAddUserForm(QtGui.QDialog):
    def __init__(self, parent=None, clientId=None):
        QtGui.QDialog.__init__(self, parent)
        self.ui = AddUserForm()
        self.ui.setupUi(self)

        self.clientId = clientId
        self.ui.btnOk.clicked.connect(self.save)
        self.ui.btnClose.clicked.connect(self.closeDialog)

        if self.clientId:
            query = QtSql.QSqlQuery()
            query.prepare(
                '''SELECT ID, Deleted, Surname, Name, MidName, BirthDate, Sex, SNILS, Growth, Weight, birthPlace, notes, deleted
                   FROM Client
                   WHERE ID = :client_Id;''')
            query.bindValue(":client_id", self.clientId)
            query.exec_()

            while query.next():
                self.ui.leSurname.setText(query.record().value('Surname').toString())
                self.ui.leName.setText(query.record().value('Name').toString())
                self.ui.leMidName.setText(query.record().value('MidName').toString())
                self.ui.leBirthDate.setText(query.record().value('BirthDate').toString())
                self.ui.cmbSex.setCurrentIndex(int(query.record().value('Sex').toString()))
                self.ui.leSNILS.setText(query.record().value('SNILS').toString())
                self.ui.leGrowth.setText(query.record().value('Growth').toString())
                self.ui.leWeight.setText(query.record().value('Weight').toString())
                self.ui.leBirthPlace.setText(query.record().value('birthPlace').toString())
                self.ui.leNotes.setText(query.record().value('notes').toString())
                if int(query.record().value('deleted').toString()) == 1:
                    self.ui.cbDeleted.setChecked(True)

            queryModel = CServiceModel(self)
            queryModel.loadData(self.clientId)
            self.ui.tableView.setModel(queryModel)
        else:
            queryModel = CServiceModel(self)
            queryModel.loadEmpty()
            self.ui.tableView.setModel(queryModel)

        valuesModel = MyServiceModel(self)
        valuesModel.loadAllData()
        self.ui.tableView.setItemDelegateForColumn(0, CComboBoxDelegate(self, valuesModel))

        self.ui.tableView.setContextMenuPolicy(Qt.CustomContextMenu)
        self.ui.tableView.customContextMenuRequested.connect(self.popup)

    def popup(self, pos):
        menu = QtGui.QMenu()
        delete = menu.addAction(u"Удалить")
        action = menu.exec_(self.mapToGlobal(QPoint(pos.x()+self.ui.leName.width()+self.ui.label.width(), pos.y())))

        if action == delete:
            self.deleteLine()

    def deleteLine(self):
        self.ui.tableView.model().deleteRow(self.ui.tableView.currentIndex().row())

    def save(self):
        def saveClient():
            query = QtSql.QSqlQuery()
            if self.clientId:
                query.prepare(
                    u'''UPDATE client SET Surname=:surname, Name=:name, MidName=:midname, BirthDate=:birthdate, Sex=:sex,
                    SNILS=:snils, Growth=:growth, Weight=:weight, birthPlace=:birthplace, notes=:notes, deleted=:deleted
                    WHERE ID=:client_id;''')
                query.bindValue(":client_id", self.clientId)
            else:
                query.prepare(u'''INSERT INTO client (Surname, Name, MidName, BirthDate, Sex, SNILS, Growth, Weight,
                birthPlace, notes, deleted) VALUES(:surname, :name, :midname, :birthdate, :sex, :snils, :growth, :weight,
                 :birthplace, :notes, :deleted)''')

            query.bindValue(":surname", self.ui.leSurname.text())
            query.bindValue(":name", self.ui.leName.text())
            query.bindValue(":midname", self.ui.leMidName.text())
            query.bindValue(":birthdate", str(
                format(QDate.fromString(self.ui.leBirthDate.text(), 'dd.MM.yyyy').toString('yyyy-MM-dd'))))
            query.bindValue(":sex", self.ui.cmbSex.currentIndex())
            query.bindValue(":snils", fromSNILS(self.ui.leSNILS.text()))
            query.bindValue(":growth", self.ui.leGrowth.text())
            query.bindValue(":weight", self.ui.leWeight.text())
            query.bindValue(":birthplace", self.ui.leBirthPlace.text())
            query.bindValue(":notes", self.ui.leNotes.text())
            query.bindValue(":deleted", 1 if self.ui.cbDeleted.isChecked() else 0)

            query.exec_()

            if not self.clientId:
                query.prepare('''SELECT `AUTO_INCREMENT` val
                    FROM  INFORMATION_SCHEMA.TABLES
                    WHERE TABLE_SCHEMA = 'homework'
                    AND   TABLE_NAME   = 'client';''')
                query.exec_()
                while query.next():
                    self.clientId = int(query.record().value('val').toString()) - 1

        def findServiceId(code):
            if not code:
                return None
            query = QtSql.QSqlQuery()
            query.prepare("SELECT ID FROM Services WHERE code = '%s'" % code)
            query.exec_()
            while query.next():
                return int(query.record().value('ID').toString())

        def saveService():
            model = self.ui.tableView.model()
            items = set()
            for row in xrange(model.rowCount()):
                item = findServiceId(toString(model.index(row, 0).data())[:toString(model.index(row, 0).data()).find(":")])
                if item:
                    items.add(item)
            services = set()
            query = QtSql.QSqlQuery()
            query.prepare('''select services_id
                        from cure
                        where client_id = %s;''' % self.clientId)
            query.exec_()
            while query.next():
                services.add(toInt(query.record().value('services_id').toString()))

            delete = services - items
            append = items - services
            if delete:
                query.prepare('''
                DELETE from cure
                where client_id = :client_id and services_id in (%s)''' % ', '.join([str(a) for a in delete]))
                query.bindValue(":client_id", self.clientId)

                query.exec_()
            if append:
                for i in append:
                    query.prepare("INSERT INTO Cure (client_id, Services_id) "
                              "VALUES (:client_id, :Services_id)")
                    query.bindValue(":client_id", self.clientId)
                    query.bindValue(":Services_id", i)
                    query.exec_()
        saveClient()
        saveService()


    def closeDialog(self):
        self.close()