diff --git a/atomstrom.py b/atomstrom.py index a0061a6..d9037d7 100755 --- a/atomstrom.py +++ b/atomstrom.py @@ -234,13 +234,54 @@ def fetch_all_feeds(session): fetch_single_feed(session, feed) print +def ask_ok(prompt, retries=4, complaint='Yes or no, please!'): + while True: + ok = raw_input(prompt) + if ok in ('y', 'ye', 'yes'): + return True + if ok in ('n', 'no', 'nop', 'nope'): + return False + retries = retries - 1 + if retries < 0: + return False + print complaint + def delete_feed(session, feed_id): - print 'deleting feed %d...' % feed_id - # TODO implement delete + feed = session.query(Feed).\ + filter(Feed.id == feed_id).\ + first() + print feed + if ask_ok('> Do you really want to delete feed %d? ' % feed_id): + print 'deleting...' + entries = session.query(Entry).\ + filter(Entry.feed_id == feed_id).\ + all() + for entry in entries: + session.delete(entry) + feedinfo = session.query(Feedinfo).\ + filter(Feedinfo.feed_id == feed_id).\ + first() + session.delete(feedinfo) + session.delete(feed) + print '... done.' def reset_feed(session, feed_id): - print 'resetting feed %d...' % feed_id - # TODO implement reset + feed = session.query(Feed).\ + filter(Feed.id == feed_id).\ + first() + print feed + if ask_ok('> Do you really want to reset feed %d? ' % feed_id): + print 'resetting...' + entries = session.query(Entry).\ + filter(Entry.feed_id == feed_id).\ + all() + for entry in entries: + session.delete(entry) + feedinfo = session.query(Feedinfo).\ + filter(Feedinfo.feed_id == feed_id).\ + first() + session.delete(feedinfo) + print '... done.' if __name__ == '__main__': if (sys.stdout.encoding is None):