def updateUserToolsList(self): self.listOfUserToolsWidget.delete(0, tk.END) self.listOfUserTools.clear() self.listOfUserTools = ToolController().findAllToolsHiredByUser( self.loggedUser) self.chargeLabel.config( text=UserController().getUserCurrentCharge(self.loggedUser)) for tool in self.listOfUserTools: self.listOfUserToolsWidget.insert(tk.END, tool)
def __init__(self, name, owner, priceDay, priceHalf): self.id = None self.name = name self.priceDay = priceDay self.priceHalf = priceHalf self.owner = owner self.description = None self.toolController = ToolController() self.calendarController = CalendarController() self.userController = UserController()
def returnButtonClick(self): tool = ToolController().findTool(self.selectedTool) desc = self.descriptionEntry.get() if (self.conditionChecker()): tool.setDescription(desc) result = tool.giveBack(datetime.today().date(), self.loggedUser) message = "EXTRA DAYS: {0}\nEXTRA BILL ADDED: {1}\nDRIVER HIRED: {2}".format( result[0], result[1], self.var.get()) ImageController().savePhotoOfTool(self.filename, self.selectedTool) if (messagebox.showinfo("Bill for " + self.loggedUser, message)): self.destroy() self.owner.updateUserToolsList() else: messagebox.showinfo( "ERROR", "YOU MUST:\n-DESCRIBE CURRENT CONDITION\n-AND ADD THE CURRENT PHOTO" )
def bookButtonClick(self): values = [self.listOfDatesWidget.get(idx) for idx in self.listOfDatesWidget.curselection() if self.listOfDatesWidget.get(idx).split('_')[1]=="FREE"] toolTmp=ToolController().findTool(self.selectedTool) price=0 if (values.__len__() > 3): messagebox.showinfo("TO MANY DAYS", "YOU CAN ONLY PICK 3 DAYS AT THE SAME TIME") else: if(self.bookType.get()): typeOfBooking="HALF" else: typeOfBooking="DAY" for value in values: date = value.split('_')[0] price=price+toolTmp.book(datetime.strptime(date,"%Y-%m-%d").date(),self.loggedUser,1,typeOfBooking) UserController().addChargeForUser(self.INSURANCE,self.loggedUser) messageWindow=MessageWindow(self.loggedUser,price,self.var,self,self.INSURANCE) self.withdraw() messageWindow.wait_window() self.destroy() self.owner.updateUserToolsList()
def currentSelectionAllTools(self, evt): value = self.listOfAllToolsWidget.get( self.listOfAllToolsWidget.curselection()) result = value.split("_") toolName = result[0] self.selectedTool = toolName tool = ToolController().findTool(toolName) self.descriptionLabel.config(text=tool.description) self.priceDayLabel.config(text=str(tool.priceDay)) self.priceHalfLabel.config(text=str(tool.priceHalf)) try: imageTmp = ImageController().getPhotoOfTool(self.selectedTool) self.photoLabel.config(image=imageTmp) self.photoLabel.image = imageTmp except: self.photoLabel.config(image=self.tmpPhoto) self.photoLabel.image = self.tmpPhoto
def updateListOfDates(self): callendarMap=CalendarController().getCalendarForTool(ToolController().findTool(self.selectedTool)) for row in callendarMap: tmp=row[0]+"_"+row[1] self.listOfDatesWidget.insert(tk.END, tmp)
def setDescription(self, desc): ToolController().setDescriptionForTool(self.name, desc)
class Tool(): def __init__(self, name, owner, priceDay, priceHalf): self.id = None self.name = name self.priceDay = priceDay self.priceHalf = priceHalf self.owner = owner self.description = None self.toolController = ToolController() self.calendarController = CalendarController() self.userController = UserController() def __str__(self): return "{0}_{1}_{2}_{3}".format(self.name, self.owner, self.priceDay, self.priceHalf) def saveToolToDatabase(self): self.toolController.saveToolToDatabase(self) self.calendarController.saveToolCalendar(self.name) def getCalendar(self): calendarRow = self.calendarController.getCalendarForTool(self) return calendarRow def book(self, dateToBook, userName, days=1, type="DAY"): if days in range(1, 4): for i in range(0, days): self.calendarController.bookToolForDate( self, dateToBook + timedelta(i), userName, type) if type == "HALF": charge = self.priceHalf * days else: charge = self.priceDay * days self.userController.addChargeForUser(charge, userName) return (charge) else: print("BOOKING LIMIT UP TO 3 DAYS") return None def giveBack(self, returningDate, userName): cal = self.getCalendar() datesForUser = [] for i in range(0, cal.__len__()): if cal[i][1].lower() == userName + "_day" or cal[i][1].lower( ) == userName + "_half": datesForUser.append(cal[i][0]) dateToReturn = datetime.strptime(cal[i][0], '%Y-%m-%d').date() CalendarController().returnTool(self, dateToReturn) lastDate = datetime.strptime(datesForUser[datesForUser.__len__() - 1], '%Y-%m-%d').date() dif = (returningDate - lastDate).days extraCharge = 0 if dif > 0: extraCharge = dif * self.priceDay * 2 newCharge = self.userController.getUserCurrentCharge( userName) + extraCharge self.userController.addChargeForUser(newCharge, userName) else: dif = 0 return (dif, extraCharge) def getDescription(self): return ToolController().getDescriptionForTool(self.name) def setDescription(self, desc): ToolController().setDescriptionForTool(self.name, desc)
def getDescription(self): return ToolController().getDescriptionForTool(self.name)
def __init__(self, user, owner): self.owner = owner self.tmpPhoto = None tk.Toplevel.__init__(self) self.protocol("WM_DELETE_WINDOW", self._delete_window) self.bind("<Destroy>", self._destroy) self.loggedUser = user.name self.title("Shared Power - Main Window") #self.master.geometry('1000x700') #TOP MENU self.topMenuFrame = tk.Frame(self, borderwidth=3, relief=self.BORDER_TYPE) self.loginLabelStatic = tk.Label(self.topMenuFrame, text="Username: "******"Charge: ", font=self.FONT_TYPE) self.chargeLabel = tk.Label(self.topMenuFrame, text=user.charge, font=self.FONT_TYPE) self.addToolBt = tk.Button(self.topMenuFrame, text="Add tool", command=self.goToAddToolWindow, font=self.FONT_TYPE) #LIST OF ALL TOOLS self.allToolFrame = tk.Frame(self, borderwidth=3, relief=self.BORDER_TYPE) self.allToolsTopic = tk.Label(self.allToolFrame, text="ALL TOOLS", font=self.FONT_TYPE) self.listOfAllToolsWidget = tk.Listbox(self.allToolFrame, font=self.FONT_TYPE, selectmode=tk.SINGLE) self.scrollbarAllTools = tk.Scrollbar(self.allToolFrame) self.listOfAllTools = ToolController().findAllTools() self.updateAllToolsList() self.listOfAllToolsWidget.bind('<<ListboxSelect>>', self.currentSelectionAllTools) self.listOfAllToolsWidget.config( yscrollcommand=self.scrollbarAllTools.set) self.scrollbarAllTools.config(command=self.listOfAllToolsWidget.yview) #LIST OF TOOLS USER HIRED self.userToolFrame = tk.Frame(self, borderwidth=2, relief=self.BORDER_TYPE) self.userToolsTopic = tk.Label(self.userToolFrame, text="HIRED TOOLS", font=self.FONT_TYPE) self.listOfUserToolsWidget = tk.Listbox(self.userToolFrame, font=self.FONT_TYPE, selectmode=tk.SINGLE) self.scrollbarUserTools = tk.Scrollbar(self.userToolFrame) self.listOfUserTools = ToolController().findAllToolsHiredByUser( self.loggedUser) self.updateUserToolsList() self.listOfUserToolsWidget.bind('<<ListboxSelect>>', self.currentSelectionUserTools) self.listOfUserToolsWidget.config( yscrollcommand=self.scrollbarUserTools.set) self.scrollbarUserTools.config( command=self.listOfUserToolsWidget.yview) #TOOL AREA self.toolFrame = tk.Frame(self, borderwidth=2, relief=self.BORDER_TYPE) self.photoLabel = tk.Label(self.toolFrame) self.tmpPhoto = ImageController().getDefaultPhoto() self.photoLabel.config(image=self.tmpPhoto) self.photoLabel.image = self.tmpPhoto self.descriptionLabelStatic = tk.Label(self.toolFrame, text="Desc:", font=self.FONT_TYPE) self.descriptionLabel = tk.Label(self.toolFrame, text="<<DESCRIPTION>>", font=self.FONT_TYPE) self.priceDayLabelStatic = tk.Label(self.toolFrame, text="Price Day:", font=self.FONT_TYPE) self.priceDayLabel = tk.Label(self.toolFrame, text="<<PRICE>>", font=self.FONT_TYPE) self.priceHalfLabelStatic = tk.Label(self.toolFrame, text="Price Half:", font=self.FONT_TYPE) self.priceHalfLabel = tk.Label(self.toolFrame, text="<<PRICE>>", font=self.FONT_TYPE) self.bookToolBt = tk.Button(self.toolFrame, text="Hire Tool", font=self.FONT_TYPE, command=self.goToBookToolWindow) self.loginLabelStatic.pack(side=tk.LEFT, pady=10) self.loginLabel.pack(side=tk.LEFT, padx=40) self.chargeLabelStatic.pack(side=tk.LEFT) self.chargeLabelStatic.bind("<Button-1>", self.iluminatiFunction) self.chargeLabel.pack(side=tk.LEFT, padx=40) self.addToolBt.pack(side=tk.RIGHT) self.allToolsTopic.grid(row=0, column=0, columnspan=2, stick="NSWE", pady=5) self.listOfAllToolsWidget.grid(row=1, column=0, stick="NSWE") self.scrollbarAllTools.grid(row=1, column=1, stick="NSWE") self.userToolsTopic.grid(row=0, column=0, columnspan=2, stick="NSWE", pady=5) self.listOfUserToolsWidget.grid(row=1, column=0, stick="NSWE") self.scrollbarUserTools.grid(row=1, column=1, stick="NSWE") self.photoLabel.grid(row=0, column=0, columnspan=2, stick="NSWE") self.descriptionLabelStatic.grid(row=1, column=0, stick="W") self.descriptionLabel.grid(row=1, column=1, stick="NSWE") self.priceHalfLabelStatic.grid(row=2, column=0, stick="W") self.priceHalfLabel.grid(row=2, column=1, stick="NSWE") self.priceDayLabelStatic.grid(row=3, column=0, stick="W") self.priceDayLabel.grid(row=3, column=1, sticky="NSWE") self.bookToolBt.grid(row=4, column=0, columnspan=2, stick="NSWE") self.topMenuFrame.grid(row=0, column=0, columnspan=3, stick="WE") self.userToolFrame.grid(row=1, column=0, stick="NSWE") self.allToolFrame.grid(row=1, column=1, stick="NSWE") self.toolFrame.grid(row=1, column=2, stick="NSWE")
def updateAllToolsList(self): self.listOfAllToolsWidget.delete(0, tk.END) self.listOfAllTools.clear() self.listOfAllTools = ToolController().findAllTools() for tool in self.listOfAllTools: self.listOfAllToolsWidget.insert(tk.END, tool)
class MainWindow(tk.Toplevel): loggedUser = None selectedTool = None FONT_TYPE = ("", 15) BORDER_TYPE = "ridge" def __init__(self, user, owner): self.owner = owner self.tmpPhoto = None tk.Toplevel.__init__(self) self.protocol("WM_DELETE_WINDOW", self._delete_window) self.bind("<Destroy>", self._destroy) self.loggedUser = user.name self.title("Shared Power - Main Window") #self.master.geometry('1000x700') #TOP MENU self.topMenuFrame = tk.Frame(self, borderwidth=3, relief=self.BORDER_TYPE) self.loginLabelStatic = tk.Label(self.topMenuFrame, text="Username: "******"Charge: ", font=self.FONT_TYPE) self.chargeLabel = tk.Label(self.topMenuFrame, text=user.charge, font=self.FONT_TYPE) self.addToolBt = tk.Button(self.topMenuFrame, text="Add tool", command=self.goToAddToolWindow, font=self.FONT_TYPE) #LIST OF ALL TOOLS self.allToolFrame = tk.Frame(self, borderwidth=3, relief=self.BORDER_TYPE) self.allToolsTopic = tk.Label(self.allToolFrame, text="ALL TOOLS", font=self.FONT_TYPE) self.listOfAllToolsWidget = tk.Listbox(self.allToolFrame, font=self.FONT_TYPE, selectmode=tk.SINGLE) self.scrollbarAllTools = tk.Scrollbar(self.allToolFrame) self.listOfAllTools = ToolController().findAllTools() self.updateAllToolsList() self.listOfAllToolsWidget.bind('<<ListboxSelect>>', self.currentSelectionAllTools) self.listOfAllToolsWidget.config( yscrollcommand=self.scrollbarAllTools.set) self.scrollbarAllTools.config(command=self.listOfAllToolsWidget.yview) #LIST OF TOOLS USER HIRED self.userToolFrame = tk.Frame(self, borderwidth=2, relief=self.BORDER_TYPE) self.userToolsTopic = tk.Label(self.userToolFrame, text="HIRED TOOLS", font=self.FONT_TYPE) self.listOfUserToolsWidget = tk.Listbox(self.userToolFrame, font=self.FONT_TYPE, selectmode=tk.SINGLE) self.scrollbarUserTools = tk.Scrollbar(self.userToolFrame) self.listOfUserTools = ToolController().findAllToolsHiredByUser( self.loggedUser) self.updateUserToolsList() self.listOfUserToolsWidget.bind('<<ListboxSelect>>', self.currentSelectionUserTools) self.listOfUserToolsWidget.config( yscrollcommand=self.scrollbarUserTools.set) self.scrollbarUserTools.config( command=self.listOfUserToolsWidget.yview) #TOOL AREA self.toolFrame = tk.Frame(self, borderwidth=2, relief=self.BORDER_TYPE) self.photoLabel = tk.Label(self.toolFrame) self.tmpPhoto = ImageController().getDefaultPhoto() self.photoLabel.config(image=self.tmpPhoto) self.photoLabel.image = self.tmpPhoto self.descriptionLabelStatic = tk.Label(self.toolFrame, text="Desc:", font=self.FONT_TYPE) self.descriptionLabel = tk.Label(self.toolFrame, text="<<DESCRIPTION>>", font=self.FONT_TYPE) self.priceDayLabelStatic = tk.Label(self.toolFrame, text="Price Day:", font=self.FONT_TYPE) self.priceDayLabel = tk.Label(self.toolFrame, text="<<PRICE>>", font=self.FONT_TYPE) self.priceHalfLabelStatic = tk.Label(self.toolFrame, text="Price Half:", font=self.FONT_TYPE) self.priceHalfLabel = tk.Label(self.toolFrame, text="<<PRICE>>", font=self.FONT_TYPE) self.bookToolBt = tk.Button(self.toolFrame, text="Hire Tool", font=self.FONT_TYPE, command=self.goToBookToolWindow) self.loginLabelStatic.pack(side=tk.LEFT, pady=10) self.loginLabel.pack(side=tk.LEFT, padx=40) self.chargeLabelStatic.pack(side=tk.LEFT) self.chargeLabelStatic.bind("<Button-1>", self.iluminatiFunction) self.chargeLabel.pack(side=tk.LEFT, padx=40) self.addToolBt.pack(side=tk.RIGHT) self.allToolsTopic.grid(row=0, column=0, columnspan=2, stick="NSWE", pady=5) self.listOfAllToolsWidget.grid(row=1, column=0, stick="NSWE") self.scrollbarAllTools.grid(row=1, column=1, stick="NSWE") self.userToolsTopic.grid(row=0, column=0, columnspan=2, stick="NSWE", pady=5) self.listOfUserToolsWidget.grid(row=1, column=0, stick="NSWE") self.scrollbarUserTools.grid(row=1, column=1, stick="NSWE") self.photoLabel.grid(row=0, column=0, columnspan=2, stick="NSWE") self.descriptionLabelStatic.grid(row=1, column=0, stick="W") self.descriptionLabel.grid(row=1, column=1, stick="NSWE") self.priceHalfLabelStatic.grid(row=2, column=0, stick="W") self.priceHalfLabel.grid(row=2, column=1, stick="NSWE") self.priceDayLabelStatic.grid(row=3, column=0, stick="W") self.priceDayLabel.grid(row=3, column=1, sticky="NSWE") self.bookToolBt.grid(row=4, column=0, columnspan=2, stick="NSWE") self.topMenuFrame.grid(row=0, column=0, columnspan=3, stick="WE") self.userToolFrame.grid(row=1, column=0, stick="NSWE") self.allToolFrame.grid(row=1, column=1, stick="NSWE") self.toolFrame.grid(row=1, column=2, stick="NSWE") def goToAddToolWindow(self): self.withdraw() AddToolWindow(self.loggedUser, self) def goToBookToolWindow(self): self.withdraw() HireToolWindow(self.loggedUser, self.selectedTool, self) def updateAllToolsList(self): self.listOfAllToolsWidget.delete(0, tk.END) self.listOfAllTools.clear() self.listOfAllTools = ToolController().findAllTools() for tool in self.listOfAllTools: self.listOfAllToolsWidget.insert(tk.END, tool) def updateUserToolsList(self): self.listOfUserToolsWidget.delete(0, tk.END) self.listOfUserTools.clear() self.listOfUserTools = ToolController().findAllToolsHiredByUser( self.loggedUser) self.chargeLabel.config( text=UserController().getUserCurrentCharge(self.loggedUser)) for tool in self.listOfUserTools: self.listOfUserToolsWidget.insert(tk.END, tool) def currentSelectionAllTools(self, evt): value = self.listOfAllToolsWidget.get( self.listOfAllToolsWidget.curselection()) result = value.split("_") toolName = result[0] self.selectedTool = toolName tool = ToolController().findTool(toolName) self.descriptionLabel.config(text=tool.description) self.priceDayLabel.config(text=str(tool.priceDay)) self.priceHalfLabel.config(text=str(tool.priceHalf)) try: imageTmp = ImageController().getPhotoOfTool(self.selectedTool) self.photoLabel.config(image=imageTmp) self.photoLabel.image = imageTmp except: self.photoLabel.config(image=self.tmpPhoto) self.photoLabel.image = self.tmpPhoto def currentSelectionUserTools(self, evt): value = self.listOfUserToolsWidget.get( self.listOfUserToolsWidget.curselection()) result = value.split("_") toolName = result[0] self.withdraw() ReturnToolWindow(self.loggedUser, toolName, self) def iluminatiFunction(self, eve): messagebox.showinfo("ILLUMINATI IS HERE!", UserController().wholeUsersCharge()) #------------------------------------------------------------------------------------------------------------------------------------ def _delete_window(self): try: self.destroy() except: pass def _destroy(self, event): self.owner.deiconify()