# BiaWeb Website content manager (c) 2010 V.Harishankar # Database handling functions import sqlite3 import os import os.path # function to set the configuration and update the database def set_configuration (dbname, site_title, site_url, keywords, description, copyright, num_rss, dest_path): try: conn = sqlite3.connect (dbname) c = conn.cursor () c.executemany ("UPDATE config SET config_param=? WHERE config_name=?;", [[site_url, "Website URL"], [site_title, "Website Title"], [keywords, "Keywords"], [description, "Description"], [num_rss, "No. of RSS items"], [dest_path, "Destination path"], [copyright, "Copyright"]]) conn.commit () conn.close () return True except sqlite3.Error: return False # function to get the existing site configuration and return it as a tuple def get_configuration (dbname): try: conn = sqlite3.connect (dbname) c = conn.cursor () c.execute ("SELECT * FROM config;") conn.commit () recs = c.fetchall () conn.close () for name, param in recs: if name == "Website URL": website_url = param elif name == "Website Title": website_title = param elif name == "Keywords": keywords = param elif name == "Description": description = param elif name == "No. of RSS items": num_rss = int (param) elif name == "Destination path": destination = param elif name == "Copyright": copyright = param return (website_url, website_title, keywords, description, num_rss, destination, copyright) except sqlite3.Error: return False # function to create a category def create_category (dbname, category_name, category_desc, category_stub): try: conn = sqlite3.connect (dbname) c = conn.cursor () c.execute ("INSERT INTO categories (name, desc, stub) VALUES (?, ?, ?);", (category_name, category_desc, category_stub)) conn.commit () conn.close () return True except sqlite3.Error: return False # Function to get list of articles (either full list or just in a category def get_articles (dbname, category_id=None): try: conn = sqlite3.connect (dbname) c = conn.cursor () if category_id == None: c.execute ("SELECT * FROM articles;") else: c.execute ("SELECT * FROM articles WHERE cid=?", (category_id,)) conn.commit () rows = c.fetchall () conn.close () return rows except sqlite3.Error: return False # Function to get list of categories and return a (category_id, category_name) array def get_categories (dbname): try: conn = sqlite3.connect (dbname) c = conn.cursor () c.execute ("SELECT * FROM categories;") conn.commit () recs = c.fetchall () conn.close () return recs except sqlite3.Error: return False # function to create a new site database def create_db (dbname, site_title, site_url, keywords, description, copyright, num_rss, dest_path): try: if os.path.exists (dbname): os.remove (dbname) except OSError: return False try: conn = sqlite3.connect (dbname) c = conn.cursor () c.execute ("CREATE TABLE IF NOT EXISTS \ categories (cid INTEGER PRIMARY KEY, \ name TEXT, desc TEXT, \ stub TEXT);") c.execute ("CREATE TABLE IF NOT EXISTS \ articles (aid INTEGER PRIMARY KEY, \ title TEXT, summary TEXT, keywords TEXT, \ content TEXT, cdate NUMERIC, mdate NUMERIC, cid NUMERIC, \ stub TEXT, rating NUMERIC);") c.execute ("CREATE TABLE IF NOT EXISTS \ config (config_name TEXT, config_param TEXT);") c.execute ("CREATE TABLE IF NOT EXISTS \ templates (template_name TEXT, template_content);") template_main = """
${category_desc}
Title | Created on | Rated |