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 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