def search_menu(): """Opens menu with different options for searching entries""" display.clear_screen() message = "What would you like to search by?" while True: print(display.blue_row("=" * 36)) print(message) print("\na) By Employee" "\nb) By Date" "\nc) By Time Spent" "\nd) By Keyword" "\ne) Return to Menu\n") search_task = input("> ") if search_task.lower() == 'a': search_employee() elif search_task.lower() == 'b': search_date() elif search_task.lower() == 'c': search_time() elif search_task.lower() == 'd': search_exact() elif search_task.lower() == 'e': display.clear_screen() return None else: print(display.red_err("That was not an option"))
def search_exact(): """Search database by an exact keyword""" search = input("Please select desired keyword: ") entries = Entry.select() results = [] for entry in entries: if search.lower() in entry.task.lower(): result = entry results.append(entry) elif search.lower() in entry.note.lower(): result = entry results.append(entry) elif search.lower() != entry.task.lower() and results == []: result = None elif search.lower() != entry.note.lower() and results == []: result = None if result: print_entries(results) else: print( display.red_err("\nSorry, no keyword found. Please try again.\n")) return None
def list_search(entries): """Takes list of entries and compares against """ action = input("\n(Enter 'Q' anytime to QUIT)" "\nType Employee Name AND Date from " "list separated by a space: ") results = [] for entry in entries: if action.upper() == 'Q': display.clear_screen() return None elif action == str(entry.user) + " " + str(entry.date)[:-9]: results.append(entry) result = entry display.clear_screen() print("Your search: {}".format(action)) print_entries(results) elif action != str(entry.user) + " " + str(entry.date)[:-9]\ and results == []: result = entry if not result: print( display.red_err("Please select entry from list by typing " "name and date separated by a space."))
def start_menu(): """Opens menu with user options""" active_entry = True display.clear_screen() while active_entry: welcome() print("\na) Add New Entry" "\nb) Search Existing Entry" "\nc) Quit Program\n") task = input("> ") if task.lower() == 'a': display.clear_screen() entries = { 'user': entry_functions.entry_user(), 'task': entry_functions.entry_task(), 'date': entry_functions.entry_date(), 'time': entry_functions.entry_time(), 'note': entry_functions.entry_note(), } Entry.create(**entries) elif task.lower() == 'b': display.clear_screen() search_functions.search_menu() elif task.lower() == 'c': display.clear_screen() print("\n" + display.blue_row("*" * 7) + " Thanks for using the work log! " + display.blue_row("*" * 7) + "\n") active_entry = False else: display.clear_screen() print(display.red_err("\nThat was not an option"))
def entry_task(): """Continuous prompt, returns a task name and rejects empty string""" while True: task_name = input("What is the title of the task? ") if task_name == '': print(display.red_err("Please try again with a task name")) else: return task_name
def entry_user(): """Continuous prompt, returns user name and rejects empty string""" print("Hello, valued employee.") while True: username = input("What is your name? ") if username == '': print(display.red_err("Please try again.")) else: return username
def setUp(self): self.entry = work_log.Entry() self.clear_work = display.clear_screen() self.welcome = work_log.welcome() self.initialize = work_log.initialize() self.print_entry = search_functions.print_entry(self.entry) self.print_entries = search_functions.print_entries([self.entry]) self.dates = entry_functions.get_datetime(str(self.entry.date)[:-16]) self.red = display.red_err("Test") self.blue = display.blue_row("Test")
def entry_time(): """Continuous prompt, returns a time and rejects non-integer""" while True: try: time = abs(int(input("How many minutes did the task take? "))) return time except ValueError: print( display.red_err("Please try again using an integer to " "represent minutes spent on task."))
def entry_date(): """Continuous prompt, returns datetime and rejects non-datetime object""" fmt = '%Y-%m-%d' while True: try: date = input("What date was the task completed? Please use " "YYYY-MM-DD format. ") return datetime.datetime.strptime(date, fmt) except ValueError: print(display.red_err("Please try again using proper format"))
def search_employee(): """Search database by employee name""" search = input("Please type desired employee: ") entries = Entry.select() results = [] for entry in entries: if search == entry.user: result = entry results.append(entry) elif search != entry.user and results == []: result = None if result: list_entries(results) else: print(display.red_err("\nSorry, no match found. Please try again.\n")) return None
def search_time(): """Search database by time in minutes""" search = input("Please select task time in minutes: ") entries = Entry.select() results = [] for entry in entries: if str(search) == str(entry.time): result = entry results.append(entry) elif search != entry.time and results == []: result = None if result: print_entries(results) else: print(display.red_err("\nSorry, no match found. Please try again.\n")) return None
def search_date(): """Search database by date""" search = input("\nPlease select desired date using YYYY-MM-DD format: ") search = (search + ' 00:00:00') entries = Entry.select() results = [] for entry in entries: if str(search) == str(entry.date): result = entry results.append(entry) elif search != entry.date and results == []: result = None if result: list_entries(results) else: print(display.red_err("\nSorry, date not found. Please try again.")) return None
def test_red(self): self.assertEqual(self.red, display.red_err("Test"))