Beispiel #1
0
def collect_data(ui, db):  #! Please add cute Icons back, sir
    num_model = QSqlQueryModel()
    cust_model = QSqlQueryModel()
    ui.treeView = QtWidgets.QTreeView(ui.comboBox)
    db.open()
    num_model.setQuery('SELECT Number FROM Room', db)
    cust_model.setQuery('SELECT Name, ID, Sex FROM Customer', db)
    db.close()

    while cust_model.canFetchMore():
        cust_model.fetchMore()

    ui.comboBox_2.setModel(num_model)
    ui.comboBox.setModel(cust_model)

    ui.comboBox.setView(ui.treeView)
    ui.treeView.setColumnHidden(2, True)

    icon4 = QtGui.QIcon()
    icon4.addPixmap(QtGui.QPixmap(":/ctmr/48px-Emblem-person-blue.svg.png"))
    icon5 = QtGui.QIcon()
    icon5.addPixmap(QtGui.QPixmap(":/ctmr/48px-User_icon_3.svg.png"))

    i = 0
    while i < ui.comboBox.count():
        #print(cust_model.index(i, 1).data())
        if cust_model.index(i, 2).data() == 'Male':
            ui.comboBox.setItemIcon(i, icon4)
        else:
            ui.comboBox.setItemIcon(i, icon5)
        i += 1
Beispiel #2
0
    def new_addservice_dialog(self, window, db, res_index, thrd):
        #Setup UI
        ui = Ui_AddService()
        new_addservice = QDialog()
        ui.setupUi(new_addservice)

        #Setup ComboBox view
        db.open()
        srv_model = QSqlQueryModel()
        ui.treeView = QtWidgets.QTreeView(ui.comboBox)
        srv_model.setQuery('SELECT Name, ID FROM Service', db)
        db.close()

        while srv_model.canFetchMore():
            srv_model.fetchMore()
        ui.comboBox.setModel(srv_model)

        ui.comboBox.setView(ui.treeView)
        db.close()

        ui.pushButton.clicked.connect(lambda: thrd.tryStart(TableWorker(add_DB(ui, new_addservice, db, 
                                                "RoomService",
                                                [res_index.siblingAtColumn(0).data(),res_index.siblingAtColumn(1).data(),res_index.siblingAtColumn(2).data(),ui.treeView.currentIndex().siblingAtColumn(1).data()],
                                                "?, ?, ?, ?",
                                                []))))
        ui.pushButton_2.clicked.connect(lambda: thrd.tryStart(TableWorker(del_DB(ui, new_addservice, db,
                                                    "RoomService", "ResID = ? AND SrvID = ?", [res_index.siblingAtColumn(0).data(), ui.treeView.currentIndex().siblingAtColumn(1).data()],
                                                    []))))

        new_addservice.setWindowTitle('Add or remove a Service')
        new_addservice.exec()
Beispiel #3
0
    def deleteData(self):     
        current_row = self.listView.currentIndex()
        des_name = self.listView.model().data(current_row,0)
        
        # ถ้าไม่ได้เลือก record ให้ return
        if des_name == None:
            self.showDialog('กรุณาเลือกปลายทางที่จะลบก่อน')
            return

        des_name_inUse = False # เก็บ status ของ des_name

        # สร้าง sqlmModel ไว้สำหรับ query des_id มาเทียบกันระหว่างสองตาราง
        tempFromQueue = QSqlQueryModel()
        selectQueue = QSqlQuery()
        selectQueue.prepare('SELECT des_id FROM queue')

        tempFromDes = QSqlQueryModel()
        selectDes = QSqlQuery()
        selectDes.prepare('SELECT des_id FROM destination WHERE des_name = ' + f"'{des_name}'")

        # เก็บค่าของจากทั้งสองตารางมาตรวจสอบการซ้ำของ des_id ว่ามีการใชงานอยู่จริงหรือไม่
        # exec query ถ้าผ่านให้ setQuery
        if selectDes.exec() == True and selectQueue.exec() == True:
            tempFromDes.setQuery(selectDes)
            tempFromQueue.setQuery(selectQueue)

            # fetch more หา rowCount ของจริง
            while tempFromQueue.canFetchMore():
                tempFromQueue.fetchMore()

            # เทียบค่า des_id
            for i in range(tempFromQueue.rowCount()):
                if tempFromQueue.index(i,0).data() == tempFromDes.index(0,0).data():
                    des_name_inUse = True 
                    break
                else:
                    des_name_inUse = False

        # ตรวจสอบว่า des_name ไม่มีการใช้งานในตาราง queue
        # หากมีการใช้งาน จะไม่สามารถลบออกจาก destination ได้
        if des_name_inUse == True:
            self.showDialog(f'ปลายทาง {des_name} มีการใช้งานในตาราง ไม่สามารถลบได้')
            return

        # ยืนยันการลบด้วย code 1024
        confCode = self.confDelete(des_name)
        if confCode == 1024:
            try:
                deleteQuery = QSqlQuery()
                deleteQuery.prepare("DELETE FROM destination WHERE des_name = " + 
                                    f"('{des_name}')")
                print('Query = ' + deleteQuery.lastQuery())
                if deleteQuery.exec():
                    print('DELETE COMPLETE')
                    self.showDialog('ลบปลายทาง : ' + des_name + ' แล้ว')
                    self.loadData()
                else:
                    print('DELETE FALSE = ' + deleteQuery.lastError().text())
            except(QSqlError) as e:
                print(str(time.strftime("%H:%M:%S : ", time.localtime())) +
                      'ERROR :' + str(e))   
        else:
            print('User decided cancel delete this record.')