예제 #1
0
 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.')
예제 #2
0
 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()
예제 #3
0
 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')
예제 #4
0
 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')
예제 #5
0
 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.'
예제 #6
0
        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
예제 #7
0
    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!'