コード例 #1
0
 def getTotalProfit():
     query = "SELECT SUM((product.selling_price-product.price)*product_order.quantity) FROM product_order JOIN product ON product_order.product_id=product.id;"
     db = DB()
     result = db.fetch(query)
     if result:
         return result[0][0]
     return None
コード例 #2
0
class DashboardOrders(QFrame):
    def __init__(self):
        super().__init__()

        self.db = DB()

        self.initUI()

    def initUI(self):
        frame = QFrame()
        frame.setStyleSheet("background-color: rgb(30, 45, 66);")
        frame.setFrameShape(QFrame.StyledPanel)
        frame.setFrameShadow(QFrame.Raised)
        frame.setFixedWidth(200)
        frame.setFixedHeight(150)

        main_label = QLabel(frame)
        main_label.setAlignment(Qt.AlignCenter)
        main_label.setGeometry(QRect(40, 10, 120, 41))
        main_label.setStyleSheet("font: 75 28pt \"MS Shell Dlg 2\";\n"
                                 "color: rgb(255, 255, 255);\n"
                                 "font: 36pt \"MS Shell Dlg 2\";")
        main_label.setText("Orders")

        data = self.get_orders()

        sales = QLabel(frame)
        sales.setAlignment(Qt.AlignCenter)
        sales.setGeometry(QRect(40, 60, 120, 41))
        sales.setStyleSheet("font: 75 18pt \"MS Shell Dlg 2\";\n"
                            "color: rgb(255, 255, 255);\n"
                            "font: 20pt \"MS Shell Dlg 2\";")
        sales.setText(str(data))

        layout = QVBoxLayout()
        layout.addWidget(frame)

        layout.setContentsMargins(0, 0, 0, 0)
        layout.setSpacing(0)

        self.setLayout(layout)
        self.setGeometry(QRect(30, 5, 200, 150))

    def get_orders(self):
        query = "select id from orders;"
        values = ()

        result = self.db.fetch(query, values)

        for (sales) in result:
            sales = sales[0]

        print("Rows")
        print(len(result))

        return len(result)
コード例 #3
0
 def login(self):
     query = "SELECT * FROM admin where admin_name=%s and password=%s"
     db = DB()
     values = (self.name, self.password)
     result = db.fetch(query, values)
     if result:
         self.id = result[0][0]
         self.name = result[0][1]
         self.password = result[0][2]
         return True
     return False
コード例 #4
0
    def login(self, name, password):
        query = "update admin set logged_in='no' where logged_in='yes'"
        db = DB()
        values = (self.name, self.password)

        self.name = name
        self.password = password

        query = "SELECT * FROM admin where admin_name=%s and password=%s"
        db = DB()
        values = (self.name, self.password)
        result = db.fetch(query, values)
        if result:
            self.id = result[0][0]
            self.name = result[0][1]
            self.password = result[0][2]
            return True
        return False
コード例 #5
0
class RestaurantDetails(QFrame):
    def __init__(self):
        super().__init__()

        self.db = DB()

        self.initUI()

    def initUI(self):
        frame = QFrame()
        # frame.setStyleSheet("background-color: rgb(30, 45, 66);")
        frame.setFrameShape(QFrame.StyledPanel)
        frame.setFrameShadow(QFrame.Raised)
        frame.setMinimumWidth(200)
        frame.setFixedHeight(150)
        frame.setStyleSheet("border: none")

        details = self.get_restaurant_details()

        restname = QLabel(frame)
        # restname.setAlignment(Qt.AlignCenter)
        restname.setGeometry(QRect(100, 0, 300, 41))
        restname.setStyleSheet("color: rgb(30, 45, 66);"
                               'font: 75 16pt "MS Shell Dlg 2";')
        restname.setText(details[0])

        address = QLabel(frame)
        # address.setAlignment(Qt.AlignCenter)
        address.setGeometry(QRect(100, 40, 300, 41))
        address.setStyleSheet("color: rgb(30, 45, 66);"
                              'font: 75 16pt "MS Shell Dlg 2";')
        address.setText(details[1])

        number = QLabel(frame)
        # number.setAlignment(Qt.AlignCenter)
        number.setGeometry(QRect(100, 80, 300, 41))
        number.setStyleSheet("color: rgb(30, 45, 66);"
                             'font: 75 16pt "MS Shell Dlg 2";')
        number.setText(details[2])

        layout = QVBoxLayout()
        layout.addWidget(frame)

        layout.setContentsMargins(0, 0, 0, 0)
        layout.setSpacing(0)

        self.setLayout(layout)
        # self.setGeometry(QRect(30, 5, 200, 150))

        # self.setStyleSheet("border: none")

    def get_restaurant_details(self):
        query = "select restaurant_name, address, contact from rest_info"
        values = ()

        data = self.db.fetch(query, values)

        for (restaurant_name, address, contact) in data:
            restaurant_name = restaurant_name
            address = address
            contact = contact

        return [restaurant_name, address, contact]
コード例 #6
0
class Table(QMainWindow):
    def __init__(self, parent):
        super().__init__(parent)

        self.db = DB()

        self.initUI()

    def initUI(self):

        in_class = "tables"

        self.sidebar = sidebar.Sidebar(self)
        self.sidebar.window.connect(self.getvalue)

        self.addDockWidget(Qt.LeftDockWidgetArea, self.sidebar)

        header = AppName(in_class)
        footer = Footer()

        add_and_search = AddSearchFrame(in_class)
        add_and_search.add_button.clicked.connect(
            lambda: self.add_tables(in_class))
        add_and_search.search_button.clicked.connect(
            lambda: self.search_tables(add_and_search.search_box))

        self.table = QTableWidget()
        self.table.setColumnCount(4)
        # self.table.setStyleSheet("border: none")
        # self.table.setStyleSheet(
        #     "background-color: rgb(255, 255, 255);\n"
        #     'font: 10pt "MS Shell Dlg 2";\n'
        #     "color: rgb(30, 45, 66);"
        # )

        # self.table.setHorizontalHeaderItem(0, QTableWidgetItem("ID"))
        self.table.setHorizontalHeaderItem(0, QTableWidgetItem("Table Name"))
        self.table.setHorizontalHeaderItem(1, QTableWidgetItem("Covers"))
        self.table.setHorizontalHeaderItem(2, QTableWidgetItem("Edit"))
        self.table.setHorizontalHeaderItem(3, QTableWidgetItem("Delete"))

        # self.table.insertRow(self.table.rowCount())
        #
        # self.table.setItem(self.table.rowCount() - 1, 0, QTableWidgetItem("ID1"))
        # self.table.setItem(self.table.rowCount() - 1, 1, QTableWidgetItem("Name1"))
        # self.table.setItem(self.table.rowCount() - 1, 2, QTableWidgetItem("Job1"))
        # self.table.setItem(self.table.rowCount() - 1, 3, QTableWidgetItem("Joining Date1"))
        # self.table.setItem(self.table.rowCount() - 1, 4, QTableWidgetItem("Salary1"))
        # self.table.setItem(self.table.rowCount() - 1, 5, QTableWidgetItem("Bonus1"))
        # self.table.setItem(self.table.rowCount() - 1, 6, QTableWidgetItem("Total Salary1"))
        # self.table.setItem(self.table.rowCount() - 1, 7, QTableWidgetItem("Edit1"))
        # self.table.setItem(self.table.rowCount() - 1, 8, QTableWidgetItem("Delete1"))

        data = self.load_tables_data()
        print(data)

        for x in data:
            print(x)

        self.populate_table(data)

        layout = QVBoxLayout()

        layout.addWidget(header)
        layout.addWidget(add_and_search)
        layout.addWidget(self.table)
        # layout.addStretch()
        layout.addWidget(footer)

        layout.setContentsMargins(0, 0, 0, 0)
        layout.setSpacing(0)

        centralWidget = QWidget()
        centralWidget.setLayout(layout)

        self.setCentralWidget(centralWidget)
        self.setContentsMargins(0, 0, 0, 0)

        # self.resize(800, 600)
        self.setWindowTitle("Login")
        self.resize(1160, 605)

        self.show()
        self.center()

    def center(self):
        '''centers the window on the screen'''
        screen = QDesktopWidget().screenGeometry()
        size = self.geometry()
        self.move((screen.width() - size.width()) / 2,
                  (screen.height() - size.height()) / 2)

    def getvalue(self, value):
        print(value)
        print(type(value))

        if value == 1:
            self.hide()
            view = sidebar.Dashboard(self)
        elif value == 2:
            self.hide()
            view = sidebar.Employee(self)
        elif value == 3:
            pass
        elif value == 4:
            self.hide()
            view = sidebar.Reservations(self)
        elif value == 5:
            self.hide()
            view = sidebar.Category(self)
        elif value == 6:
            self.hide()
            view = sidebar.Settings(self)
        elif value == 7:
            self.hide()
            view = sidebar.Orders(self)
        elif value == 8:
            self.hide()
            view = sidebar.Menu(self)
        elif value == 9:
            self.hide()
            view = sidebar.Bill(self)

    def load_tables_data(self):
        query = "SELECT id, table_number, covers FROM tables;"

        result = self.db.fetch(query)

        return result

    '''
        This function is called after an employee has been added and returns only the last row.
    '''

    def add_update_tables_data(self):
        query = "SELECT id, table_number, covers FROM tables " \
                "order by id desc limit 1;"

        result = self.db.fetch(query)

        return result

    def edit_tables(self):
        emp_row = self.table.indexAt(self.sender().pos())
        id = int(
            self.table.cellWidget(emp_row.row(),
                                  emp_row.column()).objectName())
        print(emp_row.row())
        print(id)
        print(type(id))
        '''
            Get the data from the database for that user.
        '''
        data = self.get_data(id)

        print("Data")
        print(data)
        # print(type(data[4]))

        view = AddTableDetails(self, "update", data[0])

        view.tablenotextbox.setText(data[1])
        view.covertextbox.setText(str(data[2]))

        view.closing.connect(self.editupdate_emp)

    def editupdate_emp(self, check):
        print("I am here")
        print(check)

        self.table.clearContents()
        self.table.setRowCount(0)

        data = self.load_tables_data()

        self.populate_table(data)
        # self.table.resizeColumnsToContents()

    def get_data(self, id):
        query = "SELECT id, table_number, covers FROM tables " \
                "where id=%s"
        values = (id, )

        result = self.db.fetch(query, values)

        for (id, table_number, covers) in result:
            id = id
            table_number = table_number
            covers = covers

        return [id, table_number, covers]

    def delete_tables(self):
        emp_row = self.table.indexAt(self.sender().pos())

        # print(emp_row.row())
        # print(emp_row.column())

        # print(self.table.cellWidget(emp_row.row(), emp_row.column()).objectName())

        id = int(
            self.table.cellWidget(emp_row.row(),
                                  emp_row.column()).objectName())
        # print(id)
        # print(emp_row.child(emp_row.row(), emp_row.column()))

        query = "DELETE FROM tables WHERE id=%s"
        values = (id, )

        try:
            result = self.db.execute(query, values)
        except:
            pass

        self.table.clearContents()
        self.table.setRowCount(0)
        data = self.load_tables_data()

        self.populate_table(data)

    def add_tables(self, where):
        if where == "tables":
            print("Category Button Clicked from tables")

            view = AddTableDetails(self, "add")
            view.closing.connect(self.update_tables)

        elif where == "stocks":
            print("Stock Button Clicked")

    def search_tables(self, search_obj):
        search = search_obj.text()
        search_obj.setText("")

        print("Search")
        if search != "":
            query = "SELECT * FROM tables WHERE table_number like %s"
            values = ("%" + search + "%", )
        else:
            query = "SELECT * FROM tables"
            values = ()

        self.table.clearContents()
        self.table.setRowCount(0)

        data = self.db.fetch(query, values)

        self.populate_table(data)

    '''
        Repopulates the employee table with the updated data.
    '''

    def update_tables(self, check):
        print("I am here")
        print(check)

        data = self.add_update_tables_data()

        self.populate_table(data)

    '''
        This function populates the employee table with data.
    '''

    def populate_table(self, data):
        for (id, table_number, covers) in data:
            self.table.insertRow(self.table.rowCount())

            self.table.setItem(self.table.rowCount() - 1, 0,
                               QTableWidgetItem(str(table_number)))
            self.table.setItem(self.table.rowCount() - 1, 1,
                               QTableWidgetItem(str(covers)))

            edit = QPushButton(self.table)
            edit.setObjectName(str(id))
            edit.setStyleSheet("background-color: rgb(50,205,50);")
            edit.setText("Edit")
            edit.adjustSize()
            edit.clicked.connect(self.edit_tables)

            self.table.setCellWidget(self.table.rowCount() - 1, 2, edit)

            delete = QPushButton(self.table)
            delete.setObjectName(str(id))
            delete.setStyleSheet("background-color: #d63447;")
            delete.setText("Delete")
            delete.adjustSize()
            delete.clicked.connect(self.delete_tables)
            # delete.mousePressEvent = functools.partial(self.delete_emp, source_object=delete)
            self.table.setCellWidget(self.table.rowCount() - 1, 3, delete)
コード例 #7
0
 def getOrdersCounts():
     query = "SELECT Count(id) FROM `order`"
     db = DB()
     result = db.fetch(query)
     return result[0][0]
コード例 #8
0
 def getRestDetails():
     query = "SELECT * FROM rest_info where id=%s"
     db = DB()
     values = (1, )
     result = db.fetch(query, values)
     return result
コード例 #9
0
class Sidebar(QDockWidget):

    window = pyqtSignal(int)

    def __init__(self, parent):
        super().__init__(parent)

        self.db = DB()

        self.initUI(parent)

    def initUI(self, parent):

        frame = QFrame()

        label1 = QLabel("Dashboard", frame)
        # label1.setStyleSheet("border: 3px solid red; text-align: center;")
        label1.setAlignment(Qt.AlignCenter)
        label1.setMinimumHeight(50)
        label1.setObjectName("Dashboard")
        label1.setMouseTracking(True)
        label1.mousePressEvent = functools.partial(self.tabsClicked, source_object=[label1, parent])
        label1.mouseMoveEvent = functools.partial(self.tabsHovered, source_object=label1)
        label1.leaveEvent = functools.partial(self.tabsleft, source_object=label1)
        # label1.setFixedHeight(50)

        label2 = QLabel("Employees", frame)
        label2.setAlignment(Qt.AlignCenter)
        label2.setMinimumHeight(50)
        label2.setObjectName("Employees")
        label2.setMouseTracking(True)
        label2.mousePressEvent = functools.partial(self.tabsClicked, source_object=[label2, parent])
        label2.mouseMoveEvent = functools.partial(self.tabsHovered, source_object=label2)
        label2.leaveEvent = functools.partial(self.tabsleft, source_object=label2)

        label3 = QLabel("Users", frame)
        label3.setAlignment(Qt.AlignCenter)
        label3.setMinimumHeight(50)
        label3.setObjectName("Users")
        label3.setMouseTracking(True)
        label3.mousePressEvent = functools.partial(self.tabsClicked, source_object=[label3, parent])
        label3.mouseMoveEvent = functools.partial(self.tabsHovered, source_object=label3)
        label3.leaveEvent = functools.partial(self.tabsleft, source_object=label3)

        label4 = QLabel("Tables", frame)
        label4.setAlignment(Qt.AlignCenter)
        label4.setMinimumHeight(50)
        label4.setObjectName("Tables")
        label4.setMouseTracking(True)
        label4.mousePressEvent = functools.partial(self.tabsClicked, source_object=[label4, parent])
        label4.mouseMoveEvent = functools.partial(self.tabsHovered, source_object=label4)
        label4.leaveEvent = functools.partial(self.tabsleft, source_object=label4)

        label5 = QLabel("Reservations", frame)
        label5.setAlignment(Qt.AlignCenter)
        label5.setMinimumHeight(50)
        label5.setObjectName("Reservations")
        label5.setMouseTracking(True)
        label5.mousePressEvent = functools.partial(self.tabsClicked, source_object=[label5, parent])
        label5.mouseMoveEvent = functools.partial(self.tabsHovered, source_object=label5)
        label5.leaveEvent = functools.partial(self.tabsleft, source_object=label5)

        label6 = QLabel("Orders", frame)
        label6.setAlignment(Qt.AlignCenter)
        label6.setMinimumHeight(50)
        label6.setObjectName("Orders")
        label6.setMouseTracking(True)
        label6.mousePressEvent = functools.partial(self.tabsClicked, source_object=[label6, parent])
        label6.mouseMoveEvent = functools.partial(self.tabsHovered, source_object=label6)
        label6.leaveEvent = functools.partial(self.tabsleft, source_object=label6)

        label7 = QLabel("Bill", frame)
        label7.setAlignment(Qt.AlignCenter)
        label7.setMinimumHeight(50)
        label7.setObjectName("Bill")
        label7.setMouseTracking(True)
        label7.mousePressEvent = functools.partial(self.tabsClicked, source_object=[label7, parent])
        label7.mouseMoveEvent = functools.partial(self.tabsHovered, source_object=label7)
        label7.leaveEvent = functools.partial(self.tabsleft, source_object=label7)

        label8 = QLabel("Settings", frame)
        label8.setAlignment(Qt.AlignCenter)
        label8.setMinimumHeight(50)
        label8.setObjectName("Settings")
        label8.setMouseTracking(True)
        label8.mousePressEvent = functools.partial(self.tabsClicked, source_object=[label8, parent])
        label8.mouseMoveEvent = functools.partial(self.tabsHovered, source_object=label8)
        label8.leaveEvent = functools.partial(self.tabsleft, source_object=label8)

        label9 = QLabel("Logout", frame)
        label9.setAlignment(Qt.AlignCenter)
        label9.setMinimumHeight(50)
        label9.setObjectName("Logout")
        label9.setMouseTracking(True)
        label9.mousePressEvent = functools.partial(self.tabsClicked, source_object=[label9, parent])
        label9.mouseMoveEvent = functools.partial(self.tabsHovered, source_object=label9)
        label9.leaveEvent = functools.partial(self.tabsleft, source_object=label9)

        label10 = QLabel("Category", frame)
        label10.setAlignment(Qt.AlignCenter)
        label10.setMinimumHeight(50)
        label10.setObjectName("Category")
        label10.setMouseTracking(True)
        label10.mousePressEvent = functools.partial(self.tabsClicked, source_object=[label10, parent])
        label10.mouseMoveEvent = functools.partial(self.tabsHovered, source_object=label10)
        label10.leaveEvent = functools.partial(self.tabsleft, source_object=label10)

        label11 = QLabel("Menu", frame)
        label11.setAlignment(Qt.AlignCenter)
        label11.setMinimumHeight(50)
        label11.setObjectName("Menu")
        label11.setMouseTracking(True)
        label11.mousePressEvent = functools.partial(self.tabsClicked, source_object=[label11, parent])
        label11.mouseMoveEvent = functools.partial(self.tabsHovered, source_object=label11)
        label11.leaveEvent = functools.partial(self.tabsleft, source_object=label11)

        layout = QVBoxLayout()
        layout.setContentsMargins(0, 0, 0, 0)
        layout.setSpacing(0)

        privileges = self.get_privileges()

        list_privileges = privileges.split(", ")

        print("All the Privileges")
        print(list_privileges)
        for x in list_privileges:
            if x == 'Dashboard':
                layout.addWidget(label1, 0)
            if x == 'Employees':
                layout.addWidget(label2, 0)
            if x == 'Users':
                layout.addWidget(label3, 0)
            if x == 'Tables':
                layout.addWidget(label4, 0)
            if x == 'Reservations':
                layout.addWidget(label5, 0)
            if x == 'Category':
                layout.addWidget(label10, 0)
            if x == 'Menu':
                layout.addWidget(label11, 0)
            if x == 'Orders':
                layout.addWidget(label6, 0)
            if x == 'Bill':
                layout.addWidget(label7, 0)
            if x == 'Settings':
                layout.addWidget(label8, 0)

        layout.addWidget(label9, 0)

        # self.setLayout(layout) # when extending QFrame

        ''' Removes the title bar from the DockWidget. '''
        self.setTitleBarWidget(QWidget(None))

        ''' 
            Make the DockWidget non-resizable.
            Set the minimum & maximum width/height value equal to same amount. 
        '''
        self.setMinimumWidth(200)
        self.setMaximumWidth(200)

        ''' Removes the close button from the DockWidget '''
        # self.setFeatures(QDockWidget.DockWidgetFloatable | QDockWidget.DockWidgetMovable)
        self.setFeatures(self.NoDockWidgetFeatures)

        self.setStyleSheet("background-color: rgb(30, 45, 66); color: white; border-width: 0px; ")
        self.setContentsMargins(0, 0, 0, 0)

        centralWidget = QWidget()
        centralWidget.setLayout(layout)

        self.setWidget(centralWidget)

        # self.setWindowTitle("Test")
        self.show()

    def get_privileges(self):
        list = ""

        query = "SELECT roles FROM admin where logged_in='yes' " \
                "order by id desc limit 1;"

        result = self.db.fetch(query)

        for (roles) in result:
            list = roles[0]

        print(list)

        return list

    def tabsClicked(self, event, source_object=None):
        print("Clicked, from: ", source_object[0].objectName())

        tab = source_object[0].objectName()

        if tab == "Dashboard":
            # self.window.emit(1)
            source_object[1].hide()
            view = Dashboard(source_object[1])
        elif tab == "Employees":
            # self.window.emit(2)
            source_object[1].hide()
            view = Employee(source_object[1])

        elif tab == "Users":
            source_object[1].hide()
            view = Users(source_object[1])
        elif tab == "Tables":
            # self.window.emit(3)
            source_object[1].hide()
            view = Table(source_object[1])
        elif tab == "Reservations":
            # self.window.emit(4)
            source_object[1].hide()
            view = Reservations(source_object[1])
        elif tab == "Category":
            # self.window.emit(5)
            source_object[1].hide()
            view = Category(source_object[1])
        elif tab == "Menu":
            # self.window.emit(8)
            source_object[1].hide()
            view = Menu(source_object[1])
        elif tab == "Orders":
            # self.window.emit(7)
            source_object[1].hide()
            view = Orders(source_object[1])
        elif tab == "Bill":
            # self.window.emit(9)
            source_object[1].hide()
            view = Bill(source_object[1])
        elif tab == "Settings":
            # self.window.emit(6)
            source_object[1].hide()
            view = Settings(source_object[1])
        elif tab == "Logout":
            query = "update admin set logged_in='no' where logged_in='yes'"
            values = ()

            data = self.db.execute(query, values)

            source_object[1].hide()
            view = Logout(source_object[1])


    def tabsHovered(self, event, source_object= None):
        source_object.setStyleSheet("background-color: white; color: black")

    def tabsleft(self, event, source_object= None):
        source_object.setStyleSheet("background-color: rgb(30, 45, 66); color: white")
コード例 #10
0
class Orders(QMainWindow):

    def __init__(self, parent):
        super().__init__(parent)

        self.db = DB()

        self.initUI()

    def initUI(self):

        in_class = "orders"

        self.sidebar = sidebar.Sidebar(self)
        self.sidebar.window.connect(self.getvalue)

        self.addDockWidget(Qt.LeftDockWidgetArea, self.sidebar)

        header = AppName(in_class)
        footer = Footer()

        self.scrollArea = QScrollArea()
        # self.scrollArea.setContentsMargins(0, 0, 0, 0)
        self.scrollArea.setStyleSheet("Border: none")

        left_content = QVBoxLayout(self.scrollArea)
        left_content.setContentsMargins(0, 0, 0, 0)
        left_content.setSpacing(0)

        table = QLabel("Table No")

        table_list = self.get_tables()

        self.table_no = QComboBox()
        self.table_no.setFixedWidth(250)
        self.table_no.addItems(table_list)

        hl = QHBoxLayout()
        hl.addStretch()
        hl.addWidget(table)
        hl.addStretch()
        hl.addWidget(self.table_no)
        hl.addStretch()

        # left_content.addLayout(hlayout1)
        left_content.addLayout(hl)

        menu_list = self.get_menu_items()

        for key, value in menu_list.items():
            if value:
                category = QLabel(key)
                category.setAlignment(Qt.AlignCenter)

                left_content.addWidget(category)

                for x in value:
                    quantity = QLineEdit()
                    quantity.setFixedWidth(50)
                    quantity.setFixedHeight(50)

                    xtimes = QLabel(" X ")

                    widget2 = MenuItems(x)
                    widget2.setMouseTracking(True)
                    widget2.mouseMoveEvent = functools.partial(self.mouse_moved, source_object=widget2)
                    widget2.leaveEvent = functools.partial(self.mouse_left, source_object=widget2)
                    widget2.mousePressEvent = functools.partial(self.mouse_pressed,
                                                                source_object=[quantity, widget2])
                    widget2.setStyleSheet("background-color: grey; color: black")

                    hlayout2 = QHBoxLayout()
                    hlayout2.setContentsMargins(10, 10, 0, 0)
                    hlayout2.addWidget(quantity)
                    hlayout2.addWidget(xtimes)
                    hlayout2.addWidget(widget2)

                    # widget2.mousePressEvent = functools.partial(self.mouse_pressed, source_object=hlayout2)

                    left_content.addLayout(hlayout2)
                    left_content.addStretch()

        # left_content.addLayout(hlayout2)



        # self.thumbnail = QHBoxLayout()
        # self.scrollArea.setMaximumWidth(self.width()/2)

        self.scrollChildArea = QWidget()
        self.scrollChildArea.setLayout(left_content)

        self.scrollArea.setWidgetResizable(True)
        self.scrollArea.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff)
        self.scrollArea.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOn)
        # self.scrollArea.setMinimumHeight(160)
        # self.scrollArea.setMaximumHeight(160)
        self.scrollArea.setWidget(self.scrollChildArea)
        # self.scrollArea.setFrameShape(QFrame().NoFrame)
        self.scrollArea.setStatusTip("Preview")

        # ---------------------------------------------------
        self.scrollArea2 = QScrollArea()
        # self.scrollArea2.setContentsMargins(0, 0, 0, 0)
        self.scrollArea2.setStyleSheet("Border: none")
        # ---------------------------------------------------

        self.right_content = QVBoxLayout(self.scrollArea2)
        self.right_content.setContentsMargins(0, 0, 0, 0)
        # self.right_content.setAlignment(Qt.AlignCenter)

        # ---------------------------------------------------
        self.scrollChildArea2 = QWidget()
        self.scrollChildArea2.setLayout(self.right_content)

        self.scrollArea2.setWidgetResizable(True)
        self.scrollArea2.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff)
        self.scrollArea2.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOn)
        # self.scrollArea2.setMinimumHeight(160)
        # self.scrollArea2.setMaximumHeight(160)
        self.scrollArea2.setWidget(self.scrollChildArea2)
        # self.scrollArea2.setFrameShape(QFrame().NoFrame)
        self.scrollArea2.setStatusTip("Preview")
        bar = self.scrollArea2.verticalScrollBar()
        bar.rangeChanged.connect(lambda: bar.setValue(bar.maximum()))
        # ---------------------------------------------------

        bill = QLabel()
        bill.setText("Bill")
        bill.setAlignment(Qt.AlignCenter)
        bill.setFixedWidth(450)
        bill.setStyleSheet("font: 75 20pt \"MS Shell Dlg 2\";")

        self.msg = QLabel("")
        self.msg.setFixedHeight(50)

        print_bill = QPushButton("Send")
        print_bill.setFixedWidth(100)
        print_bill.setFixedHeight(50)
        print_bill.setStyleSheet("font: 75 12pt \"MS Shell Dlg 2\";\n"
                                 "background-color: rgb(30, 45, 66);\n"
                                 "color: rgb(255, 255, 255);")
        print_bill.clicked.connect(self.send_bill)

        hl2 = QHBoxLayout()
        hl2.addWidget(self.msg, alignment=Qt.AlignCenter)
        hl2.addWidget(print_bill, alignment=Qt.AlignRight)

        self.total = 0.00
        self.food_order = []

        self.total_amount = QLabel("Total : " + str(self.total))
        self.total_amount.setAlignment(Qt.AlignRight)


        self.right_content.addWidget(bill)
        self.right_content.addStretch()
        self.right_content.addWidget(self.total_amount)
        self.right_content.addLayout(hl2)
        self.right_content.addStretch()

        content = QGridLayout()
        content.setContentsMargins(0, 0, 0, 0)
        content.setSpacing(0)

        content.addWidget(self.scrollArea, 0, 0)
        content.addWidget(self.scrollArea2, 0, 1)


        layout = QVBoxLayout()

        layout.addWidget(header)
        layout.addLayout(content)
        layout.addStretch()
        layout.addWidget(footer)

        layout.setContentsMargins(0, 0, 0, 0)

        centralWidget = QWidget()
        centralWidget.setLayout(layout)

        self.setCentralWidget(centralWidget)
        self.setContentsMargins(0, 0, 0, 0)



        self.setWindowTitle("Settings")
        self.resize(1160, 605)

        self.show()
        self.center()

    def center(self):
        '''centers the window on the screen'''
        screen = QDesktopWidget().screenGeometry()
        size = self.geometry()
        self.move((screen.width() - size.width()) / 2,
                  (screen.height() - size.height()) / 2)

    def getvalue(self, value):
        print(value)
        print(type(value))

        if value == 1:
            self.hide()
            view = sidebar.Dashboard(self)
        elif value == 2:
            self.hide()
            view = sidebar.Employee(self)
        elif value == 3:
            self.hide()
            view = sidebar.Table(self)
        elif value == 4:
            self.hide()
            view = sidebar.Reservations(self)
        elif value == 5:
            self.hide()
            view = sidebar.Category(self)
        elif value == 6:
            self.hide()
            view = sidebar.Settings(self)
        elif value == 7:
            pass
        elif value == 8:
            self.hide()
            view = sidebar.Menu(self)
        elif value == 9:
            self.hide()
            view = sidebar.Bill(self)

    def settle_bill(self):
        if not self.food_order:
            self.msg.setText("Food not ordered")
            self.msg.setStyleSheet("color: red")
        else:
            '''
                Update the database with the order details.
            '''
            query = "select id from tables where table_number=%s"
            values = (self.table_no.currentText(),)

            data = self.db.fetch(query, values)

            for (id) in data:
                table_id = id[0]

            query = "update orders set paid = 'yes' where id = %s"
            values = (table_id,)

            data = self.db.execute(query, values)

            self.msg.setText("Bill Settled")
            self.msg.setStyleSheet("color: green")

    def send_bill(self):
        print(self.food_order)

        if not self.food_order:
            print("Food not ordered")
            self.msg.setText("Food not ordered")
            self.msg.setStyleSheet("color: red")
        else:
            # print(self.table_no.currentText())
            # # print(int(self.table_no.currentText()[7:8]))
            # print(type(self.table_no.currentText()))
            '''
                Update the database with the order details.
            '''
            query = "select id from tables where table_number=%s"
            values = (self.table_no.currentText(),)

            data = self.db.fetch(query, values)

            for (id) in data:
                table_id = id[0]

            query = "insert into orders (table_id, food_list, total_price) " \
                    "values (%s, %s, %s)"
            values = (table_id, ', '.join(self.food_order), str(self.total))

            data = self.db.execute(query, values)

            self.msg.setText("Saved")
            self.msg.setStyleSheet("color: green")

            # print(int(self.table_no.currentText()))
            # print(', '.join(self.food_order))
            # print(type(self.food_order))
            # print(self.total)



    def get_tables(self):
        query = "select table_number, covers from tables " \
                "where id != ifnull((select table_id from orders where paid = 'no'), 0);"
        values = ()

        data = self.db.fetch(query, values)

        tables = []

        # for (table_number, covers) in data:
        #     tables.append("Table: " + str(table_number) + " Cover: (" + str(covers) + ")")

        for (table_number, covers) in data:
            tables.append(table_number)

        return tables

    def get_menu_items(self):
        query = "select category_name from category"
        values = ()

        data = self.db.fetch(query, values)

        menu = {}

        for (category_name) in data:
            menu[category_name[0]] = []

        print(menu)

        query = "select food_name, price, category_name from menu " \
                "join category on category.id = menu.category_id"
        values = ()

        data = self.db.fetch(query, values)

        for (food_name, price, category_name) in data:
            menu[category_name].append([food_name, price])

        print("\nHere is the list\n")
        for key, value in menu.items():
            print(str(key) + ": " + str(value))

        return menu


    def mouse_moved(self, event, source_object=None):
        # print("Moved")
        source_object.setStyleSheet("background-color: black; color: white")

    def mouse_left(self, event, source_object=None):
        # print("Left")
        source_object.setStyleSheet("background-color: grey; color: black")

    def mouse_pressed(self, event, source_object=None):
        print("Pressed")
        # print(source_object)
        # print(type(source_object))
        # # print(source_object.widget())
        # print(source_object[0].text())
        # print(source_object[1].food_label.text())
        # print(source_object[1].food_price_label.text())

        quantity = QLabel(source_object[0].text())
        if quantity.text() == "":
            quantity.setText("1")
        xtimes = QLabel(" X ")
        food_label = QLabel(source_object[1].food_label.text())
        food_price_label = QLabel(source_object[1].food_price_label.text())
        delete = QLabel("X")
        delete.setStyleSheet("color: red")

        # widget2 = MenuItems(x)
        # widget2.setMouseTracking(True)
        # widget2.mouseMoveEvent = functools.partial(self.mouse_moved, source_object=widget2)
        # widget2.leaveEvent = functools.partial(self.mouse_left, source_object=widget2)
        # widget2.mousePressEvent = functools.partial(self.mouse_pressed,
        #                                             source_object=[quantity, widget2])
        # widget2.setStyleSheet("background-color: grey; color: black")

        hlayout2 = QHBoxLayout()
        hlayout2.setContentsMargins(10, 10, 0, 0)
        hlayout2.addStretch()
        hlayout2.addWidget(quantity)
        hlayout2.addStretch()
        hlayout2.addWidget(xtimes)
        hlayout2.addStretch()
        hlayout2.addWidget(food_label)
        hlayout2.addStretch()
        hlayout2.addWidget(food_price_label)
        hlayout2.addStretch()
        hlayout2.addWidget(delete)
        hlayout2.addStretch()

        widget = QWidget()
        widget.setObjectName(str(int(quantity.text()) * round(float(food_price_label.text()), 2)))
        widget.setLayout(hlayout2)

        delete.mousePressEvent = functools.partial(self.delete_bill_item, source_object=widget)

        # widget2.mousePressEvent = functools.partial(self.mouse_pressed, source_object=hlayout2)

        # self.right_content.addWidget(widget)
        self.right_content.insertWidget(self.right_content.count() - 3, widget)
        # self.right_content.addStretch()
        self.total += int(quantity.text()) * round(float(food_price_label.text()), 2)
        self.total_amount.setText("Total: " + str(self.total))

        self.food_order.append(quantity.text() + " X " + food_label.text() + " = " + food_price_label.text())
        print("\nAdded")
        print(self.food_order)

        # print(widget.findChildren(QLabel)[0].text())
        # print(widget.findChildren(QLabel)[2].text())




    def delete_bill_item(self, event, source_object=None):
        print("Delete here")
        print(source_object.objectName())

        self.total -= float(source_object.objectName())
        self.food_order.remove(source_object.findChildren(QLabel)[0].text()
                               + " X " + source_object.findChildren(QLabel)[2].text()
                               + " = " + source_object.findChildren(QLabel)[3].text())
        print("\nDeleted")
        print(self.food_order)

        self.total_amount.setText("Total: " + str(self.total))
        source_object.setParent(None)
コード例 #11
0
class Bill(QMainWindow):
    def __init__(self, parent):
        super().__init__(parent)

        self.db = DB()

        self.initUI()

    def initUI(self):

        in_class = "bills"

        self.sidebar = sidebar.Sidebar(self)
        self.sidebar.window.connect(self.getvalue)

        self.addDockWidget(Qt.LeftDockWidgetArea, self.sidebar)

        header = AppName(in_class)
        footer = Footer()

        add_and_search = AddSearchFrame(in_class)
        add_and_search.add_button.clicked.connect(
            lambda: self.add_bill(in_class))
        add_and_search.search_button.clicked.connect(
            lambda: self.search_bill(add_and_search.search_box))

        self.table = QTableWidget()
        self.table.setColumnCount(7)
        # self.table.setStyleSheet("border: none")
        # self.table.setStyleSheet(
        #     "background-color: rgb(255, 255, 255);\n"
        #     'font: 10pt "MS Shell Dlg 2";\n'
        #     "color: rgb(30, 45, 66);"
        # )

        # self.table.setHorizontalHeaderItem(0, QTableWidgetItem("ID"))
        self.table.setHorizontalHeaderItem(0, QTableWidgetItem("Table Number"))
        self.table.setHorizontalHeaderItem(1, QTableWidgetItem("Food List"))
        self.table.setHorizontalHeaderItem(2, QTableWidgetItem("total_price"))
        self.table.setHorizontalHeaderItem(3, QTableWidgetItem("Paid"))
        self.table.setHorizontalHeaderItem(4, QTableWidgetItem("Edit"))
        self.table.setHorizontalHeaderItem(5, QTableWidgetItem("Delete"))
        self.table.setHorizontalHeaderItem(6, QTableWidgetItem("Paid"))

        data = self.load_bill_data()
        print(data)

        for x in data:
            print(x)

        self.populate_table(data)
        self.table.resizeColumnsToContents()

        layout = QVBoxLayout()

        layout.addWidget(header)
        layout.addWidget(add_and_search)
        layout.addWidget(self.table)
        # layout.addStretch()
        layout.addWidget(footer)

        layout.setContentsMargins(0, 0, 0, 0)
        layout.setSpacing(0)

        centralWidget = QWidget()
        centralWidget.setLayout(layout)

        self.setCentralWidget(centralWidget)
        self.setContentsMargins(0, 0, 0, 0)

        # self.resize(800, 600)
        self.setWindowTitle("Login")
        self.resize(1160, 605)

        self.show()
        self.center()

    def center(self):
        '''centers the window on the screen'''
        screen = QDesktopWidget().screenGeometry()
        size = self.geometry()
        self.move((screen.width() - size.width()) / 2,
                  (screen.height() - size.height()) / 2)

    def getvalue(self, value):
        print(value)
        print(type(value))

        if value == 1:
            self.hide()
            view = sidebar.Dashboard(self)
        elif value == 2:
            self.hide()
            view = sidebar.Employee(self)
        elif value == 3:
            self.hide()
            view = sidebar.Table(self)
        elif value == 4:
            self.hide()
            view = sidebar.Reservations(self)
        elif value == 5:
            pass
        elif value == 6:
            self.hide()
            view = sidebar.Settings(self)
        elif value == 7:
            self.hide()
            view = sidebar.Orders(self)
        elif value == 8:
            self.hide()
            view = sidebar.Menu(self)

    def load_bill_data(self):
        query = "select orders.id, table_number, food_list, total_price, paid from orders " \
                "join tables on tables.id = orders.table_id"

        result = self.db.fetch(query)

        return result

    '''
        This function is called after an employee has been added and returns only the last row.
    '''

    def add_update_bill_data(self):
        query = "select orders.id, table_number, food_list, total_price, paid from orders " \
                "join tables on tables.id = orders.table_id " \
                "order by id desc limit 1;"

        result = self.db.fetch(query)

        return result

    def edit_bill(self):
        emp_row = self.table.indexAt(self.sender().pos())
        print(emp_row.row())

    def delete_bill(self):
        emp_row = self.table.indexAt(self.sender().pos())

        # print(emp_row.row())
        # print(emp_row.column())

        # print(self.table.cellWidget(emp_row.row(), emp_row.column()).objectName())

        id = int(
            self.table.cellWidget(emp_row.row(),
                                  emp_row.column()).objectName())
        # print(id)
        # print(emp_row.child(emp_row.row(), emp_row.column()))

        query = "DELETE FROM orders WHERE id=%s"
        values = (id, )

        result = self.db.execute(query, values)

        self.table.clearContents()
        self.table.setRowCount(0)
        data = self.load_bill_data()

        self.populate_table(data)

    def add_bill(self, where):
        if where == "category":
            print("Category Button Clicked from category")

            view = AddCategoryDetails(self)
            view.closing.connect(self.update_bill)

        elif where == "stocks":
            print("Stock Button Clicked")

    def search_bill(self, search_obj):
        search = search_obj.text()
        search_obj.setText("")

        print("Search")
        if search != "":
            query = "select orders.id, table_number, food_list, total_price, paid " \
                    "from orders join tables on tables.id = orders.table_id " \
                    "and tables.table_number like %s;"
            values = ("%" + search + "%", )
        else:
            query = "SELECT orders.id, table_number, food_list, total_price, paid FROM orders " \
                    "join tables on tables.id = orders.table_id"
            values = ()

        self.table.clearContents()
        self.table.setRowCount(0)

        data = self.db.fetch(query, values)

        self.populate_table(data)
        self.table.resizeColumnsToContents()

    def paid_bill(self):
        emp_row = self.table.indexAt(self.sender().pos())

        # print(emp_row.row())
        # print(emp_row.column())

        # print(self.table.cellWidget(emp_row.row(), emp_row.column()).objectName())

        id = int(
            self.table.cellWidget(emp_row.row(),
                                  emp_row.column()).objectName())

        print(emp_row)
        print(id)

        query = "update orders set paid = 'yes' where id = %s;"
        values = (id, )

        result = self.db.execute(query, values)

        self.table.clearContents()
        self.table.setRowCount(0)
        data = self.load_bill_data()

        self.populate_table(data)
        self.table.resizeColumnsToContents()

    '''
        Repopulates the employee table with the updated data.
    '''

    def update_bill(self, check):
        print("I am here")
        print(check)

        data = self.add_update_bill_data()

        self.populate_table(data)
        self.table.resizeColumnsToContents()

    '''
        This function populates the employee table with data.
    '''

    def populate_table(self, data):
        for (id, table_number, food_list, total_price, paid) in data:
            self.table.insertRow(self.table.rowCount())

            self.table.setItem(self.table.rowCount() - 1, 0,
                               QTableWidgetItem(str(table_number)))
            self.table.setItem(self.table.rowCount() - 1, 1,
                               QTableWidgetItem(str(food_list)))
            self.table.setItem(self.table.rowCount() - 1, 2,
                               QTableWidgetItem(str(total_price)))
            self.table.setItem(self.table.rowCount() - 1, 3,
                               QTableWidgetItem(str(paid)))

            edit = QPushButton(self.table)
            edit.setStyleSheet("background-color: rgb(50,205,50);")
            edit.setText("Edit")
            edit.adjustSize()
            edit.clicked.connect(self.edit_bill)

            self.table.setCellWidget(self.table.rowCount() - 1, 4, edit)

            delete = QPushButton(self.table)
            delete.setObjectName(str(id))
            delete.setStyleSheet("background-color: #d63447;")
            delete.setText("Delete")
            delete.adjustSize()
            delete.clicked.connect(self.delete_bill)
            # delete.mousePressEvent = functools.partial(self.delete_emp, source_object=delete)
            self.table.setCellWidget(self.table.rowCount() - 1, 5, delete)

            paid = QPushButton(self.table)
            paid.setObjectName(str(id))
            paid.setStyleSheet("background-color: grey;")
            paid.setText("Paid")
            paid.adjustSize()
            paid.clicked.connect(self.paid_bill)
            # paid.mousePressEvent = functools.partial(self.paid_emp, source_object=paid)
            self.table.setCellWidget(self.table.rowCount() - 1, 6, paid)
コード例 #12
0
class AddUser(QMainWindow):

    closing = pyqtSignal(int)

    def __init__(self, parent):
        super().__init__(parent)

        self.db = DB()

        self.initUI()

    def initUI(self):

        self.setWindowModality(Qt.ApplicationModal)

        frame = QFrame()
        # frame.setStyleSheet("background-color: rgb(30, 45, 66);")
        frame.setFrameShape(QFrame.StyledPanel)
        frame.setFrameShadow(QFrame.Raised)
        # frame.setFixedWidth(200)
        # frame.setFixedHeight(150)

        main_label = QLabel(frame)
        main_label.setAlignment(Qt.AlignCenter)
        main_label.setGeometry(QRect(120, 40, 211, 41))
        main_label.setStyleSheet("background-color: rgb(30, 45, 66);\n"
                                 "color: rgb(255, 255, 255);\n"
                                 "font: 75 14pt \"MS Shell Dlg 2\";")
        main_label.setText("Add User Privileges")

        user_label = QLabel(frame)
        user_label.setText("User")
        user_label.setGeometry(QRect(50, 100, 101, 41))
        user_label.setStyleSheet("font: 75 14pt \"MS Shell Dlg 2\";\n"
                                 "color: rgb(30, 45, 66);")

        getuserlist = self.get_all_user()

        self.user_list = QComboBox(frame)
        self.user_list.addItems(getuserlist)
        self.user_list.setGeometry(QRect(180, 100, 191, 46))

        user_name = QLabel(frame)
        user_name.setText("Add Username")
        user_name.setGeometry(QRect(50, 140, 101, 41))
        user_name.setStyleSheet("font: 75 14pt \"MS Shell Dlg 2\";\n"
                                "color: rgb(30, 45, 66);")

        self.username = QLineEdit(frame)
        self.username.setGeometry(QRect(180, 140, 191, 35))

        user_password = QLabel(frame)
        user_password.setText("Add Password")
        user_password.setGeometry(QRect(50, 180, 101, 41))
        user_password.setStyleSheet("font: 75 14pt \"MS Shell Dlg 2\";\n"
                                    "color: rgb(30, 45, 66);")

        self.password = QLineEdit(frame)
        self.password.setGeometry(QRect(180, 180, 191, 35))

        privileges = QLabel(frame)
        privileges.setText("Privileges")
        privileges.setGeometry(QRect(50, 210, 101, 41))
        privileges.setStyleSheet("font: 75 14pt \"MS Shell Dlg 2\";\n"
                                 "color: rgb(30, 45, 66);")

        self.option_1 = QCheckBox(frame)
        self.option_1.setText("Dashboard")
        self.option_1.setGeometry(QRect(180, 210, 101, 41))
        self.option_1.setStyleSheet("font: 75 14pt \"MS Shell Dlg 2\";\n"
                                    "color: rgb(30, 45, 66);")

        self.option_2 = QCheckBox(frame)
        self.option_2.setText("Employees")
        self.option_2.setGeometry(QRect(280, 210, 101, 41))
        self.option_2.setStyleSheet("font: 75 14pt \"MS Shell Dlg 2\";\n"
                                    "color: rgb(30, 45, 66);")

        self.option_3 = QCheckBox(frame)
        self.option_3.setText("Bill")
        self.option_3.setGeometry(QRect(180, 235, 101, 41))
        self.option_3.setStyleSheet("font: 75 14pt \"MS Shell Dlg 2\";\n"
                                    "color: rgb(30, 45, 66);")

        self.option_4 = QCheckBox(frame)
        self.option_4.setText("Tables")
        self.option_4.setGeometry(QRect(280, 235, 101, 41))
        self.option_4.setStyleSheet("font: 75 14pt \"MS Shell Dlg 2\";\n"
                                    "color: rgb(30, 45, 66);")

        self.option_5 = QCheckBox(frame)
        self.option_5.setText("Reservations")
        self.option_5.setGeometry(QRect(180, 260, 101, 41))
        self.option_5.setStyleSheet("font: 75 14pt \"MS Shell Dlg 2\";\n"
                                    "color: rgb(30, 45, 66);")

        self.option_6 = QCheckBox(frame)
        self.option_6.setText("Category")
        self.option_6.setGeometry(QRect(280, 260, 101, 41))
        self.option_6.setStyleSheet("font: 75 14pt \"MS Shell Dlg 2\";\n"
                                    "color: rgb(30, 45, 66);")

        self.option_7 = QCheckBox(frame)
        self.option_7.setText("Orders")
        self.option_7.setGeometry(QRect(180, 285, 101, 41))
        self.option_7.setStyleSheet("font: 75 14pt \"MS Shell Dlg 2\";\n"
                                    "color: rgb(30, 45, 66);")

        self.option_8 = QCheckBox(frame)
        self.option_8.setText("Settings")
        self.option_8.setGeometry(QRect(280, 285, 101, 41))
        self.option_8.setStyleSheet("font: 75 14pt \"MS Shell Dlg 2\";\n"
                                    "color: rgb(30, 45, 66);")

        self.option_9 = QCheckBox(frame)
        self.option_9.setText("Menu")
        self.option_9.setGeometry(QRect(180, 310, 101, 41))
        self.option_9.setStyleSheet("font: 75 14pt \"MS Shell Dlg 2\";\n"
                                    "color: rgb(30, 45, 66);")

        self.option_10 = QCheckBox(frame)
        self.option_10.setText("Users")
        self.option_10.setGeometry(QRect(280, 310, 101, 41))
        self.option_10.setStyleSheet("font: 75 14pt \"MS Shell Dlg 2\";\n"
                                     "color: rgb(30, 45, 66);")

        submit_btn = QPushButton(frame)
        submit_btn.setText("Submit")
        submit_btn.setGeometry(QRect(170, 360, 111, 31))
        submit_btn.setStyleSheet("font: 75 12pt \"MS Shell Dlg 2\";\n"
                                 "background-color: rgb(30, 45, 66);\n"
                                 "color: rgb(255, 255, 255);")
        submit_btn.clicked.connect(self.add_privileges)

        layout = QVBoxLayout()
        layout.addWidget(frame)

        layout.setContentsMargins(0, 0, 0, 0)
        layout.setSpacing(0)

        centralWidget = QWidget()
        centralWidget.setLayout(layout)

        self.setCentralWidget(centralWidget)
        self.setWindowTitle("Add User Privileges")
        self.resize(430, 450)
        self.show()

        self.center()

    def center(self):
        ''' centers the window on the screen'''
        screen = QDesktopWidget().screenGeometry()
        size = self.geometry()
        self.move((screen.width() - size.width()) / 2,
                  (screen.height() - size.height()) / 2)

    def add_privileges(self):
        print("List the selected privileges.")

        selected_privileges = []

        if self.option_1.isChecked():
            selected_privileges.append(self.option_1.text())

        if self.option_2.isChecked():
            selected_privileges.append(self.option_2.text())

        if self.option_3.isChecked():
            selected_privileges.append(self.option_3.text())

        if self.option_4.isChecked():
            selected_privileges.append(self.option_4.text())

        if self.option_5.isChecked():
            selected_privileges.append(self.option_5.text())

        if self.option_6.isChecked():
            selected_privileges.append(self.option_6.text())

        if self.option_7.isChecked():
            selected_privileges.append(self.option_7.text())

        if self.option_8.isChecked():
            selected_privileges.append(self.option_8.text())

        print(self.user_list.currentText())
        print(self.username.text())
        print(self.password.text())
        print(selected_privileges)
        '''
            All ready here.. Add the query to the database.
        '''
        query = "insert into admin (admin_name, password, roles) " \
                "values (%s, %s, %s)"
        values = (self.username.text(), self.password.text(),
                  ', '.join(selected_privileges))

        data = self.db.execute(query, values)

        self.closeEvent = self.message()

    def message(self):
        # self.closing.emit(1)
        self.close()

    def get_all_user(self):
        query = "select employee_name, job_title from employee"
        values = ()

        data = self.db.fetch(query, values)

        list = []

        for (employee_name, job_title) in data:
            print(employee_name + " (" + job_title + ")")
            list.append(employee_name + " (" + job_title + ")")

        return list
コード例 #13
0
class ChangePassword(QMainWindow):
    def __init__(self, parent):
        super().__init__(parent)

        self.db = DB()

        self.initUI()

    def initUI(self):

        self.setWindowModality(Qt.ApplicationModal)

        frame = QFrame()
        # frame.setStyleSheet("background-color: rgb(30, 45, 66);")
        frame.setFrameShape(QFrame.StyledPanel)
        frame.setFrameShadow(QFrame.Raised)
        # frame.setFixedWidth(200)
        # frame.setFixedHeight(150)

        main_label = QLabel(frame)
        main_label.setAlignment(Qt.AlignCenter)
        main_label.setGeometry(QRect(120, 40, 211, 41))
        main_label.setStyleSheet("background-color: rgb(30, 45, 66);\n"
                                 "color: rgb(255, 255, 255);\n"
                                 "font: 75 14pt \"MS Shell Dlg 2\";")
        main_label.setText("Change Password")

        old_passwordlabel = QLabel(frame)
        old_passwordlabel.setText("Old Password")
        old_passwordlabel.setGeometry(QRect(50, 140, 101, 41))
        old_passwordlabel.setStyleSheet("font: 75 12pt \"MS Shell Dlg 2\";\n"
                                        "color: rgb(30, 45, 66);")

        self.old_passwordtextbox = QLineEdit(frame)
        self.old_passwordtextbox.setGeometry(QRect(180, 140, 191, 41))

        new_passwordlabel = QLabel(frame)
        new_passwordlabel.setText("New Password")
        new_passwordlabel.setGeometry(QRect(50, 190, 101, 41))
        new_passwordlabel.setStyleSheet("font: 75 12pt \"MS Shell Dlg 2\";\n"
                                        "color: rgb(30, 45, 66);")

        self.new_passwordtextbox = QLineEdit(frame)
        self.new_passwordtextbox.setGeometry(QRect(180, 190, 191, 41))

        self.error_msg = QLabel(frame)
        self.error_msg.setText("")
        self.error_msg.setGeometry(QRect(170, 250, 121, 41))
        self.error_msg.setStyleSheet("font: 75 12pt \"MS Shell Dlg 2\";\n"
                                     "color: rgb(30, 45, 66);")

        submit_btn = QPushButton(frame)
        submit_btn.setText("Submit")
        submit_btn.setGeometry(QRect(170, 310, 111, 31))
        submit_btn.setStyleSheet("font: 75 12pt \"MS Shell Dlg 2\";\n"
                                 "background-color: rgb(30, 45, 66);\n"
                                 "color: rgb(255, 255, 255);")
        submit_btn.clicked.connect(self.update_password)

        layout = QVBoxLayout()
        layout.addWidget(frame)

        layout.setContentsMargins(0, 0, 0, 0)
        layout.setSpacing(0)

        centralWidget = QWidget()
        centralWidget.setLayout(layout)

        self.setCentralWidget(centralWidget)
        self.setWindowTitle("Change Password")
        self.resize(430, 395)
        self.show()

        self.center()

    def center(self):
        '''centers the window on the screen'''
        screen = QDesktopWidget().screenGeometry()
        size = self.geometry()
        self.move((screen.width() - size.width()) / 2,
                  (screen.height() - size.height()) / 2)

    def update_password(self):
        print("Update password")
        '''
            1. Check which user is logged in.
            2. Change the password of the logged in user.
        '''

        old_password = self.old_passwordtextbox.text()
        new_password = self.new_passwordtextbox.text()

        if old_password != '' and new_password != '':
            query = "select admin_name, password from admin where logged_in='yes'"
            values = ()

            data = self.db.fetch(query, values)

            for (admin_name, password) in data:
                match_password = password

            if match_password == old_password:
                query = "update admin set password=%s where logged_in='yes'"
                values = (new_password, )

                data = self.db.execute(query, values)

                self.error_msg.setText("Password updated")

            else:
                '''
                    Update the label here with the error message.
                '''

                self.error_msg.setText("Password Wrong")
コード例 #14
0
class Settings(QMainWindow):
    def __init__(self, parent):
        super().__init__(parent)

        self.db = DB()

        self.initUI()

    def initUI(self):

        in_class = "settings"

        self.sidebar = sidebar.Sidebar(self)
        self.sidebar.window.connect(self.getvalue)

        self.addDockWidget(Qt.LeftDockWidgetArea, self.sidebar)

        header = AppName(in_class)
        footer = Footer()

        change_passwordbtn = QPushButton("Change Password")
        change_passwordbtn.setStyleSheet("background-color: rgb(30, 45, 66);\n"
                                         "font: 75 12pt \"MS Shell Dlg 2\";\n"
                                         "color: rgb(255, 255, 255);")
        change_passwordbtn.setFixedWidth(170)
        change_passwordbtn.setFixedHeight(40)
        change_passwordbtn.clicked.connect(self.change_password)

        add_userbtn = QPushButton("Add User")
        add_userbtn.setStyleSheet("background-color: rgb(30, 45, 66);\n"
                                  "font: 75 12pt \"MS Shell Dlg 2\";\n"
                                  "color: rgb(255, 255, 255);")
        add_userbtn.setFixedWidth(170)
        add_userbtn.setFixedHeight(40)
        add_userbtn.clicked.connect(self.add_user)

        edit_restaurant_label = QLabel("Edit Restaurant Information")
        edit_restaurant_label.setStyleSheet(
            "color: rgb(30, 45, 66);\n"
            "font: 75 20pt \"MS Shell Dlg 2\";")

        restaurantlabel = QLabel()
        restaurantlabel.setText("Name")
        restaurantlabel.setGeometry(QRect(80, 100, 47, 13))
        restaurantlabel.setFixedWidth(190)
        restaurantlabel.setFixedHeight(40)
        restaurantlabel.setStyleSheet("color: rgb(30, 45, 66);\n"
                                      'font: 75 18pt "MS Shell Dlg 2";')

        self.restauranttextbox = QLineEdit()
        self.restauranttextbox.setGeometry(QRect(160, 90, 181, 31))
        self.restauranttextbox.setFixedWidth(280)
        self.restauranttextbox.setFixedHeight(40)

        addresslabel = QLabel()
        addresslabel.setText("Job Title")
        addresslabel.setGeometry(QRect(80, 140, 61, 16))
        addresslabel.setFixedWidth(190)
        addresslabel.setFixedHeight(40)
        addresslabel.setStyleSheet("color: rgb(30, 45, 66);\n"
                                   'font: 75 18pt "MS Shell Dlg 2";')

        self.addresstextbox = QLineEdit()
        self.addresstextbox.setGeometry(QRect(160, 130, 181, 31))
        self.addresstextbox.setFixedWidth(280)
        self.addresstextbox.setFixedHeight(40)

        contact = QLabel()
        contact.setText("Salary")
        contact.setGeometry(QRect(80, 180, 47, 13))
        contact.setFixedWidth(190)
        contact.setFixedHeight(40)
        contact.setStyleSheet("color: rgb(30, 45, 66);\n"
                              'font: 75 18pt "MS Shell Dlg 2";')

        self.contacttextbox = QLineEdit()
        self.contacttextbox.setGeometry(QRect(160, 170, 181, 31))
        self.contacttextbox.setFixedWidth(280)
        self.contacttextbox.setFixedHeight(40)
        self.contacttextbox.setValidator(QIntValidator())

        update_btn = QPushButton("Update")
        update_btn.setGeometry(QRect(370, 500, 131, 41))
        update_btn.setStyleSheet("background-color: rgb(30, 45, 66);\n"
                                 "font: 75 12pt \"MS Shell Dlg 2\";\n"
                                 "color: rgb(255, 255, 255);")
        update_btn.setFixedWidth(130)
        update_btn.setFixedHeight(40)
        update_btn.clicked.connect(self.update_data)

        self.load_data()

        hlayout1 = QHBoxLayout()
        hlayout1.addStretch()
        hlayout1.addWidget(change_passwordbtn)
        hlayout1.addWidget(add_userbtn)
        hlayout1.addStretch()

        hlayout2 = QHBoxLayout()
        hlayout2.addStretch()
        hlayout2.addWidget(edit_restaurant_label)
        hlayout2.addStretch()

        hlayout3 = QHBoxLayout()
        hlayout3.addStretch()
        hlayout3.addWidget(restaurantlabel)
        hlayout3.addWidget(self.restauranttextbox)
        hlayout3.addStretch()

        hlayout4 = QHBoxLayout()
        hlayout4.addStretch()
        hlayout4.addWidget(addresslabel)
        hlayout4.addWidget(self.addresstextbox)
        hlayout4.addStretch()

        hlayout5 = QHBoxLayout()
        hlayout5.addStretch()
        hlayout5.addWidget(contact)
        hlayout5.addWidget(self.contacttextbox)
        hlayout5.addStretch()

        hlayout6 = QHBoxLayout()
        hlayout6.addStretch()
        hlayout6.addWidget(update_btn)
        hlayout6.addStretch()

        layout = QVBoxLayout()

        layout.addWidget(header)
        layout.addLayout(hlayout1)
        layout.addStretch()
        layout.addLayout(hlayout2)
        layout.addLayout(hlayout3)
        layout.addLayout(hlayout4)
        layout.addLayout(hlayout5)
        layout.addLayout(hlayout6)
        layout.addStretch()
        layout.addStretch()
        layout.addWidget(footer)

        layout.setContentsMargins(0, 0, 0, 0)

        centralWidget = QWidget()
        centralWidget.setLayout(layout)

        self.setCentralWidget(centralWidget)
        self.setContentsMargins(0, 0, 0, 0)

        self.setWindowTitle("Settings")
        self.resize(1160, 605)

        self.show()
        self.center()

    def center(self):
        '''centers the window on the screen'''
        screen = QDesktopWidget().screenGeometry()
        size = self.geometry()
        self.move((screen.width() - size.width()) / 2,
                  (screen.height() - size.height()) / 2)

    def getvalue(self, value):
        print(value)
        print(type(value))

        if value == 1:
            self.hide()
            view = sidebar.Dashboard(self)
        elif value == 2:
            self.hide()
            view = sidebar.Employee(self)
        elif value == 3:
            self.hide()
            view = sidebar.Table(self)
        elif value == 4:
            self.hide()
            view = sidebar.Reservations(self)
        elif value == 5:
            self.hide()
            view = sidebar.Category(self)
        elif value == 6:
            pass
        elif value == 7:
            self.hide()
            view = sidebar.Orders(self)
        elif value == 8:
            self.hide()
            view = sidebar.Menu(self)

    def change_password(self):
        view = ChangePassword(self)

    def add_user(self):
        print("Add user here")

        view = AddUser(self)
        # view.closing.connect(self.update_setting)

    '''
        Repopulates the employee table with the updated data.
    '''

    def update_setting(self, check):
        print("I am here")
        print(check)

        # data = self.add_update_emp_data()
        #
        # self.populate_table(data)

    def load_data(self):
        print("Got here.")

        query = "SELECT restaurant_name, address, contact FROM rest_info;"
        values = ()

        result = self.db.fetch(query, values)

        for (restaurant_name, address, contact) in result:
            self.restauranttextbox.setText(restaurant_name)
            self.addresstextbox.setText(address)
            self.contacttextbox.setText(contact)

    def update_data(self):
        print("Updated " + self.restauranttextbox.text())
        print("Updated " + self.addresstextbox.text())
        print("Updated " + self.contacttextbox.text())
        '''
            To do..
            Update the restaurant information in the database with the given values. 
        '''
        query = "update rest_info set restaurant_name=%s, address=%s, contact=%s"
        values = (self.restauranttextbox.text(), self.addresstextbox.text(),
                  self.contacttextbox.text())

        result = self.db.execute(query, values)
コード例 #15
0
class Users(QMainWindow):
    def __init__(self, parent):
        super().__init__(parent)

        self.db = DB()

        self.initUI()

    def initUI(self):

        in_class = "users"

        self.sidebar = sidebar.Sidebar(self)
        # self.sidebar.window.connect(self.getvalue)

        self.addDockWidget(Qt.LeftDockWidgetArea, self.sidebar)

        header = AppName(in_class)
        footer = Footer()

        add_and_search = AddSearchFrame(in_class)
        add_and_search.add_button.clicked.connect(
            lambda: self.add_users(in_class))
        add_and_search.search_button.clicked.connect(
            lambda: self.search_users(add_and_search.search_box))

        self.table = QTableWidget()
        self.table.setColumnCount(5)
        # self.table.setStyleSheet("border: none")
        # self.table.setStyleSheet(
        #     "background-color: rgb(255, 255, 255);\n"
        #     'font: 10pt "MS Shell Dlg 2";\n'
        #     "color: rgb(30, 45, 66);"
        # )

        # self.table.setHorizontalHeaderItem(0, QTableWidgetItem("ID"))
        self.table.setHorizontalHeaderItem(0, QTableWidgetItem("Usernmae"))
        self.table.setHorizontalHeaderItem(1, QTableWidgetItem("Password"))
        self.table.setHorizontalHeaderItem(2, QTableWidgetItem("Roles"))
        # self.table.setHorizontalHeaderItem(3, QTableWidgetItem("Bonus"))
        # self.table.setHorizontalHeaderItem(3, QTableWidgetItem("Joining Date"))
        # self.table.setHorizontalHeaderItem(6, QTableWidgetItem("Total Salary"))
        self.table.setHorizontalHeaderItem(3, QTableWidgetItem("Edit"))
        self.table.setHorizontalHeaderItem(4, QTableWidgetItem("Delete"))

        data = self.load_users_data()
        print(data)

        for x in data:
            print(x)

        self.populate_table(data)
        self.table.resizeColumnsToContents()

        layout = QVBoxLayout()

        layout.addWidget(header)
        layout.addWidget(add_and_search)
        layout.addWidget(self.table)
        # layout.addStretch()
        layout.addWidget(footer)

        layout.setContentsMargins(0, 0, 0, 0)
        layout.setSpacing(0)

        centralWidget = QWidget()
        centralWidget.setLayout(layout)

        self.setCentralWidget(centralWidget)
        self.setContentsMargins(0, 0, 0, 0)

        # self.resize(800, 600)
        self.setWindowTitle("Employee")
        self.resize(1160, 605)

        self.show()
        self.center()

    def center(self):
        '''centers the window on the screen'''
        screen = QDesktopWidget().screenGeometry()
        size = self.geometry()
        self.move((screen.width() - size.width()) / 2,
                  (screen.height() - size.height()) / 2)

    def load_users_data(self):
        query = "SELECT id, admin_name, password, roles FROM admin where admin_name != 'admin'"

        result = self.db.fetch(query)

        return result

        # for (name, job_title, salary, bonus, joining_date) in result:
        #     print("=========Start==========")
        #     print("     " + str(name))
        #     print("     " + str(job_title))
        #     print("     " + str(salary))
        #     print("     " + str(bonus))
        #     print("     " + str(joining_date))
        #     print("=========End==========")
        #     print("\n")

    '''
        This function is called after an employee has been added and returns only the last row.
    '''

    def add_update_users_data(self):
        query = "SELECT id, admin_name, password, roles FROM admin where admin_name != 'admin' " \
                "order by id desc limit 1;"

        result = self.db.fetch(query)

        return result

    def edit_users(self):
        emp_row = self.table.indexAt(self.sender().pos())
        print(emp_row.row())

    def delete_users(self):
        emp_row = self.table.indexAt(self.sender().pos())

        # print(emp_row.row())
        # print(emp_row.column())

        # print(self.table.cellWidget(emp_row.row(), emp_row.column()).objectName())

        id = int(
            self.table.cellWidget(emp_row.row(),
                                  emp_row.column()).objectName())
        # print(id)
        # print(emp_row.child(emp_row.row(), emp_row.column()))

        query = "DELETE FROM admin WHERE id=%s"
        values = (id, )

        result = self.db.execute(query, values)

        self.table.clearContents()
        self.table.setRowCount(0)
        data = self.load_users_data()

        self.populate_table(data)

    def add_users(self, where):
        if where == "employees":
            print("Employee Button Clicked from employee")

            view = AddEmployeeDetails(self)
            view.closing.connect(self.update_users)

        elif where == "stocks":
            print("Stock Button Clicked")

    def search_users(self, search_obj):
        search = search_obj.text()
        search_obj.setText("")

        print("Search")
        if search != "":
            query = "SELECT id, admin_name, password, roles FROM admin " \
                    "where admin_name != 'admin' and admin_name like %s"
            values = ("%" + search + "%", )
        else:
            query = "SELECT id, admin_name, password, roles FROM admin " \
                    "where admin_name != 'admin'"
            values = ()

        self.table.clearContents()
        self.table.setRowCount(0)

        data = self.db.fetch(query, values)

        self.populate_table(data)

    '''
        Repopulates the employee table with the updated data.
    '''

    def update_users(self, check):
        print("I am here")
        print(check)

        data = self.add_update_users_data()

        self.populate_table(data)

    '''
        This function populates the employee table with data.
    '''

    def populate_table(self, data):
        for (id, admin_name, password, roles) in data:
            self.table.insertRow(self.table.rowCount())

            self.table.setItem(self.table.rowCount() - 1, 0,
                               QTableWidgetItem(str(admin_name)))
            self.table.setItem(self.table.rowCount() - 1, 1,
                               QTableWidgetItem(str(password)))
            self.table.setItem(self.table.rowCount() - 1, 2,
                               QTableWidgetItem(str(roles)))
            # self.table.setItem(self.table.rowCount() - 1, 3, QTableWidgetItem(str(bonus)))
            # self.table.setItem(self.table.rowCount() - 1, 3, QTableWidgetItem(str(joining_date.strftime("%d-%m-%Y"))))
            edit = QPushButton(self.table)
            edit.setStyleSheet("background-color: rgb(50,205,50);")
            edit.setText("Edit")
            edit.adjustSize()
            edit.clicked.connect(self.edit_users)

            self.table.setCellWidget(self.table.rowCount() - 1, 3, edit)

            delete = QPushButton(self.table)
            delete.setObjectName(str(id))
            delete.setStyleSheet("background-color: #d63447;")
            delete.setText("Delete")
            delete.adjustSize()
            delete.clicked.connect(self.delete_users)
            # delete.mousePressEvent = functools.partial(self.delete_users, source_object=delete)
            self.table.setCellWidget(self.table.rowCount() - 1, 4, delete)
コード例 #16
0
class Menu(QMainWindow):

    def __init__(self, parent):
        super().__init__(parent)

        self.db = DB()

        self.initUI()

    def initUI(self):

        in_class = "menu"

        self.sidebar = sidebar.Sidebar(self)
        self.sidebar.window.connect(self.getvalue)

        self.addDockWidget(Qt.LeftDockWidgetArea, self.sidebar)

        header = AppName(in_class)
        footer = Footer()

        add_and_search = AddSearchFrame(in_class)
        add_and_search.add_button.clicked.connect(lambda: self.add_menu(in_class))
        add_and_search.search_button.clicked.connect(
                                        lambda: self.search_menu(add_and_search.search_box))


        self.table = QTableWidget()
        self.table.setColumnCount(5)
        # self.table.setStyleSheet("border: none")
        # self.table.setStyleSheet(
        #     "background-color: rgb(255, 255, 255);\n"
        #     'font: 10pt "MS Shell Dlg 2";\n'
        #     "color: rgb(30, 45, 66);"
        # )

        # self.table.setHorizontalHeaderItem(0, QTableWidgetItem("ID"))
        self.table.setHorizontalHeaderItem(0, QTableWidgetItem("Food"))
        self.table.setHorizontalHeaderItem(1, QTableWidgetItem("Category"))
        self.table.setHorizontalHeaderItem(2, QTableWidgetItem("Price"))
        # self.table.setHorizontalHeaderItem(3, QTableWidgetItem("Bonus"))
        # self.table.setHorizontalHeaderItem(3, QTableWidgetItem("Joining Date"))
        # self.table.setHorizontalHeaderItem(6, QTableWidgetItem("Total Salary"))
        self.table.setHorizontalHeaderItem(3, QTableWidgetItem("Edit"))
        self.table.setHorizontalHeaderItem(4, QTableWidgetItem("Delete"))


        data = self.load_menu_data()
        print(data)

        for x in data:
            print(x)

        self.populate_table(data)
        self.table.resizeColumnsToContents()

        layout = QVBoxLayout()

        layout.addWidget(header)
        layout.addWidget(add_and_search)
        layout.addWidget(self.table)
        # layout.addStretch()
        layout.addWidget(footer)

        layout.setContentsMargins(0, 0, 0, 0)
        layout.setSpacing(0)

        centralWidget = QWidget()
        centralWidget.setLayout(layout)

        self.setCentralWidget(centralWidget)
        self.setContentsMargins(0, 0, 0, 0)

        # self.resize(800, 600)
        self.setWindowTitle("Employee")
        self.resize(1160, 605)

        self.show()
        self.center()

    def center(self):
        '''centers the window on the screen'''
        screen = QDesktopWidget().screenGeometry()
        size = self.geometry()
        self.move((screen.width() - size.width()) / 2,
                  (screen.height() - size.height()) / 2)

    def getvalue(self, value):
        print(value)
        print(type(value))

        if value == 1:
            self.hide()
            view = sidebar.Dashboard(self)
        elif value == 2:
            self.hide()
            view = sidebar.Employee(self)
        elif value == 3:
            self.hide()
            view = sidebar.Table(self)
        elif value == 4:
            self.hide()
            view = sidebar.Reservations(self)
        elif value == 5:
            pass
        elif value == 6:
            self.hide()
            view = sidebar.Settings(self)
        elif value == 7:
            self.hide()
            view = sidebar.Orders(self)
        elif value == 8:
            self.hide()
            view = sidebar.Menu(self)
        elif value == 9:
            self.hide()
            view = sidebar.Bill(self)

    def load_menu_data(self):
        query = "SELECT food_name, price, category_name FROM menu " \
                "join category on menu.category_id = category.id order by category_name"

        result = self.db.fetch(query)

        return result

    '''
        This function is called after an employee has been added and returns only the last row.
    '''
    def add_update_menu_data(self):
        query = "SELECT food_name, price, category_name FROM menu " \
                "join category on menu.category_id = category.id " \
                "order by id desc limit 1;"

        result = self.db.fetch(query)

        return result

    def edit_menu(self):
        emp_row = self.table.indexAt(self.sender().pos())
        id = self.table.cellWidget(emp_row.row(), emp_row.column()).objectName()
        print(emp_row.row())
        print(id)
        print(type(id))

        '''
            Get the data from the database for that user.
        '''
        data = self.get_data(id)

        print("Data")
        print(data)
        # print(type(data[4]))



        view = AddMenuDetails(self, "update", data[0])

        view.nametextbox.setText(data[0])
        view.pricetextbox.setText(str(data[1]))

        category = self.get_category(data[2])
        view.category_list.setCurrentText(category)

        view.closing.connect(self.editupdate_emp)

    def get_category(self, category):
        query = "SELECT category_name FROM category " \
                "where id=%s"
        values = (category,)

        result = self.db.fetch(query, values)

        for (category) in result:
            category = category[0]

        return category

    def editupdate_emp(self, check):
        print("I am here")
        print(check)

        self.table.clearContents()
        self.table.setRowCount(0)

        data = self.load_menu_data()

        self.populate_table(data)
        self.table.resizeColumnsToContents()
        # self.table.resizeColumnsToContents()

    def get_data(self, id):
        query = "SELECT food_name, price, category_id FROM menu " \
                "where food_name=%s"
        values = (id,)

        result = self.db.fetch(query, values)

        for (food_name, price, category) in result:
            food_name = food_name
            price = price
            category = category

        return [food_name, price, category]

    def delete_menu(self):
        emp_row = self.table.indexAt(self.sender().pos())

        # print(emp_row.row())
        # print(emp_row.column())

        # print(self.table.cellWidget(emp_row.row(), emp_row.column()).objectName())

        id = self.table.cellWidget(emp_row.row(), emp_row.column()).objectName()
        # print(id)
        # print(emp_row.child(emp_row.row(), emp_row.column()))

        query = "DELETE FROM menu WHERE food_name=%s"
        values = (id,)

        result = self.db.execute(query, values)

        self.table.clearContents()
        self.table.setRowCount(0)
        data = self.load_menu_data()

        self.populate_table(data)

    def add_menu(self, where):
        if where == "menu":
            print("Employee Button Clicked from Menu")

            view = AddMenuDetails(self, "add")
            view.closing.connect(self.update_menu)

        elif where == "stocks":
            print("Stock Button Clicked")

    def search_menu(self, search_obj):
        search = search_obj.text()
        search_obj.setText("")

        print("Search")
        if search != "":
            query = "SELECT * FROM menu WHERE food_name like %s"
            values = ("%" + search + "%",)
        else:
            query = "SELECT * FROM menu"
            values = ()

        self.table.clearContents()
        self.table.setRowCount(0)

        data = self.db.fetch(query, values)

        self.populate_table(data)




    '''
        Repopulates the employee table with the updated data.
    '''
    def update_menu(self, check):
        print("I am here")
        print(check)

        self.table.clearContents()
        self.table.setRowCount(0)
        data = self.load_menu_data()

        self.populate_table(data)

    '''
        This function populates the employee table with data.
    '''
    def populate_table(self, data):
        for (food_name, price, category_name) in data:
            self.table.insertRow(self.table.rowCount())

            self.table.setItem(self.table.rowCount() - 1, 0, QTableWidgetItem(str(food_name)))
            self.table.setItem(self.table.rowCount() - 1, 1, QTableWidgetItem(str(category_name)))
            self.table.setItem(self.table.rowCount() - 1, 2, QTableWidgetItem(str(price)))
            # self.table.setItem(self.table.rowCount() - 1, 3, QTableWidgetItem(str(bonus)))
            # self.table.setItem(self.table.rowCount() - 1, 3, QTableWidgetItem(str(joining_date.strftime("%d-%m-%Y"))))
            edit = QPushButton(self.table)
            edit.setObjectName(str(food_name))
            edit.setStyleSheet("background-color: rgb(50,205,50);")
            edit.setText("Edit")
            edit.adjustSize()
            edit.clicked.connect(self.edit_menu)

            self.table.setCellWidget(self.table.rowCount() - 1, 3, edit)

            delete = QPushButton(self.table)
            delete.setObjectName(str(food_name))
            delete.setStyleSheet("background-color: #d63447;")
            delete.setText("Delete")
            delete.adjustSize()
            delete.clicked.connect(self.delete_menu)
            # delete.mousePressEvent = functools.partial(self.delete_menu, source_object=delete)
            self.table.setCellWidget(self.table.rowCount() - 1, 4, delete)
コード例 #17
0
class AddBillDetails(QMainWindow):

    closing = pyqtSignal(int)

    def __init__(self, parent):
        super().__init__(parent)

        self.db = DB()

        self.initUI()

    def initUI(self):

        self.setWindowModality(Qt.ApplicationModal)

        frame = QFrame()
        # frame.setStyleSheet("background-color: rgb(30, 45, 66);")
        frame.setFrameShape(QFrame.StyledPanel)
        frame.setFrameShadow(QFrame.Raised)
        # frame.setMinimumWidth(430)
        # frame.setFixedHeight(395)
        frame.setStyleSheet("border: none")

        add_employee_button = QLabel(frame)
        add_employee_button.setAlignment(Qt.AlignCenter)
        add_employee_button.setGeometry(QRect(110, 30, 210, 41))
        add_employee_button.setStyleSheet(
            "font: 75 12pt \"MS Shell Dlg 2\";\n"
            "background-color: rgb(30, 45, 66);\n"
            "color: rgb(255, 255, 255);")
        add_employee_button.setText("Add Bill Details")

        foodname = QLabel(frame)
        foodname.setText("Food Name")
        foodname.setGeometry(QRect(50, 100, 75, 13))

        self.nametextbox = QLineEdit(frame)
        self.nametextbox.setGeometry(QRect(160, 90, 181, 31))
        self.nametextbox.setFixedWidth(180)

        foodcategory = QLabel(frame)
        foodcategory.setText("Category")
        foodcategory.setGeometry(QRect(50, 140, 61, 16))

        categories = self.get_all_category()

        self.category_list = QComboBox(frame)
        self.category_list.setGeometry(QRect(160, 130, 181, 31))
        self.category_list.setFixedWidth(180)
        self.category_list.addItems(categories)

        pricelabel = QLabel(frame)
        pricelabel.setText("Price")
        pricelabel.setGeometry(QRect(50, 180, 47, 13))

        self.pricetextbox = QLineEdit(frame)
        self.pricetextbox.setGeometry(QRect(160, 170, 181, 31))
        self.pricetextbox.setFixedWidth(180)
        self.pricetextbox.setValidator(QDoubleValidator())

        joindatelabel = QLabel(frame)
        joindatelabel.setText("Start Date")
        joindatelabel.setGeometry(QRect(80, 260, 71, 16))

        self.addbutton = QPushButton(frame)
        self.addbutton.setText("Add Item")
        self.addbutton.setGeometry(QRect(160, 300, 111, 31))
        self.addbutton.setStyleSheet("font: 75 12pt \"MS Shell Dlg 2\";\n"
                                     "background-color: rgb(30, 45, 66);\n"
                                     "color: rgb(255, 255, 255);")
        self.addbutton.clicked.connect(self.add_button_click)

        layout = QVBoxLayout()
        layout.setContentsMargins(0, 0, 0, 0)
        layout.addWidget(frame)

        centralWidget = QWidget()
        centralWidget.setLayout(layout)

        self.setCentralWidget(centralWidget)

        # self.setLayout(layout)

        self.setWindowTitle("Add Employee Details")
        self.resize(430, 395)
        self.show()

        self.center()

    def center(self):
        '''centers the window on the screen'''
        screen = QDesktopWidget().screenGeometry()
        size = self.geometry()
        self.move((screen.width() - size.width()) / 2,
                  (screen.height() - size.height()) / 2)

    def add_button_click(self):
        print("Button Clicked")
        print(self.nametextbox.text())
        print(self.category_list.currentText())
        print(self.pricetextbox.text())

        food_name = self.nametextbox.text()
        price = self.pricetextbox.text()

        query = "select id from category where category_name=%s limit 1"
        values = (self.category_list.currentText(), )

        result = self.db.fetch(query, values)

        for (id) in result:
            category_id = id[0]
        '''
            All set up..
            Now query to add the item in the database.
            Also format the decimal place.
        '''
        query = "insert into menu (food_name, price, category_id)" \
                "values (%s, %s, %s);"
        values = (food_name, price, category_id)

        result = self.db.execute(query, values)

        self.closeEvent = self.message()

    def message(self):
        self.closing.emit(1)
        self.close()
コード例 #18
0
class Reservations(QMainWindow):
    def __init__(self, parent):
        super().__init__(parent)

        self.db = DB()

        self.initUI()

    def initUI(self):
        in_class = "reservations"

        self.sidebar = sidebar.Sidebar(self)
        self.sidebar.window.connect(self.getvalue)

        self.addDockWidget(Qt.LeftDockWidgetArea, self.sidebar)

        header = AppName(in_class)
        footer = Footer()

        add_and_search = AddSearchFrame(in_class)
        add_and_search.add_button.clicked.connect(
            lambda: self.add_reservation(in_class))
        add_and_search.search_button.clicked.connect(
            lambda: self.search_reservation(add_and_search.search_box))

        self.table = QTableWidget()
        self.table.setColumnCount(6)
        # self.table.setStyleSheet("border: none")
        # self.table.setStyleSheet(
        #     "background-color: rgb(255, 255, 255);\n"
        #     'font: 10pt "MS Shell Dlg 2";\n'
        #     "color: rgb(30, 45, 66);"
        # )

        # self.table.setHorizontalHeaderItem(0, QTableWidgetItem("ID"))
        self.table.setHorizontalHeaderItem(0,
                                           QTableWidgetItem("Customer Name"))
        self.table.setHorizontalHeaderItem(1, QTableWidgetItem("Phone No."))
        self.table.setHorizontalHeaderItem(2, QTableWidgetItem("Date"))
        # self.table.setHorizontalHeaderItem(3, QTableWidgetItem("Bonus"))
        self.table.setHorizontalHeaderItem(3, QTableWidgetItem("Time"))
        # self.table.setHorizontalHeaderItem(6, QTableWidgetItem("Total Salary"))
        self.table.setHorizontalHeaderItem(4, QTableWidgetItem("Edit"))
        self.table.setHorizontalHeaderItem(5, QTableWidgetItem("Delete"))

        data = self.load_reservation_data()
        print(data)

        for x in data:
            print(x)

        self.populate_table(data)

        layout = QVBoxLayout()

        layout.addWidget(header)
        layout.addWidget(add_and_search)
        layout.addWidget(self.table)
        # layout.addStretch()
        layout.addWidget(footer)

        layout.setContentsMargins(0, 0, 0, 0)
        layout.setSpacing(0)

        centralWidget = QWidget()
        centralWidget.setLayout(layout)

        self.setCentralWidget(centralWidget)
        self.setContentsMargins(0, 0, 0, 0)

        # self.resize(800, 600)
        self.setWindowTitle("Login")
        self.resize(1160, 605)

        self.show()
        self.center()

    def center(self):
        '''centers the window on the screen'''
        screen = QDesktopWidget().screenGeometry()
        size = self.geometry()
        self.move((screen.width() - size.width()) / 2,
                  (screen.height() - size.height()) / 2)

    def getvalue(self, value):
        print(value)
        print(type(value))

        if value == 1:
            self.hide()
            view = sidebar.Dashboard(self)
        elif value == 2:
            self.hide()
            view = sidebar.Employee(self)
        elif value == 3:
            self.hide()
            view = sidebar.Table(self)
        elif value == 4:
            pass
        elif value == 5:
            self.hide()
            view = sidebar.Category(self)
        elif value == 6:
            self.hide()
            view = sidebar.Settings(self)
        elif value == 7:
            self.hide()
            view = sidebar.Orders(self)
        elif value == 8:
            self.hide()
            view = sidebar.Menu(self)
        elif value == 9:
            self.hide()
            view = sidebar.Bill(self)

    def load_reservation_data(self):
        query = "select id, customer_name, phone_number, date(booking_date) as date, " \
                "time_format(time(booking_date), '%H:%i') as time from customerBooking;"

        result = self.db.fetch(query)

        return result

    '''
        This function is called after an employee has been added and returns only the last row.
    '''

    def add_update_reservation_data(self):
        query = "select id, customer_name, phone_number, date(booking_date) as date, " \
                "time_format(time(booking_date), '%H:%i') as time from customerBooking " \
                "order by id desc limit 1;"

        result = self.db.fetch(query)

        return result

    def edit_reservation(self):
        emp_row = self.table.indexAt(self.sender().pos())
        id = int(
            self.table.cellWidget(emp_row.row(),
                                  emp_row.column()).objectName())
        print(emp_row.row())
        print(id)
        print(type(id))
        '''
            Get the data from the database for that user.
        '''
        data = self.get_data(id)

        print("Data")
        print(data)
        # print(type(data[4]))

        view = AddBookingDetails(self, "update", data[0])

        view.customernametextbox.setText(data[1])
        view.customercontacttextbox.setText(str(data[2]))
        view.datetextbox.setDate(QDate.fromString(data[3], "dd-MM-yyyy"))
        # view.starttimetextbox.setTime(QTime.fromString(data[4]), "hh:mm")

        view.closing.connect(self.editupdate_emp)

    def editupdate_emp(self):
        self.table.clearContents()
        self.table.setRowCount(0)

        data = self.load_reservation_data()

        self.populate_table(data)

    def get_data(self, id):
        query = "select id, customer_name, phone_number, date(booking_date) as date, " \
                "time_format(time(booking_date), '%H:%i') as time FROM customerBooking " \
                "where id=%s"
        values = (id, )

        result = self.db.fetch(query, values)

        for (id, customer_name, phone_number, date, time) in result:
            id = id
            customer_name = customer_name
            phone_number = phone_number
            date = date
            time = time

        return [
            id, customer_name, phone_number,
            str(date.strftime("%d-%m-%Y"))
        ]

    def delete_reservation(self):
        emp_row = self.table.indexAt(self.sender().pos())

        id = int(
            self.table.cellWidget(emp_row.row(),
                                  emp_row.column()).objectName())

        query = "DELETE FROM customerBooking WHERE id=%s"
        values = (id, )

        result = self.db.execute(query, values)

        self.table.clearContents()
        self.table.setRowCount(0)
        data = self.load_reservation_data()

        self.populate_table(data)

    def add_reservation(self, where):
        if where == "reservations":
            print("Employee Button Clicked from employee")

            view = AddBookingDetails(self, "add")
            view.closing.connect(self.update_reservation)

        elif where == "stocks":
            print("Stock Button Clicked")

    def search_reservation(self, search_obj):
        search = search_obj.text()
        search_obj.setText("")

        print("Search")
        if search != "":
            query = "select id, customer_name, phone_number, date(booking_date) as date, " \
                    "time_format(time(booking_date), '%H:%i') as time FROM customerBooking " \
                    "WHERE customer_name like %s"
            values = ("%" + search + "%", )
        else:
            query = "select id, customer_name, phone_number, date(booking_date) as date, " \
                    "time_format(time(booking_date), '%H:%i') as time FROM customerBooking"
            values = ()

        self.table.clearContents()
        self.table.setRowCount(0)

        data = self.db.fetch(query, values)

        self.populate_table(data)

    '''
        Repopulates the employee table with the updated data.
    '''

    def update_reservation(self, check):
        print("I am here")
        print(check)

        data = self.add_update_reservation_data()

        self.populate_table(data)

    '''
        This function populates the employee table with data.
    '''

    def populate_table(self, data):
        for (id, employee_name, job_title, salary, joining_date) in data:
            self.table.insertRow(self.table.rowCount())

            self.table.setItem(self.table.rowCount() - 1, 0,
                               QTableWidgetItem(str(employee_name)))
            self.table.setItem(self.table.rowCount() - 1, 1,
                               QTableWidgetItem(str(job_title)))
            self.table.setItem(
                self.table.rowCount() - 1, 2,
                QTableWidgetItem(str(salary.strftime("%d-%m-%Y"))))
            # self.table.setItem(self.table.rowCount() - 1, 3, QTableWidgetItem(str(bonus)))
            self.table.setItem(self.table.rowCount() - 1, 3,
                               QTableWidgetItem(str(joining_date)))

            edit = QPushButton(self.table)
            edit.setObjectName(str(id))
            edit.setStyleSheet("background-color: rgb(50,205,50);")
            edit.setText("Edit")
            edit.adjustSize()
            edit.clicked.connect(self.edit_reservation)

            self.table.setCellWidget(self.table.rowCount() - 1, 4, edit)

            delete = QPushButton(self.table)
            delete.setObjectName(str(id))
            delete.setStyleSheet("background-color: #d63447;")
            delete.setText("Delete")
            delete.adjustSize()
            delete.clicked.connect(self.delete_reservation)
            # delete.mousePressEvent = functools.partial(self.delete_emp, source_object=delete)
            self.table.setCellWidget(self.table.rowCount() - 1, 5, delete)