![]()
#!/usr/bin/python
import time
import cPickle
import os
from sys import exit
class BadUserError(Exception):
pass
def get_integer(retrieve,question,attempts=3):
while attempts > 0:
num = retrieve(question)
try: # check if the user input is an integer
return int(num)
except ValueError:
print "Opps, You must enter a number!"
attempts -= 1
raise BadUserError("Too many incorrect attempts!")
if os.path.exists('todo.dat'):
try:
fname = open('todo.dat', 'rb')
data = cPickle.Unpickler(fname)
todo = data.load()
finally:
fname.close()
else:
todo = {}
def get_todo():
key = raw_input('Enter Todo Title: ')
print '\n', key, 'has been added.'
print 'Next, enter date for Todo: '
curr_date = time.strftime('%Y %m %d', time.gmtime())
print 'Format as ', curr_date
yr = get_integer(raw_input,'\nEnter Year: ')
mt = get_integer(raw_input,'Enter Month: ')
dy = get_integer(raw_input, 'Enter Day: ')
hr = get_integer(raw_input,'Enter Hour (24h): ')
mn = get_integer(raw_input,'Enter Minute (01-59): ')
value = [yr, mt, dy, hr, mn]
todo[key] = value
load_todo(todo)
print '\nYour current Todo list is: \n'
for k, v in todo.iteritems():
print k, 'Date:', v[1],v[2],v[0],'Time:',v[3],':',v[4]
response = raw_input('\nDo you want to add another Todo? (y/n) ')
if response == 'y':
get_todo()
else:
print 'Goodbye'
def load_todo(todo):
fname = open('todo.dat', 'w')
object = cPickle.Pickler(fname)
object.dump(todo)
fname.close()
def del_todo():
print '\nYour current Todo list is: \n'
for k, v in todo.iteritems():
print k
answer = raw_input('\nWhich Todo do you want to remove? ')
del todo[answer]
print '\nDeleted Todo', answer
print '\nYour current Todo list is: \n'
for k, v in todo.iteritems():
print k
load_todo(todo)
def start_todo():
fname = open('todo.dat', 'rb')
try:
while True:
try:
data = cPickle.Unpickler(fname)
todo = data.load()
print '\nYour current Todo list is: \n'
for k, v in todo.iteritems():
print k, 'Date:', v[1],v[2],v[0],'Time:',v[3],':',v[4]
except EOFError:
break
finally:
fname.close()
def menu():
print '''
Todo List
Press A: Add a Todo
Press S: Show Todo List
Press D: Remove Todo
Press X: Exit
'''
answer = raw_input('\nEnter > ')
answer = answer.lower()
if answer == 'a':
start = start_todo()
start
get_todo()
menu()
elif answer == 's':
answer = answer.lower()
start = start_todo()
start
menu()
elif answer == 'd':
answer = answer.lower()
del_todo()
menu()
elif answer == 'x':
answer = answer.lower()
print 'Goodbye'
exit()
else:
print 'Goodbye'
# print k, 'Date:',vals[1],vals[2],vals[0],'Time:',vals[3],':',vals[4]
if __name__ == '__main__':
menu()
David Abbott - david at linuxcrazy dot com