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