def find_by_date(): fmt = '%m/%d/%Y' status_message = None header('Find by Date') while True: try: date_search = datetime.datetime.strptime( input('\n Enter a date with format MM/DD/YYYY: '), '%m/%d/%Y') classes.DisplayEntries('tasks.csv').FindByDate(date_search) while True: menu_options = ['Return to Search'] menu_choice = display_menu(status_message, menu_options, False) if menu_choice == '1': return 'search' elif menu_choice == '2': return 'main' elif menu_choice == '3': clear() quit() else: status_message = 'I\'m sorry that\'s not a valid option' header('Find by Date') except ValueError: header('Find by Date') print('\n Please enter a valid date.')
def find_by_exact(): header('Find by Exact Name') exact_search = input( '\n Enter the task name to search for: ').lower() status_message = None classes.DisplayEntries('tasks.csv').FindByExact(exact_search) menu_options = ['Return to Search'] menu_choice = display_menu(status_message, menu_options, False) if menu_choice == '1': return 'search' elif menu_choice == '2': return 'main' elif menu_choice == '3': clear() quit()
def find_by_time(): header('Find by Time') time_search = input('\n Enter a number of minutes to search for: ') status_message = None classes.DisplayEntries('tasks.csv').FindByTime(time_search) while True: menu_options = ['Return to Search'] menu_choice = display_menu(status_message, menu_options, False) if menu_choice == '1': return 'search' elif menu_choice == '2': return 'main' elif menu_choice == '3': clear() quit() else: status_message = 'I\'m sorry that\'s not a valid option' header('Find by Time')
def find_by_pattern(): status_message = None header('Find by Pattern') while True: regex_search = input('\n Enter a regex pattern to search: ') try: classes.DisplayEntries('tasks.csv').FindByPattern( regex_search) except: pass menu_options = ['Return to Search'] menu_choice = display_menu(status_message, menu_options, False) if menu_choice == '1': return 'search' elif menu_choice == '2': return 'main' elif menu_choice == '3': clear() quit() else: print('I\'m sorry that\'s not a valid option')
def delete_entry(total_entries): header('Delete an Entry') classes.DisplayEntries('tasks.csv').ShowAll() entry_number = int(input('\n Select an entry to delete: ')) - 1 confirm = input( '\n Are you sure you want to delete? (Y)es or (N)o: ') try: if confirm[0].upper() == 'Y': entry_list = [] with open('tasks.csv', newline='') as csvfile: reader = csv.reader(csvfile) for row in reader: entry_list.append(row) del entry_list[entry_number] with open('tasks.csv', 'w', newline='') as csvfile: for entry in entry_list: for item in entry: csvfile.write(item + ',') csvfile.write('\n') else: pass except IndexError: return 'Invalid selection.'
def edit_entry(total_entries): while True: header('Edit an Entry') classes.DisplayEntries('tasks.csv').ShowAll() entry_number = int( input('\n Select an entry number to edit: ')) - 1 entry_list = [] with open('tasks.csv', newline='') as csvfile: reader = csv.reader(csvfile) for row in reader: entry_list.append(row) clear() header('Edit an Entry') print('\n [1] Date: {} '.format( entry_list[entry_number][0])) print(' [2] Task Name: {} '.format( entry_list[entry_number][1])) print(' [3] Time Spent: {} '.format( entry_list[entry_number][2])) print(' [4] Notes: {} '.format( entry_list[entry_number][3])) item_number = int(input('\n Select an item to edit: ')) - 1 if item_number == 0: try: task_date = datetime.datetime.strptime( input('\n Enter task date as MM/DD/YYYY: '), '%m/%d/%Y') entry_list[entry_number][0] = task_date.strftime( '%m/%d/%Y') except ValueError: header('Add a Task') print('\n Please enter a valid date.') elif item_number == 1: task_name = input('\n What is the task name?: ') entry_list[entry_number][1] = task_name while len(task_name) > 40: header('Edit an Entry') task_name = input( '\n I\'m sorry your task name is too long. Try again: ' ) entry_list[entry_number][1] = task_name elif item_number == 2: try: time_spent = input( '\n How many minutes were spent on this task?: ') entry_list[entry_number][2] = int(time_spent) if int(time_spent) > 999: raise ValueError except: return 'Minutes spent must be an integer less that 1,000.' elif item_number == 3: notes = input(' Enter any notes: ') entry_list[entry_number][3] = notes clear() with open('tasks.csv', 'w', newline='') as csvfile: for entry in entry_list: csvfile.write(entry[0] + ',' + entry[1] + ',' + str(entry[2]) + ',' + entry[3]) csvfile.write('\n') break
def modify_entries(): has_entries = classes.DisplayEntries('tasks.csv').ShowAll() def edit_entry(total_entries): while True: header('Edit an Entry') classes.DisplayEntries('tasks.csv').ShowAll() entry_number = int( input('\n Select an entry number to edit: ')) - 1 entry_list = [] with open('tasks.csv', newline='') as csvfile: reader = csv.reader(csvfile) for row in reader: entry_list.append(row) clear() header('Edit an Entry') print('\n [1] Date: {} '.format( entry_list[entry_number][0])) print(' [2] Task Name: {} '.format( entry_list[entry_number][1])) print(' [3] Time Spent: {} '.format( entry_list[entry_number][2])) print(' [4] Notes: {} '.format( entry_list[entry_number][3])) item_number = int(input('\n Select an item to edit: ')) - 1 if item_number == 0: try: task_date = datetime.datetime.strptime( input('\n Enter task date as MM/DD/YYYY: '), '%m/%d/%Y') entry_list[entry_number][0] = task_date.strftime( '%m/%d/%Y') except ValueError: header('Add a Task') print('\n Please enter a valid date.') elif item_number == 1: task_name = input('\n What is the task name?: ') entry_list[entry_number][1] = task_name while len(task_name) > 40: header('Edit an Entry') task_name = input( '\n I\'m sorry your task name is too long. Try again: ' ) entry_list[entry_number][1] = task_name elif item_number == 2: try: time_spent = input( '\n How many minutes were spent on this task?: ') entry_list[entry_number][2] = int(time_spent) if int(time_spent) > 999: raise ValueError except: return 'Minutes spent must be an integer less that 1,000.' elif item_number == 3: notes = input(' Enter any notes: ') entry_list[entry_number][3] = notes clear() with open('tasks.csv', 'w', newline='') as csvfile: for entry in entry_list: csvfile.write(entry[0] + ',' + entry[1] + ',' + str(entry[2]) + ',' + entry[3]) csvfile.write('\n') break def delete_entry(total_entries): header('Delete an Entry') classes.DisplayEntries('tasks.csv').ShowAll() entry_number = int(input('\n Select an entry to delete: ')) - 1 confirm = input( '\n Are you sure you want to delete? (Y)es or (N)o: ') try: if confirm[0].upper() == 'Y': entry_list = [] with open('tasks.csv', newline='') as csvfile: reader = csv.reader(csvfile) for row in reader: entry_list.append(row) del entry_list[entry_number] with open('tasks.csv', 'w', newline='') as csvfile: for entry in entry_list: for item in entry: csvfile.write(item + ',') csvfile.write('\n') else: pass except IndexError: return 'Invalid selection.' status_message = None if has_entries: header('All Entries') total_entries = classes.DisplayEntries('tasks.csv').ShowAll() if total_entries == 0: status_message = 'You don\'t have any entries added!' menu_options = ['Edit an Entry', 'Delete an Entry'] menu_choice = display_menu(status_message, menu_options, False) if menu_choice == "1": edit_entry(total_entries) elif menu_choice == "2": delete_entry(total_entries) elif menu_choice == "3": pass elif menu_choice == "4": clear() quit() else: status_message = '\n I\'m sorry that\'s not a valid option' else: return 'You don\'t have any entries added!'