diff options
Diffstat (limited to 'sources/pyside2/doc/tutorials/qmlsqlintegration/sqlDialog.py')
-rw-r--r-- | sources/pyside2/doc/tutorials/qmlsqlintegration/sqlDialog.py | 146 |
1 files changed, 0 insertions, 146 deletions
diff --git a/sources/pyside2/doc/tutorials/qmlsqlintegration/sqlDialog.py b/sources/pyside2/doc/tutorials/qmlsqlintegration/sqlDialog.py deleted file mode 100644 index 6a9ff8234..000000000 --- a/sources/pyside2/doc/tutorials/qmlsqlintegration/sqlDialog.py +++ /dev/null @@ -1,146 +0,0 @@ -############################################################################# -## -## Copyright (C) 2019 The Qt Company Ltd. -## Contact: https://www.qt.io/licensing/ -## -## This file is part of the Qt for Python project. -## -## $QT_BEGIN_LICENSE:LGPL$ -## Commercial License Usage -## Licensees holding valid commercial Qt licenses may use this file in -## accordance with the commercial license agreement provided with the -## Software or, alternatively, in accordance with the terms contained in -## a written agreement between you and The Qt Company. For licensing terms -## and conditions see https://www.qt.io/terms-conditions. For further -## information use the contact form at https://www.qt.io/contact-us. -## -## GNU Lesser General Public License Usage -## Alternatively, this file may be used under the terms of the GNU Lesser -## General Public License version 3 as published by the Free Software -## Foundation and appearing in the file LICENSE.LGPL3 included in the -## packaging of this file. Please review the following information to -## ensure the GNU Lesser General Public License version 3 requirements -## will be met: https://www.gnu.org/licenses/lgpl-3.0.html. -## -## GNU General Public License Usage -## Alternatively, this file may be used under the terms of the GNU -## General Public License version 2.0 or (at your option) the GNU General -## Public license version 3 or any later version approved by the KDE Free -## Qt Foundation. The licenses are as published by the Free Software -## Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 -## included in the packaging of this file. Please review the following -## information to ensure the GNU General Public License requirements will -## be met: https://www.gnu.org/licenses/gpl-2.0.html and -## https://www.gnu.org/licenses/gpl-3.0.html. -## -## $QT_END_LICENSE$ -## -############################################################################# - -import datetime -import logging - -from PySide2.QtCore import Qt, Slot -from PySide2.QtSql import QSqlDatabase, QSqlQuery, QSqlRecord, QSqlTableModel - -table_name = "Conversations" - - -def createTable(): - if table_name in QSqlDatabase.database().tables(): - return - - query = QSqlQuery() - if not query.exec_( - """ - CREATE TABLE IF NOT EXISTS 'Conversations' ( - 'author' TEXT NOT NULL, - 'recipient' TEXT NOT NULL, - 'timestamp' TEXT NOT NULL, - 'message' TEXT NOT NULL, - FOREIGN KEY('author') REFERENCES Contacts ( name ), - FOREIGN KEY('recipient') REFERENCES Contacts ( name ) - ) - """ - ): - logging.error("Failed to query database") - - # This adds the first message from the Bot - # and further development is required to make it interactive. - query.exec_( - """ - INSERT INTO Conversations VALUES( - 'machine', 'Me', '2019-01-07T14:36:06', 'Hello!' - ) - """ - ) - logging.info(query) - - -class SqlConversationModel(QSqlTableModel): - def __init__(self, parent=None): - super(SqlConversationModel, self).__init__(parent) - - createTable() - self.setTable(table_name) - self.setSort(2, Qt.DescendingOrder) - self.setEditStrategy(QSqlTableModel.OnManualSubmit) - self.recipient = "" - - self.select() - logging.debug("Table was loaded successfully.") - - def setRecipient(self, recipient): - if recipient == self.recipient: - pass - - self.recipient = recipient - - filter_str = ( - "(recipient = '{}' AND author = 'Me') OR " "(recipient = 'Me' AND author='{}')" - ).format(self.recipient) - self.setFilter(filter_str) - self.select() - - def data(self, index, role): - if role < Qt.UserRole: - return QSqlTableModel.data(self, index, role) - - sql_record = QSqlRecord() - sql_record = self.record(index.row()) - - return sql_record.value(role - Qt.UserRole) - - def roleNames(self): - """Converts dict to hash because that's the result expected - by QSqlTableModel""" - names = {} - author = "author".encode() - recipient = "recipient".encode() - timestamp = "timestamp".encode() - message = "message".encode() - - names[hash(Qt.UserRole)] = author - names[hash(Qt.UserRole + 1)] = recipient - names[hash(Qt.UserRole + 2)] = timestamp - names[hash(Qt.UserRole + 3)] = message - - return names - - def send_message(self, recipient, message, author): - timestamp = datetime.datetime.now() - - new_record = self.record() - new_record.setValue("author", author) - new_record.setValue("recipient", recipient) - new_record.setValue("timestamp", str(timestamp)) - new_record.setValue("message", message) - - logging.debug('Message: "{}" \n Received by: "{}"'.format(message, recipient)) - - if not self.insertRecord(self.rowCount(), new_record): - logging.error("Failed to send message: {}".format(self.lastError().text())) - return - - self.submitAll() - self.select() |