示例#1
0
 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()
示例#3
0
 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()
示例#5
0
 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)
示例#10
0
    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")
示例#11
0
 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)
示例#12
0
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()