Example #1
0
class StudentSearch:
    def __init__(self, root):
        self.frame = Frame(root)
        self.frame.grid(row=0, column=0, sticky='nsew')
        self.nameLabel = Label(self.frame, text='Name', fg="black")
        self.nameEntry = Entry(self.frame, borderwidth=0)
        self.rollLabel = Label(self.frame, text='Roll No', fg="black")
        self.rollEntry = Entry(self.frame, borderwidth=0)

        self.searchButton = Button(self.frame,
                                   text='Search',
                                   command=lambda: self.search(root))
        self.searchResults = ScrollableFrame(self.frame)

        self.nameLabel.grid(row=2, column=0, padx=5, pady=3)
        self.nameEntry.grid(row=2, column=1)
        self.rollLabel.grid(row=3, column=0, padx=5, pady=3)
        self.rollEntry.grid(row=3, column=1)

        self.exitButton = Button(self.frame, text="Exit", command=exit)
        self.backButton = Button(self.frame,
                                 text="Back",
                                 command=lambda: self.back(root))

        self.searchButton.grid(row=4, column=0, columnspan=2, pady=20)
        self.searchResults.grid(row=5,
                                column=0,
                                padx=30,
                                sticky="nsew",
                                columnspan=2)

        self.exitButton.grid(row=8, column=0, padx=50, pady=50, sticky=S + W)
        self.backButton.grid(row=8, column=1, padx=50, pady=50, sticky=S + E)

        self.frame.rowconfigure(8, weight=1)
        self.frame.columnconfigure(0, weight=1)
        self.frame.columnconfigure(1, weight=1)

        root.mainloop()

    def bindingAction(self, event):
        pass

    def display(self, root, list_):
        self.searchResults.destroy()
        self.searchResults = ScrollableFrame(self.frame)
        self.searchResults.grid(row=5,
                                column=0,
                                padx=30,
                                sticky="nsew",
                                columnspan=2)
        self.searchResults.frame.columnconfigure(1, weight=1)

        for i in range(len(list_)):
            studentSerial = Label(self.searchResults.frame,
                                  anchor=W,
                                  text=i + 1)
            studentRollAndName = Label(self.searchResults.frame,
                                       anchor=W,
                                       text=list_[i][0] + '    ' + list_[i][1])
            studentSerial.grid(row=i, column=0, sticky=W + E, padx=5)
            studentRollAndName.grid(row=i, column=1, sticky=W + E)
            studentRollAndName.bind('<Button-1>', self.bindingAction)

    def back(self, root):
        pass

    def search(self, root):
        connect_, cursor_ = ES.get_student_db_ES()
        name_ = self.nameEntry.get()
        roll_no_ = self.rollEntry.get()
        if name_ == "" and roll_no_ == "":
            cursor_.execute("SELECT * FROM student")
        elif roll_no_ == "":
            cursor_.execute(
                "SELECT * FROM student WHERE student_name LIKE (:name)",
                {'name': '%' + name_ + '%'})
        elif name_ == "":
            cursor_.execute("SELECT * FROM student WHERE roll LIKE (:roll)",
                            {'roll': '%' + roll_no_ + '%'})
        else:
            cursor_.execute(
                "SELECT * FROM student WHERE student_name LIKE (:name) AND roll LIKE (:roll)",
                {
                    'name': '%' + name_ + '%',
                    'roll': '%' + roll_no_ + '%'
                })
        self.display(root, cursor_.fetchall())

    def clear(self):
        self.frame.destroy()
Example #2
0
class DepartmentInventory:
    def __init__(self,root):
        root.title("Department Inventory")
        root.geometry('800x600')
        root.minsize(800, 600)
        root.maxsize(800, 600)
        self.frame=Frame(root)
        self.frame.grid(row=0, column=0, sticky='nsew')
        self.itemnameLabel=Label(self.frame,text="Item Name: ",anchor=E)
        self.itemnameEntry=Entry(self.frame,borderwidth=0,width=27)
        self.itemtypeLabel=Label(self.frame,text="Type: ",anchor=E)

        self.combostyle=ttk.Style()
        self.combostyle.map('TCombobox', fieldbackground=[('readonly', 'white')])
        self.combostyle.map('TCombobox', selectbackground=[('readonly', 'white')])
        # self.combostyle.

        self.var=StringVar(self.frame)
        self.var.set("All")
        self.typeDropdown = ttk.Combobox(self.frame,foreground="black",width=27,takefocus=False,textvariable=self.var,state='readonly')
        self.typeDropdown['value']=('All',
                                        'Miscellaneous',
                                        'Computers',
                                        'Furniture',
                                        'Stationery')
        self.typeDropdown.bind("<FocusIn>", dropdown_defocus)

        self.submitButton=Button(self.frame,text='Search',command=lambda:self.search())
        self.addButton=Button(self.frame,text='Purchase New Item',command=lambda:self.add(root))
        self.displayFrame=ScrollableFrame(self.frame)

        self.backButton=Button(self.frame,text="Back",command=lambda: self.back(root))
        self.exitButton=Button(self.frame,text="Exit",command=exit)

        self.itemnameLabel.grid(row=0,column=0,sticky=E+W,pady=10,padx=10)
        self.itemnameEntry.grid(row=0,column=1,sticky=W,pady=10)
        self.itemtypeLabel.grid(row=1,column=0,sticky=E+W,pady=10,padx=10)
        self.typeDropdown.grid(row=1,column=1,sticky=W,pady=10)
        self.submitButton.grid(row=2,column=0,sticky=E,pady=10,padx=10)
        self.addButton.grid(row=2,column=1,sticky=W,pady=10,padx=10)
        self.displayFrame.grid(row=3,column=0,columnspan=2,sticky="nsew",padx=10,pady=10)
        self.exitButton.grid(row=4,column=0,columnspan=2,sticky=W,padx=50,pady=20)
        self.backButton.grid(row=4,column=1,columnspan=2,sticky=E,padx=50,pady=20)

        for i in range(2):
            self.frame.columnconfigure(i,weight=1)
        self.frame.rowconfigure(3,weight=1)

    def display(self,list_):
        self.displayFrame.destroy()
        self.displayFrame=ScrollableFrame(self.frame)
        self.displayFrame.grid(row=3,column=0,columnspan=2,sticky="nsew",padx=10,pady=10)
        # print(list_)
        Label(self.displayFrame.frame,text='Sl. no.',relief=GROOVE).grid(row=0,column=0,sticky=E+W,padx=2)
        Label(self.displayFrame.frame,text='Item Name',relief=GROOVE).grid(row=0,column=1,sticky=E+W,padx=2)
        Label(self.displayFrame.frame,text='Location',relief=GROOVE).grid(row=0,column=2,sticky=E+W,padx=2)
        Label(self.displayFrame.frame,text='Quanitity',relief=GROOVE).grid(row=0,column=3,sticky=E+W,padx=2)
        Label(self.displayFrame.frame,text='Type',relief=GROOVE).grid(row=0,column=4,sticky=E+W,padx=2)

        for i in range(len(list_)):
            itemSerial = Label(self.displayFrame.frame, anchor=W, text=i+1)
            itemName = Label(self.displayFrame.frame,wraplength=400, anchor=W, text=list_[i][0])
            itemLocation = Label(self.displayFrame.frame, anchor=W, text=list_[i][1])
            itemQuantity= Label(self.displayFrame.frame, anchor=W, text=list_[i][2])
            itemType= Label(self.displayFrame.frame, anchor=W, text=list_[i][3])
            
            itemSerial.grid(row=i+1, column=0, sticky=W+E,padx=2,pady=1)
            itemName.grid(row=i+1, column=1, sticky=W+E,padx=2,pady=1)
            itemLocation.grid(row=i+1,column=2,sticky=W+E,padx=2,pady=1)
            itemQuantity.grid(row=i+1,column=3,sticky=W+E,padx=2,pady=1)
            itemType.grid(row=i+1,column=4,sticky=W+E,padx=2,pady=1)
            # studentRollAndName.bind('<Button-1>', self.bindingAction)   
        self.displayFrame.frame.columnconfigure(1,weight=1)  
    
    @staticmethod
    def getInventory(name_,type_):
        connect_, cursor_ = ES.get_student_db_ES()
        if name_ == "" and type_ == "All":
            cursor_.execute("SELECT * FROM inventory")
        elif name_ != "" and type_=="All":
            cursor_.execute("SELECT * FROM inventory WHERE item_name LIKE (:name)",{'name':'%'+name_+'%'})
        elif name_ == "" and type_!="All":
            cursor_.execute("SELECT * FROM inventory WHERE type LIKE (:type)", {'type':'%'+type_+'%'})
        else:
            cursor_.execute("SELECT * FROM inventory WHERE item_name LIKE (:name) AND type LIKE (:type)", {'name':'%'+name_+'%', 'type':'%'+type_+'%'})

        return cursor_.fetchall()

    def search(self):
        
        name_ = self.itemnameEntry.get()
        type_ = self.typeDropdown.get()
    
        self.display(DepartmentInventory.getInventory(name_,type_))

    def add(self,root):
        self.clear()
        DepartmentPurchase.DepartmentPurchase(root)

    def back(self,root):
        self.clear()
        DepartmentUDIS.DepartmentMainMenu(root)

    @staticmethod
    def test():
        print("\nTesting the Department Purchase class")
        success = 0
        fail = 0
        print("\ta. Blank name and type all:")
        
        list_=[('Pens', 'Academic Section', 100, 'Stationery', 500), ('Computer Table', 'Software Lab', 10, 'Furniture', 100)]
        if DepartmentInventory.getInventory('','All')==list_:
            print("\tPASS")
            success=success+1
        else:
            print("\tFAIL\n")
            fail=fail+1
        
        print("\tb. Specific name and type all:")
        list_=[('Pens', 'Academic Section', 100, 'Stationery', 500)]
        if DepartmentInventory.getInventory('Pens','All')==list_:
            print("\tPASS")
            success=success+1
        else:
            print("\tFAIL\n")
            fail=fail+1
        
        print("\tc. No name and type specific:")
        list_=[('Pens', 'Academic Section', 100, 'Stationery', 500)]
        if DepartmentInventory.getInventory('','Stationery')==list_:
            print("\tPASS")
            success=success+1
        else:
            print("\tFAIL\n")
            fail=fail+1

        print("\td. Name specific and type specific:")
        list_=[('Computer Table', 'Software Lab', 10, 'Furniture', 100)]
        if DepartmentInventory.getInventory('comp','Furniture')==list_:
            print("\tPASS")
            success=success+1
        else:
            print("\tFAIL\n")
            fail=fail+1
        
        print(f'Test cases passed {success}/{success+fail}')
        print(f'Percentage = {(success/(success+fail))*100}')

    def clear(self):
        self.frame.destroy()