aboutsummaryrefslogtreecommitdiffstats
path: root/sources/pyside2/doc/tutorials/qmlsqlintegration/sqlDialog.py
diff options
context:
space:
mode:
Diffstat (limited to 'sources/pyside2/doc/tutorials/qmlsqlintegration/sqlDialog.py')
-rw-r--r--sources/pyside2/doc/tutorials/qmlsqlintegration/sqlDialog.py146
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()