X-Git-Url: https://harishankar.org/repos/?p=biaweb_qt.git;a=blobdiff_plain;f=biaweb_db.py;h=dd3e333bdf6feea17979bb002d333331682852ed;hp=5496453c19904f8793046a377fff069f98925626;hb=e897998f0634d3518f069846c62592fe43dc63bf;hpb=35c21d64e5d7554d2c610599a87c7f236b83d992 diff --git a/biaweb_db.py b/biaweb_db.py index 5496453..dd3e333 100644 --- a/biaweb_db.py +++ b/biaweb_db.py @@ -4,6 +4,105 @@ import sqlite3 import os import os.path +import time + +# function to get an article from the database +def get_article (dbname, artid): + try: + conn = sqlite3.connect (dbname) + c = conn.cursor () + c.execute ("SELECT * FROM articles WHERE aid=?;", (artid,)) + conn.commit () + row = c.fetchone () + conn.close () + return row + except sqlite3.Error: + return False + +# function to create an article +def create_article (dbname, title, summary, keywords, content, catid, stub, rating): + # time of creation + creattime = time.time () + modtime = creattime + try: + conn = sqlite3.connect (dbname) + c = conn.cursor () + c.execute ("INSERT INTO articles (title, summary, keywords, content, cdate, mdate, cid, stub, rating) \ + VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?);", (title, summary, keywords, content, creattime, + modtime, catid, stub, rating)) + conn.commit () + conn.close () + return True + except sqlite3.Error: + return False + +# function to update an article +def update_article (dbname, aid, title, summary, keywords, content, catid, stub, rating): + # modification time only to be updated + modtime = time.time () + try: + conn = sqlite3.connect (dbname) + c = conn.cursor () + c.execute ("UPDATE articles SET title=?, summary=?, keywords=?, content=?, mdate=?, cid=?, \ + stub=?, rating=? WHERE aid=?;", + (title, summary, keywords, content, modtime, catid, stub, rating, aid)) + conn.commit () + conn.close () + return True + except sqlite3.Error: + return False + +# function to delete an article +def delete_article (dbname, artid): + try: + conn = sqlite3.connect (dbname) + c = conn.cursor () + c.execute ("DELETE FROM articles WHERE aid=?;", (artid,)) + conn.commit () + conn.close () + return True + except sqlite3.Error: + return False + +# function to get a category from the database +def get_category (dbname, catid): + try: + conn = sqlite3.connect (dbname) + c = conn.cursor () + c.execute ("SELECT * FROM categories WHERE cid=?", (catid,)) + conn.commit () + cat = c.fetchone () + conn.close () + return cat + except sqlite3.Error: + return False + +# function to update a category +def update_category (dbname, catid, cat_name, cat_desc, cat_stub): + try: + conn = sqlite3.connect (dbname) + c = conn.cursor () + c.execute ("UPDATE categories SET name=?, desc=?, stub=? WHERE cid=?;", + (cat_name, cat_desc, cat_stub, catid)) + conn.commit () + conn.close () + return True + except sqlite3.Error: + return False + +# function to remove a category +def remove_category (dbname, catid): + try: + conn = sqlite3.connect (dbname) + c = conn.cursor () + c.execute ("DELETE FROM categories WHERE cid=?;", (catid,)) + c.execute ("DELETE FROM articles WHERE cid=?;", (catid,)) + conn.commit () + conn.close () + return True + except sqlite3.Error: + return False + # function to create a category def create_category (dbname, category_name, category_desc, category_stub): @@ -18,6 +117,82 @@ def create_category (dbname, category_name, category_desc, category_stub): except sqlite3.Error: return False +# 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 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,