Article creating and deleting implemented
[biaweb_qt.git] / main_window.py
index ff4f3cf..3e70b10 100644 (file)
@@ -18,7 +18,7 @@ class MainWindow (PyQt4.QtGui.QMainWindow, ui_main_window.Ui_MainWindow):
        # refresh the category list
        def repopulate_categories (self):
                recs = biaweb_db.get_categories (self.current_db)
-               if recs == False:
+               if not recs:
                        PyQt4.QtGui.QMessageBox.critical (self, "Error", "SQLite 3 error in getting the categories")
                        return
 
@@ -30,7 +30,7 @@ class MainWindow (PyQt4.QtGui.QMainWindow, ui_main_window.Ui_MainWindow):
        # refresh the articles list
        def repopulate_articles (self, catid=None):
                recs = biaweb_db.get_articles (self.current_db, catid)
-               if recs == False:
+               if not recs:
                        PyQt4.QtGui.QMessageBox.critical (self, "Error", "SQLite 3 error in getting the articles")
                        return
 
@@ -47,7 +47,7 @@ class MainWindow (PyQt4.QtGui.QMainWindow, ui_main_window.Ui_MainWindow):
 
        # when add article is triggered
        def onArticleAdd (self):
-               if self.current_db == None:
+               if self.current_db is None:
                        PyQt4.QtGui.QMessageBox.critical (self, "Error",
                                                        "Cannot create article. You need to create or open a website first")
                else:
@@ -60,7 +60,28 @@ class MainWindow (PyQt4.QtGui.QMainWindow, ui_main_window.Ui_MainWindow):
                        cats = biaweb_db.get_categories (self.current_db)
 
                        artdlg.populate_categories (cats, catid)
-                       artdlg.exec_ ()
+
+                       # if OK is pressed
+                       if artdlg.exec_ () == PyQt4.QtGui.QDialog.Accepted:
+                               title = str (artdlg.article_title.text ()).strip ()
+                               keywords = str (artdlg.keywords.text ()).strip ()
+                               summary = str (artdlg.summary.toPlainText ()).strip ()
+                               content = str (artdlg.content.toPlainText ()).strip ()
+                               catid, ok = artdlg.category.itemData (artdlg.category.currentIndex ()).toInt ()
+                               # if catid is not an integer then abort
+                               if not ok:
+                                       return
+                               rating = artdlg.rating.value ()
+                               stub = str (artdlg.stub.text ()).strip ()
+
+                               ret = biaweb_db.create_article (self.current_db, title, summary, keywords, content, catid,
+                                                                                               stub, rating)
+                               if ret:
+                                       PyQt4.QtGui.QMessageBox.information (self, "Success", "Article successfully created")
+                                       self.repopulate_categories ()
+                                       self.repopulate_articles (catid)
+                               else:
+                                       PyQt4.QtGui.QMessageBox.critical (self, "Error", "SQLite 3 error in creating article")
 
        # when edit article is triggered
        def onArticleEdit (self):
@@ -68,12 +89,36 @@ class MainWindow (PyQt4.QtGui.QMainWindow, ui_main_window.Ui_MainWindow):
 
        # when delete article is triggered
        def onArticleDelete (self):
-               pass
+               if self.current_db is None:
+                       PyQt4.QtGui.QMessageBox.critical (self, "Error",
+                                                       "Cannot delete article. You need to create or open a website first")
+               else:
+                       # get the selected article
+                       artid = self.get_selected_item_id (self.articles)
+                       catid = self.get_selected_item_id (self.categories)
+                       if artid is None:
+                               PyQt4.QtGui.QMessageBox.critical (self, "Error", "No article selected")
+                               return
+                       # get confirmation on delete
+                       conf = PyQt4.QtGui.QMessageBox.question (self, "Confirm",
+                                                       "Are you sure you wish to delete the selected article?",
+                                                       PyQt4.QtGui.QMessageBox.Yes, PyQt4.QtGui.QMessageBox.No)
+                       # confirmed
+                       if conf == PyQt4.QtGui.QMessageBox.Yes:
+                               ret = biaweb_db.delete_article (self.current_db, artid)
+                               if not ret:
+                                       PyQt4.QtGui.QMessageBox.critical (self, "Error", "SQLite 3 error in deleting article")
+                               else:
+                                       self.repopulate_articles (catid)
 
        # when category item is activated
        def onCategoryItemActivated (self):
                self.onCategoryEdit ()
 
+       # when article item is activated
+       def onArticleItemActivated (self):
+               self.onArticleEdit ()
+
        # when item selection is changed in categories tree widget
        def onCategorySelectionChanged (self):
                if self.current_db is not None:
@@ -82,14 +127,14 @@ class MainWindow (PyQt4.QtGui.QMainWindow, ui_main_window.Ui_MainWindow):
 
        # when configuration menu is activated
        def onConfiguration (self):
-               if self.current_db == None:
+               if self.current_db is None:
                        PyQt4.QtGui.QMessageBox.critical (self, "Error",
                                                        "Cannot edit configuration. You need to create or open a website first")
                else:
                        dlg = scd.SiteConfigDialog (self)
                        configs = biaweb_db.get_configuration (self.current_db)
 
-                       if configs == False:
+                       if not configs:
                                PyQt4.QtGui.QMessageBox.critical (self, "Error", "SQLite 3 error in reading configuration")
                                return
 
@@ -114,7 +159,7 @@ class MainWindow (PyQt4.QtGui.QMainWindow, ui_main_window.Ui_MainWindow):
                                # database update
                                flag = biaweb_db.set_configuration (self.current_db, site_title, site_url, keywords, description,
                                                                                        copyright, num_rss, destination)
-                               if flag == False:
+                               if not flag:
                                        PyQt4.QtGui.QMessageBox.critical (self, "Error",
                                                                                        "SQLite 3 error in updating configuration")
 
@@ -131,7 +176,7 @@ class MainWindow (PyQt4.QtGui.QMainWindow, ui_main_window.Ui_MainWindow):
        # category edit action
        def onCategoryEdit (self):
                # if no database is open
-               if self.current_db == None:
+               if self.current_db is None:
                        PyQt4.QtGui.QMessageBox.critical (self, "Error",
                                                        "Cannot edit category. You need to create or open a website first")
                # database is open
@@ -144,7 +189,7 @@ class MainWindow (PyQt4.QtGui.QMainWindow, ui_main_window.Ui_MainWindow):
                        else:
                                cat = biaweb_db.get_category (self.current_db, catid)
                                # if the category cannot be retrieved from database
-                               if cat == False:
+                               if not cat:
                                        PyQt4.QtGui.QMessageBox.critical (self, "Error", "SQLite 3 error reading category")
                                        return
 
@@ -162,8 +207,9 @@ class MainWindow (PyQt4.QtGui.QMainWindow, ui_main_window.Ui_MainWindow):
 
                                        ret = biaweb_db.update_category (self.current_db,
                                                                                                catid, category_name, category_desc, category_stub)
-                                       if ret == True:
+                                       if ret:
                                                PyQt4.QtGui.QMessageBox.information (self, "Success", "Category successfully updated")
+                                               self.repopulate_categories ()
                                        else:
                                                PyQt4.QtGui.QMessageBox.critical (self, "Error", "SQLite 3 error in updating category")
 
@@ -171,9 +217,9 @@ class MainWindow (PyQt4.QtGui.QMainWindow, ui_main_window.Ui_MainWindow):
        # category delete action
        def onCategoryDelete (self):
                # if there is no database
-               if self.current_db == None:
+               if self.current_db is None:
                        PyQt4.QtGui.QMessageBox.critical (self, "Error",
-                                                               "Cannot edit category. You need to create or open a website first")
+                                                               "Cannot delete category. You need to create or open a website first")
                else:
                        # get the selected category
                        catid = self.get_selected_item_id (self.categories)
@@ -188,7 +234,7 @@ class MainWindow (PyQt4.QtGui.QMainWindow, ui_main_window.Ui_MainWindow):
                                # if confirmed
                                if flag == PyQt4.QtGui.QMessageBox.Yes:
                                        ret = biaweb_db.remove_category (self.current_db, catid)
-                                       if ret == False:
+                                       if not ret:
                                                PyQt4.QtGui.QMessageBox.critical (self, "Error", "SQLite 3 error in deleting category")
                                        else:
                                                self.repopulate_categories ()
@@ -197,7 +243,7 @@ class MainWindow (PyQt4.QtGui.QMainWindow, ui_main_window.Ui_MainWindow):
        # category add action
        def onCategoryAdd (self):
                # if there is no database
-               if self.current_db == None:
+               if self.current_db is None:
                        PyQt4.QtGui.QMessageBox.critical (self, "Error",
                                                        "Cannot add category. You need to create or open a website first")
                else:
@@ -209,7 +255,7 @@ class MainWindow (PyQt4.QtGui.QMainWindow, ui_main_window.Ui_MainWindow):
                                cat_desc = str (dlg.category_desc.text ()).strip ()
                                cat_stub = str (dlg.category_stub.text ()).strip ()
                                ret = biaweb_db.create_category (self.current_db, cat_name, cat_desc, cat_stub)
-                               if ret == True:
+                               if ret:
                                        PyQt4.QtGui.QMessageBox.information (self, "Success", "Category successfully created")
                                        self.repopulate_categories ()
                                        self.repopulate_articles ()
@@ -246,7 +292,7 @@ class MainWindow (PyQt4.QtGui.QMainWindow, ui_main_window.Ui_MainWindow):
                                self.setWindowTitle ("BiaWeb - " + self.current_db)
                                flag = biaweb_db.create_db (self.current_db, site_title, site_url, keywords, description,
                                                                copyright, num_rss, destination)
-                               if flag == True:
+                               if flag:
                                        PyQt4.QtGui.QMessageBox.information (self, "Success",
                                                                                                                        "New site db successfully created")
                                        self.articles.clear ()