from html_page import Html_Page


#
# Generate HTML book page indexed by author
#
class Authors_Page (Html_Page):

    def __init__ (self):
        Html_Page.__init__ (self, "Aviation Books: by Author",
                            "<i>Aviation Books: indexed by Author</i>")
        self.f = open ("books_by_author.html", "w")
        print "Authors page in--> " + self.f.name

    def set_book_list (self, list):
        self.book_list = list

    def generate_body (self):
        #
        # Generate a table
        #
        self.f.write ("<hr>\n")
        self.f.write ("<center>\n")
        self.f.write ("<table border=0 width=" + '"' + "80%" + '"' + ">\n")
        last_author = ""
        for b in self.book_list:
            if (b.last_name[0] == last_author):
                line = "<tr><td></td>"
            else:
                line = "<tr><td>"
                # Print authors names
                i = 0
                while i < len (b.last_name):
                    if i > 0: 
                        line = line +  " and "
                    line = line +  b.last_name[i] + ", " + b.first_name[i]
                    i = i + 1
                line = line +" </td>\n"
                last_author = b.last_name[0]
            self.f.write (line)
            line = "<td>"
            if len(b.url) != 0:
                line = line + "<a href=" + b.url + "><i>" + '"' + b.title + '"' + "</i></a>"
            else:
                line = line + "<i>" + '"' + b.title + '"' + "</i>"
            line = line + "</td></tr>\n"
            self.f.write (line)
        self.f.write ("</table>\n </center>\n<hr>\n")
        count = len (self.book_list)
        self.f.write ("<center>There are " + ("%1d" % count) + " books in the list</center>\n")

    def generate_trailer (self):
        self.f.write ("<hr>\n")
        self.f.write ("<center><a href=books.html>Back to Aviation Books Top Page</a></center>\n")
        self.f.write ("<hr>\n")
        Html_Page.generate_trailer (self)
    
#
# Page index by Titles
#
class Titles_Page (Html_Page):

    def __init__ (self):
        Html_Page.__init__ (self, "Aviation Books: by Title",
                            "<i>Aviation Books: indexed by Title</i>")
        self.f = open ("books_by_title.html", "w")
        print "Titles page in --> " + self.f.name

    def set_book_list (self, list):
        self.book_list = list

    def generate_body (self):
        #
        # Generate table
        #
        self.f.write ("<hr>\n")
        self.f.write ("<center>\n")
        self.f.write ("<table border=0 width=" + '"' + "80%" + '"' + ">\n")
        for b in self.book_list:
            line = "<tr><td><i>"
            if len(b.url) != 0:
                line = line + "<a href=" + b.url + "><i>" + '"' + b.title + '"' + "</i></a>"
            else:
                line = line + "<i>" + '"' + b.title + '"' + "</i>"
            line = line + "</td><td>"
            # Print authors names
            i = 0
            while i < len (b.last_name):
                if i > 0: 
                    line = line + " and "
                line = line +  b.first_name[i] + " " +  b.last_name[i]
                i = i + 1
            line = line + "</td></tr>\n"
            self.f.write (line)
        self.f.write ("</table>\n")
        self.f.write ("</center>\n")
        self.f.write ("<hr>\n")
        count = len (self.book_list)
        self.f.write ("<center>There are " + ("%1d" % count) + " books in the list</center>\n")


    def generate_trailer (self):
        self.f.write ("<hr>\n")
        self.f.write ("<center><a href=books.html>Back to Aviation Books Top Page</a></center>\n")
        self.f.write ("<hr>\n")
        Html_Page.generate_trailer (self)


#
# Create a page indexed by subject
#
class Subjects_Page (Html_Page):

    def __init__ (self):
        Html_Page.__init__ (self, "Aviation Books: by Subject",
                            "<i>Aviation Books: indexed by Subject</i>")
        self.f = open ("books_by_subject.html", "w")
        print "Subject page in --> " + self.f.name


    def set_book_list (self, list):
        self.book_list = list

    def generate_body (self):
        #
        # Generate table
        #
        self.f.write ("<hr>\n")
        self.f.write ("<center>\n")
        self.f.write ("<table border=0 width=" + '"' + "100%" + '"' + ">\n")
        last_subject = "";
        for b in self.book_list:
            if (last_subject != b.subject):
                line = "<tr><td><b>" + b.subject + "</b></td>"
                last_subject = b.subject
            else:
                line = "<tr><td></td>"
            line = line + "<td><i>"
            if len(b.url) != 0:
                line = line + "<a href=" + b.url + "><i>" + '"' + b.title + '"' + "</i></a>"
            else:
                line = line + "<i>" + '"' + b.title + '"' + "</i>"
            line = line + "</td><td>"
            # Authors
            i = 0
            while i < len (b.last_name):
                if i > 0: 
                    line = line + " and "
                line = line +  b.first_name[i] + " " + b.last_name[i]
                i = i + 1
            line = line + "</td></tr>\n"
            self.f.write (line)
        self.f.write ("</table>\n")
        self.f.write ("</center>\n")
        self.f.write ("<hr>\n")
        count = len (self.book_list)
        self.f.write ("<center>There are " + ("%1d" % count) + " books in the list</center>\n")


    def generate_trailer (self):
        self.f.write ("<hr>\n")
        self.f.write ("<center><a href="http://www.netlabs.net/hp/richieb/books.html">Back to Aviation Books Top Page</a></center>\n")
        self.f.write ("<hr>\n")
        Html_Page.generate_trailer (self)


Copyright © 1997, Richie Bielak
Published in Issue 19 of the Linux Gazette, July 1997