Implemented generating the individual articles
authorHarishankar <v.harishankar@gmail.com>
Tue, 30 Nov 2010 15:14:10 +0000 (20:44 +0530)
committerHarishankar <v.harishankar@gmail.com>
Tue, 30 Nov 2010 15:14:10 +0000 (20:44 +0530)
Implemented the generation of individual article pages
within the category

biaweb_exporter.py

index 7c887c6..e824c08 100644 (file)
@@ -48,6 +48,52 @@ def html_format_rating (rating):
        rating_str = "".join (items)
        return rating_str
 
+# function to generate article pages
+def generate_article_pages (dbname, conf, templates, category_str, bestrated_str):
+       # main template
+       tpl_main = string.Template (templates[0][1])
+       # article template
+       tpl_articlebit = string.Template (templates[1][1])
+
+       # get all articles from the database
+       articles = biaweb_db.site_articles (dbname)
+       if articles == False:
+               return
+
+       # walk through each article and generate the file in the appropriate category
+       # folder
+       for art in articles:
+               art_cdate = time.ctime (art[5])
+               art_mdate = time.ctime (art[6])
+               rating_str = html_format_rating (art[9])
+               # now build the article from the article bit template
+               article_str = tpl_articlebit.safe_substitute (article_title = art[1],
+                                                                                                       article_cdate = art_cdate,
+                                                                                                       article_mdate = art_mdate,
+                                                                                                       rating = rating_str,
+                                                                                                       article_contents = art[4])
+
+               # now build the article page
+               articlepage_str = tpl_main.safe_substitute (site_title = conf[1],
+                                                                                                       site_url = "http://" + conf[0],
+                                                                                                       meta_keywords = art[3],
+                                                                                                       meta_description = art[2],
+                                                                                                       page_title = conf[1],
+                                                                                                       page_desc = conf[3],
+                                                                                                       contents_bit = article_str,
+                                                                                                       list_of_categories = category_str,
+                                                                                                       list_best_rated = bestrated_str,
+                                                                                                       copyright = conf[6])
+               # write to the article file
+               try:
+                       farticle = open (os.path.join (conf[5], art[13], art[8] + ".html"), "w+")
+                       farticle.write (articlepage_str)
+               except OSError, IOError:
+                       return False
+
+       # finally return true
+       return True
+
 # function to generate category directories and indices
 def generate_category_indices (dbname, conf, templates, category_str, bestrated_str, category_list):
        # main template
@@ -217,9 +263,15 @@ def generate_site (dbname, files_to_copy, folders_to_copy, search_type_full=True
        if ret == False:
                return False
 
+       # generate the category directories and indices
        ret = generate_category_indices (dbname, conf, tpls, cats_str, best_rated_str, cats)
        if ret == False:
                return False
 
+       # generate the article pages
+       ret = generate_article_pages (dbname, conf, tpls, cats_str, best_rated_str)
+       if ret == False:
+               return False
+
        # finally when all is successfully done return true
        return True