def generate_site (dbname, files_to_copy, folders_to_copy, search_type_full=True):
# get the configuration
conf = biaweb_db.get_configuration (dbname)
+ # if cannot get configuration
+ if conf == False:
+ return False
+
# get the templates
tpls = biaweb_db.get_templates (dbname)
+ if tpls == False:
+ return False
# get the list of categories
cats = biaweb_db.get_categories (dbname)
import os
import os.path
import ui_generate_dialog
+import biaweb_db
import biaweb_exporter
class GenerateDialog (PyQt4.QtGui.QDialog, ui_generate_dialog.Ui_SiteGenerateDialog):
# when site generate button is clicked
def onSiteGenerate (self):
+ # first check whether there are any articles in the website. If no articles
+ # are found, then website cannot be generated
+ arts = biaweb_db.get_articles (self.current_db)
+ # if no articles are found or cannot be retrieved
+ if arts == False or len (arts) == 0:
+ PyQt4.QtGui.QMessageBox.critical (self, "Error", "Cannot create website with no articles")
+ return
+
files_list = self.get_list_from_tree (self.additional_files)
folder_list = self.get_list_from_tree (self.additional_folders)
if self.fulltextindex.isChecked ():
# check with False because None is returned when no records exist
if recs == False:
PyQt4.QtGui.QMessageBox.critical (self, "Error", "SQLite 3 error in getting the categories")
- return
+ return False
self.categories.clear ()
for (id, name, desc, stub) in recs:
qrow = PyQt4.QtGui.QTreeWidgetItem ([str(id), str(name)])
self.categories.addTopLevelItem (qrow)
+ # return true when successful
+ return True
+
# refresh the articles list
def repopulate_articles (self, catid=None):
recs = biaweb_db.get_articles (self.current_db, catid)
# check with False because None is returned when no records exist
if recs == False:
PyQt4.QtGui.QMessageBox.critical (self, "Error", "SQLite 3 error in getting the articles")
- return
+ return False
self.articles.clear ()
for item in recs:
qrow = PyQt4.QtGui.QTreeWidgetItem ([str(item[0]), str(item[1])])
self.articles.addTopLevelItem (qrow)
+ # return true when successful
# when the view is refreshed
def onViewRefresh (self):
filename = PyQt4.QtGui.QFileDialog.getOpenFileName (self, "Open Site Database")
if filename:
self.current_db = str (filename)
- self.setWindowTitle ("BiaWeb - " + self.current_db)
- self.repopulate_categories ()
- self.repopulate_articles ()
+
+ # added to check whether categories are loaded successfully or not
+ # if not, then reset the current_db to None
+ loaded_cats = self.repopulate_categories ()
+ loaded_arts = self.repopulate_articles ()
+ # if failed in loading either categories or articles (note: checking against
+ # False and not None)
+ if loaded_cats == False or loaded_arts == False:
+ self.current_db = None
+ PyQt4.QtGui.QMessageBox.critical (self, "Error",
+ "SQLite 3 error in loading site database. This appears to be an invalid BiaWeb database")
+ else:
+ # set the window title to the database
+ self.setWindowTitle ("BiaWeb - " + self.current_db)
+
# file new menu is clicked
def onFileNew (self):
# populate the templates
tpls = biaweb_db.get_templates (self.current_db)
- for tpl_name, tpl_content in tpls:
- self.templates.addItem (str (tpl_name))
+ # if templates populated
+ if tpls:
+ for tpl_name, tpl_content in tpls:
+ self.templates.addItem (str (tpl_name))
+ else:
+ PyQt4.QtGui.QMessageBox.critical (self, "Error", "SQLite 3 error in retrieving templates")
def onEdit (self):
# get the currently selected list item
- tpl_name = str (self.templates.currentItem ().data (0).toString ())
+ sel_item = self.templates.currentItem ()
+ # if no item is selected return
+ if sel_item is None:
+ return
+ tpl_name = str (sel_item.data (0).toString ())
# get the template content from the database
tpl_str = biaweb_db.get_template_text (self.current_db, tpl_name)