X-Git-Url: https://harishankar.org/repos/?p=biaweb_qt.git;a=blobdiff_plain;f=biaweb_exporter.py;fp=biaweb_exporter.py;h=7c887c6c26642b099e63a9c93ba29d41e253f9ba;hp=5bbe32b906b484f746f0eca72f072686a8f2a516;hb=de54d2eb3b283030bd98f7a1f6d056ce2e56b4d7;hpb=f37ae5235dba470cf02e25a885b83a2bc9c78694;ds=sidebyside
diff --git a/biaweb_exporter.py b/biaweb_exporter.py
index 5bbe32b..7c887c6 100644
--- a/biaweb_exporter.py
+++ b/biaweb_exporter.py
@@ -32,6 +32,87 @@ def html_format_categories (cats):
str_items = "".join (items)
return str_items
+# to convert a rating number into rating images out of 10 stars
+def html_format_rating (rating):
+ items = []
+ # if -1 then return unrated as the text
+ if rating == -1:
+ return "unrated"
+ # fill up the number of stars for the rating
+ for i in range (rating):
+ items.append ('')
+ # fill up remaining slots (of 10) with grey stars
+ for i in range (10 - rating):
+ items.append ('')
+
+ rating_str = "".join (items)
+ return rating_str
+
+# function to generate category directories and indices
+def generate_category_indices (dbname, conf, templates, category_str, bestrated_str, category_list):
+ # main template
+ tpl_main = string.Template (templates[0][1])
+ # table bit
+ tpl_tablebit = string.Template (templates[3][1])
+ # table row bit
+ tpl_trowbit = string.Template (templates[4][1])
+
+ # run through each category and generate category index page
+ for cat in category_list:
+ try:
+ # create the category directory
+ os.mkdir (os.path.join (conf[5], cat[3]))
+ except IOError, OSError:
+ return False
+
+ # now get the list of articles for the specified category
+ articles_list = biaweb_db.site_articles (dbname, cat[0])
+ if articles_list == False:
+ return False
+
+ tableitems = []
+ # run through the list of articles in category
+ for art in articles_list:
+ url = art[13] + "/" + art[8] + ".html"
+ creattime = time.ctime (art[5])
+ rating_str = html_format_rating (art[9])
+ # now build the table rows for each article
+ tableitem_str = tpl_trowbit.safe_substitute (article_url = url,
+ title = art[1],
+ created = creattime,
+ rating = rating_str)
+ tableitems.append (tableitem_str)
+ # generate the rows as a string
+ tablerows_str = "".join (tableitems)
+
+ # now create the page template
+ table_str = tpl_tablebit.safe_substitute (category_title = cat[1],
+ category_desc = cat[2],
+ table_rows = tablerows_str)
+
+ # now create the index page
+ categoryindex_str = tpl_main.safe_substitute (site_title = conf[1],
+ site_url = "http://" + conf[0],
+ meta_keywords = conf[2],
+ meta_description = cat[2],
+ page_title = conf[1],
+ page_desc = conf[3],
+ contents_bit = table_str,
+ list_of_categories = category_str,
+ list_best_rated = bestrated_str,
+ copyright = conf[6])
+
+ # now write to Category/index.html
+ try:
+ fcatindex = open (os.path.join (conf[5], cat[3], "index.html"), "w+")
+ fcatindex.write (categoryindex_str)
+ fcatindex.close ()
+ except OSError, IOError:
+ return False
+
+ # finally return true
+ return True
+
# function to generate main index file and stylesheet
def generate_home_page (dbname, conf, templates, category_str, bestrated_str):
# main template
@@ -94,7 +175,6 @@ def generate_home_page (dbname, conf, templates, category_str, bestrated_str):
fstyle = open (os.path.join (conf[5], "style.css"), "w+")
fstyle.write (templates[5][1])
fstyle.close ()
- print "error"
except IOError, OSError:
return False
@@ -137,5 +217,9 @@ def generate_site (dbname, files_to_copy, folders_to_copy, search_type_full=True
if ret == False:
return False
+ ret = generate_category_indices (dbname, conf, tpls, cats_str, best_rated_str, cats)
+ if ret == False:
+ return False
+
# finally when all is successfully done return true
return True