#!/usr/bin/env python

from datetime import date
import shutil

class dex:
    def __init__(self,filename):
        self.filename=filename
        fd = open(filename,'r')
        self.books = [self.unformat(line) for line in fd]
        fd.close()
    def unformat(self,line):
        (authors,titles,serieses,codes) = line.split('<')
        authors = authors.split('|')
        titles = titles.split('|')
        serieses = serieses.split('|')
        codes = codes.split(',')
        return {'authors': authors,
                'titles': titles,
                'serieses': serieses,
                'codes': codes
                }
    def format(self,book):
        authors = book['authors'].join('|')
        titles = book['titles'].join('|')
        serieses = book['serieses'].join('|')
        codes = book['codes'].join(',')
        return "%s<%s<%s<%s\n" % (authors,titles,serieses,codes)    
    def save(self):
        self.books.sort()
        tempname = "%s.tmp" % self.filename
        fd = open(tempname,'w')
        for book in self.books:
            fd.write(self.format(book))
        fd.close()
        shutil.move(tempname,self.filename)
    def add(self,book):
        self.books.append(book)
    def delete(self,book):
        self.books.remove(book)


def main_menu():
    char=''
    while char not in ['a','d','s','q']:
        print """
a)dd a review book
d)elete a review book
s)ave
q)uit
choose: """
        char = raw_input()
    return char

def event_loop():
    choice=''
    while choice != 'q':
        choice=main_menu()
        if choice='a':
            book=datadex.select_book()
            reviewdex.add(book)
        elif choice='d':
            book=reviewdex.select_book()
            reviewdex.delete(book)
        elif choice='s':
            reviewdex.save()        

months = ['jan','feb','mar','apr','may','jun',
          'jul','aug','sep','oct','nov','dec']

if __name__=='__main__':
    month = months[date.today().month-1]
    datadex = dex('datadex')
    reviewdex = dex('reviewdex-%s' % month)
    event_loop()
            
