示例#1
0
    def __init__(self, pView, pModel):
        
        self.view = pView
        self.model = pModel 

        # Data gathering
        self.categories = self.model.query(I.GET_CATEGORIES)
        

        # Loads initial data
        for category in self.categories:
            self.view.ui.Search_CategoryInput.addItem(category[1])

        self.view.ui.Search_CategoryInput.addItem('ANY')
        self.view.ui.Search_CategoryInput.setCurrentIndex(len(self.categories))

        self.view.ui.Search_PriceInput.addItem('50')
        self.view.ui.Search_PriceInput.addItem('100')
        self.view.ui.Search_PriceInput.addItem('200')
        self.view.ui.Search_PriceInput.addItem('300')
        self.view.ui.Search_PriceInput.addItem('500')
        self.view.ui.Search_PriceInput.addItem('1000')
        self.view.ui.Search_PriceInput.addItem('ANY')
        self.view.ui.Search_PriceInput.setCurrentIndex(6)

        #self.view.ui.Search_TableProductInputsetEditTriggers(QtWidgets.QAbstractItemView.NoEditTriggers)
        self.view.ui.Search_TableProductInput.setColumnCount(4)
        self.view.ui.Search_TableProductInput.cellDoubleClicked.connect(self.selectProduct)
        
        #self.view.ui.Search_TableProductInput.viewport().installEventFilter(self.view)
        self.view.ui.Search_SearchButton.clicked.connect(self.searchProduct)
        
        self.productviewController = ProductviewController(self.view, self.model)
示例#2
0
    def __init__(self, pView, pModel):

        self.view = pView
        self.model = pModel

        self.view.ui.RecentlySeen_ShowButton.setText("Refresh")
        self.view.ui.RecentlySeen_ShowButton.clicked.connect(self.refreshSeen)
        self.view.ui.RecentlySeen_TableDisplay.setColumnCount(4)
        self.view.ui.RecentlySeen_TableDisplay.setHorizontalHeaderLabels(['ID', 'Product', 'Price', 'Category'])
        self.view.ui.RecentlySeen_TableDisplay.cellDoubleClicked.connect(self.selectProduct)
        self.productviewController = ProductviewController(self.view, self.model)
示例#3
0
class SeenController:

    #    Connects the login view to the model.
    def __init__(self, pView, pModel):

        self.view = pView
        self.model = pModel

        self.view.ui.RecentlySeen_ShowButton.setText("Refresh")
        self.view.ui.RecentlySeen_ShowButton.clicked.connect(self.refreshSeen)
        self.view.ui.RecentlySeen_TableDisplay.setColumnCount(4)
        self.view.ui.RecentlySeen_TableDisplay.setHorizontalHeaderLabels(['ID', 'Product', 'Price', 'Category'])
        self.view.ui.RecentlySeen_TableDisplay.cellDoubleClicked.connect(self.selectProduct)
        self.productviewController = ProductviewController(self.view, self.model)

    #   GETS SEEN INFORMATION OF USER
    def refreshSeen(self):
        self.view.ui.RecentlySeen_TableDisplay.clearContents()

        try:
            self.products = self.model.query(I.GET_SEEN, (self.model.connectedUser.id,))

            if self.products == []:
                print('No products seen')
            else:
                self.view.ui.RecentlySeen_TableDisplay.setRowCount(len(self.products))            
            
            for i in range(len(self.products)):
                for j in range(4):
                    item = QtWidgets.QTableWidgetItem(str(self.products[i][j]))
                    item.setFlags( Qt.ItemIsSelectable |  Qt.ItemIsEnabled )
                    self.view.ui.RecentlySeen_TableDisplay.setItem(i,j,item)
            
        except Exception as err:

            msg = QtWidgets.QMessageBox()
            msg.setWindowTitle('ERROR')
            msg.setText(str(err))
            msg.setIcon(QtWidgets.QMessageBox.Critical)

            msg.exec_()

    def selectProduct(self, row, column):
        #print("SELECTED PRODUCT ID " + self.view.ui.Wishlist_WishlistTableInput.item(row, 0).text())
        try:
            self.productviewController.setProduct(int(self.view.ui.RecentlySeen_TableDisplay.item(row, 0).text()))
            self.view.showProduct()
        except Exception as err:
            msg = QtWidgets.QMessageBox()
            msg.setWindowTitle('ERROR')
            msg.setText(str(err))
            msg.setIcon(QtWidgets.QMessageBox.Critical)
            msg.exec_()
示例#4
0
    def __init__(self, pView, pModel):

        self.view = pView
        self.model = pModel

        self.view.ui.Wishlist_ShowButton.setText("Refresh")
        self.view.ui.Wishlist_ShowButton.clicked.connect(self.refreshWishlist)
        self.view.ui.Wishlist_WishlistTableInput.setColumnCount(4)
        self.view.ui.Wishlist_WishlistTableInput.setHorizontalHeaderLabels(
            ['ID', 'Product', 'Price', 'Category'])
        self.view.ui.Wishlist_WishlistTableInput.cellDoubleClicked.connect(
            self.selectProduct)
        self.productviewController = ProductviewController(
            self.view, self.model)
示例#5
0
    def __init__(self, pView, pModel):

        self.view = pView
        self.model = pModel

        self.view.ui.Cart_ShowCartButton.setText("Refresh")
        self.view.ui.Cart_ShowCartButton.clicked.connect(self.refreshCart)
        self.view.ui.Cart_RemoveButton.clicked.connect(self.removeProduct)
        self.view.ui.Cart_CartTableInput.setColumnCount(4)
        self.view.ui.Cart_CartTableInput.setHorizontalHeaderLabels(['ID', 'Product', 'Price', 'Category'])
        self.view.ui.Cart_CartTableInput.cellDoubleClicked.connect(self.selectProduct)
        #self.view.ui.Cart_CartTableInput.cellClicked.connect(partial(self.selectItem, item))
        self.productviewController = ProductviewController(self.view, self.model)
        self.view.ui.Cart_BuyButton.clicked.connect(self.buyProducts)
示例#6
0
class SearchController:
    '''
        Connects the login view to the model.
    '''
    def __init__(self, pView, pModel):
        
        self.view = pView
        self.model = pModel 

        # Data gathering
        self.categories = self.model.query(I.GET_CATEGORIES)
        

        # Loads initial data
        for category in self.categories:
            self.view.ui.Search_CategoryInput.addItem(category[1])

        self.view.ui.Search_CategoryInput.addItem('ANY')
        self.view.ui.Search_CategoryInput.setCurrentIndex(len(self.categories))

        self.view.ui.Search_PriceInput.addItem('50')
        self.view.ui.Search_PriceInput.addItem('100')
        self.view.ui.Search_PriceInput.addItem('200')
        self.view.ui.Search_PriceInput.addItem('300')
        self.view.ui.Search_PriceInput.addItem('500')
        self.view.ui.Search_PriceInput.addItem('1000')
        self.view.ui.Search_PriceInput.addItem('ANY')
        self.view.ui.Search_PriceInput.setCurrentIndex(6)

        #self.view.ui.Search_TableProductInputsetEditTriggers(QtWidgets.QAbstractItemView.NoEditTriggers)
        self.view.ui.Search_TableProductInput.setColumnCount(4)
        self.view.ui.Search_TableProductInput.cellDoubleClicked.connect(self.selectProduct)
        
        #self.view.ui.Search_TableProductInput.viewport().installEventFilter(self.view)
        self.view.ui.Search_SearchButton.clicked.connect(self.searchProduct)
        
        self.productviewController = ProductviewController(self.view, self.model)

    def searchProduct(self):
        self.view.ui.Search_TableProductInput.clear()
        self.view.ui.Search_TableProductInput.setHorizontalHeaderLabels(['ID', 'Product', 'Price', 'Category'])
        try:
            # GET PARAMETERS FROM INPUT
            category = str(self.view.ui.Search_CategoryInput.currentText())
            if category == 'ANY':
                category = None

            price = self.view.ui.Search_PriceInput.currentText()
            if price == 'ANY':
                price = 1000000

            keyword = self.view.ui.Search_ProducNametInput.text().strip()

            # EXECUTES SEARCH PRODUCT QUERY
            products = self.model.query(I.PRODUCT_SEARCH, (keyword, category, int(price)))

            if products == []:
                print('No products match the search parameters!')
            else:
                self.view.ui.Search_TableProductInput.setRowCount(len(products))
                
                #item = QtWidgets.QTableWidgetItem("e")
                
                for i in range(len(products)):
                    for j in range(4):
                        item = QtWidgets.QTableWidgetItem(str(products[i][j]))
                        item.setFlags( Qt.ItemIsSelectable |  Qt.ItemIsEnabled )
                        self.view.ui.Search_TableProductInput.setItem(i,j,item)
            
        except Exception as err:

            msg = QtWidgets.QMessageBox()
            msg.setWindowTitle('ERROR')
            msg.setText(str(err))
            msg.setIcon(QtWidgets.QMessageBox.Critical)

            msg.exec_()

    def selectProduct(self, row, column):
        #print("SELECTED PRODUCT ID " + self.view.ui.Search_TableProductInput.item(row, 0).text())
        
        self.productviewController.setProduct(int(self.view.ui.Search_TableProductInput.item(row, 0).text()))
        self.view.showProduct()
示例#7
0
class CartController:

    #    Connects the login view to the model.
    def __init__(self, pView, pModel):

        self.view = pView
        self.model = pModel

        self.view.ui.Cart_ShowCartButton.setText("Refresh")
        self.view.ui.Cart_ShowCartButton.clicked.connect(self.refreshCart)
        self.view.ui.Cart_RemoveButton.clicked.connect(self.removeProduct)
        self.view.ui.Cart_CartTableInput.setColumnCount(4)
        self.view.ui.Cart_CartTableInput.setHorizontalHeaderLabels(['ID', 'Product', 'Price', 'Category'])
        self.view.ui.Cart_CartTableInput.cellDoubleClicked.connect(self.selectProduct)
        #self.view.ui.Cart_CartTableInput.cellClicked.connect(partial(self.selectItem, item))
        self.productviewController = ProductviewController(self.view, self.model)
        self.view.ui.Cart_BuyButton.clicked.connect(self.buyProducts)

        

        #   GETS AND DISPLAYS THE CART INFORMATION
    def refreshCart(self):
        self.view.ui.Cart_CartTableInput.clearContents()

        try:
            self.products = self.model.query(I.GET_CART, (self.model.connectedUser.id,))

            if self.products == []:
                print('No products on cart')
            else:
                self.view.ui.Cart_CartTableInput.setRowCount(len(self.products))            
            
            for i in range(len(self.products)):
                for j in range(4):
                    item = QtWidgets.QTableWidgetItem(str(self.products[i][j]))
                    item.setFlags( Qt.ItemIsSelectable |  Qt.ItemIsEnabled )
                    self.view.ui.Cart_CartTableInput.setItem(i,j,item)

        except Exception as err:

            msg = QtWidgets.QMessageBox()
            msg.setWindowTitle('ERROR')
            msg.setText(str(err))
            msg.setIcon(QtWidgets.QMessageBox.Critical)

            msg.exec_()

    def selectProduct(self, row, column):
        #print("SELECTED PRODUCT ID " + self.view.ui.Wishlist_WishlistTableInput.item(row, 0))
        try:
            self.productviewController.setProduct(int(self.view.ui.Cart_CartTableInput.item(row, 0).text()))
            self.view.showProduct()
        except Exception as err:
            msg = QtWidgets.QMessageBox()
            msg.setWindowTitle('ERROR')
            msg.setText(str(err))
            msg.setIcon(QtWidgets.QMessageBox.Critical)
            msg.exec_()

    #def selectItem(self, item):
    #    print("SELECTED ROW: " + item.row())
        

    def removeProduct(self):
        #print(self.view.ui.Cart_CartTableInput.selectedItems()[0].text())

        row = self.view.ui.Cart_CartTableInput.selectedItems()[0].row()

        productID = int(self.view.ui.Cart_CartTableInput.item(row, 0).text())
        userID = self.model.connectedUser.id
        try:
            self.model.query(I.REMOVE_CART, (productID,userID))
            self.model.commit()
            self.refreshCart()
            
        except Exception as err:
            msg = QtWidgets.QMessageBox()
            msg.setWindowTitle('ERROR')
            msg.setText(str(err))
            msg.setIcon(QtWidgets.QMessageBox.Critical)
            msg.exec_()

    def buyProducts(self):
        for i in range(self.view.ui.Cart_CartTableInput.rowCount()):
            try:
                productID = int(self.view.ui.Cart_CartTableInput.item(i, 0).text())
                if productID != "":
                    self.model.query(I.PURCHASE_PRODUCTS, (productID, self.model.connectedUser.id))
                    self.model.query(I.REMOVE_CART, (productID, self.model.connectedUser.id))
                    self.model.commit()
            except Exception as err:
                msg = QtWidgets.QMessageBox()
                msg.setWindowTitle('ERROR')
                msg.setText(str(err))
                msg.setIcon(QtWidgets.QMessageBox.Critical)
                msg.exec_()
                
        self.refreshCart()
        msg = QtWidgets.QMessageBox()
        msg = QtWidgets.QMessageBox()
        msg.setWindowTitle("Success")
        msg.setText("Products purchased successfully")
        msg.exec_()