X-Git-Url: https://harishankar.org/repos/?p=biaweb_qt.git;a=blobdiff_plain;f=main_window.py;fp=main_window.py;h=6f033d6af2cb88fd19500cc268dc41f5b3aa6f6b;hp=3e70b10f4c95f8e276972100ed9d649a797ff43f;hb=e897998f0634d3518f069846c62592fe43dc63bf;hpb=5f4cc1e3f6bf2ffbf624dfc19d24c1b4eb2e15db diff --git a/main_window.py b/main_window.py index 3e70b10..6f033d6 100644 --- a/main_window.py +++ b/main_window.py @@ -67,14 +67,14 @@ class MainWindow (PyQt4.QtGui.QMainWindow, ui_main_window.Ui_MainWindow): 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 () + cid, 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, + ret = biaweb_db.create_article (self.current_db, title, summary, keywords, content, cid, stub, rating) if ret: PyQt4.QtGui.QMessageBox.information (self, "Success", "Article successfully created") @@ -85,7 +85,54 @@ class MainWindow (PyQt4.QtGui.QMainWindow, ui_main_window.Ui_MainWindow): # when edit article is triggered def onArticleEdit (self): - pass + if self.current_db is None: + PyQt4.QtGui.QMessageBox.critical (self, "Error", + "Cannot edit 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) + + # no article is selected + if artid is None: + PyQt4.QtGui.QMessageBox.critical (self, "Error", "No article selected") + return + article = biaweb_db.get_article (self.current_db, artid) + # if article cannot be read + if not article: + PyQt4.QtGui.QMessageBox.critical (self, "Error", "SQLite 3 error in reading article") + return + artdlg = artd.ArticleDialog (self) + + artdlg.article_title.setText (article[1]) + artdlg.summary.setPlainText (article[2]) + artdlg.keywords.setText (article[3]) + artdlg.content.setPlainText (article[4]) + # populate category combo box and set active category to the article's category + cats = biaweb_db.get_categories (self.current_db) + artdlg.populate_categories (cats, article[7]) + artdlg.stub.setText (article[8]) + artdlg.rating.setValue (article[9]) + + # ok is pressed + if artdlg.exec_ () == PyQt4.QtGui.QDialog.Accepted: + title = str (artdlg.article_title.text ()).strip () + summary = str (artdlg.summary.toPlainText ()).strip () + keywords = str (artdlg.keywords.text ()).strip () + content = str (artdlg.content.toPlainText ()).strip () + cid, ok = artdlg.category.itemData (artdlg.category.currentIndex()).toInt () + # if cat id is not an integer + if not ok: + return + rating = artdlg.rating.value () + stub = str (artdlg.stub.text ()).strip () + ret = biaweb_db.update_article (self.current_db, artid, title, + summary, keywords, content, cid, stub, rating) + if ret: + PyQt4.QtGui.QMessageBox.information (self, "Success", "Article successfully updated") + self.repopulate_articles (catid) + else: + PyQt4.QtGui.QMessageBox.critical (self, "Error", "SQLite 3 error in updating article") # when delete article is triggered def onArticleDelete (self): @@ -100,11 +147,11 @@ class MainWindow (PyQt4.QtGui.QMainWindow, ui_main_window.Ui_MainWindow): PyQt4.QtGui.QMessageBox.critical (self, "Error", "No article selected") return # get confirmation on delete - conf = PyQt4.QtGui.QMessageBox.question (self, "Confirm", + flag = 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: + if flag == 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") @@ -190,7 +237,7 @@ class MainWindow (PyQt4.QtGui.QMainWindow, ui_main_window.Ui_MainWindow): cat = biaweb_db.get_category (self.current_db, catid) # if the category cannot be retrieved from database if not cat: - PyQt4.QtGui.QMessageBox.critical (self, "Error", "SQLite 3 error reading category") + PyQt4.QtGui.QMessageBox.critical (self, "Error", "SQLite 3 error in reading category") return # set the data in the dialog