Skip to content

Commit

Permalink
Restore compatibility with Qt5/Cura 3.x-4.x
Browse files Browse the repository at this point in the history
  • Loading branch information
fieldOfView committed Apr 23, 2022
1 parent a861f89 commit 5743173
Show file tree
Hide file tree
Showing 3 changed files with 46 additions and 23 deletions.
20 changes: 15 additions & 5 deletions DiscoverOctoPrintAction.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,11 @@
QSslConfiguration,
QSslSocket,
)

QNetworkAccessManagerOperations = QNetworkAccessManager.Operation
QNetworkRequestKnownHeaders = QNetworkRequest.KnownHeaders
QNetworkRequestAttributes = QNetworkRequest.Attribute

except ImportError:
from PyQt5.QtCore import pyqtSignal, pyqtProperty, pyqtSlot, QUrl, QObject, QTimer
from PyQt5.QtGui import QDesktopServices
Expand All @@ -33,6 +38,11 @@
QSslConfiguration,
QSslSocket,
)

QNetworkAccessManagerOperations = QNetworkAccessManager
QNetworkRequestKnownHeaders = QNetworkRequest
QNetworkRequestAttributes = QNetworkRequest

USE_QT5 = True

from .NetworkReplyTimeout import NetworkReplyTimeout
Expand Down Expand Up @@ -547,7 +557,7 @@ def _createAdditionalComponentsView(self) -> None:
)

def _onRequestFailed(self, reply: QNetworkReply) -> None:
if reply.operation() == QNetworkAccessManager.Operation.GetOperation:
if reply.operation() == QNetworkAccessManagerOperations.GetOperation:
if (
"api/settings" in reply.url().toString()
): # OctoPrint settings dump from /settings:
Expand All @@ -562,15 +572,15 @@ def _onRequestFailed(self, reply: QNetworkReply) -> None:
## Handler for all requests that have finished.
def _onRequestFinished(self, reply: QNetworkReply) -> None:

http_status_code = reply.attribute(QNetworkRequest.Attribute.HttpStatusCodeAttribute)
http_status_code = reply.attribute(QNetworkRequestAttributes.HttpStatusCodeAttribute)
if not http_status_code:
# Received no or empty reply
self._onRequestFailed(reply)
return

json_data = None

if reply.operation() == QNetworkAccessManager.Operation.PostOperation:
if reply.operation() == QNetworkAccessManagerOperations.PostOperation:
if (
"/plugin/appkeys/request" in reply.url().toString()
): # Initial AppKey request
Expand Down Expand Up @@ -602,7 +612,7 @@ def _onRequestFinished(self, reply: QNetworkReply) -> None:
if not self._appkey_request:
return
self._appkey_request.setUrl(
reply.header(QNetworkRequest.KnownHeaders.LocationHeader)
reply.header(QNetworkRequestKnownHeaders.LocationHeader)
)
self._appkey_request.setRawHeader(b"Content-Type", b"")
self._appkey_poll_timer.start()
Expand All @@ -620,7 +630,7 @@ def _onRequestFinished(self, reply: QNetworkReply) -> None:
)
self._appkey_request = None # type: Optional[QNetworkRequest]

if reply.operation() == QNetworkAccessManager.Operation.GetOperation:
if reply.operation() == QNetworkAccessManagerOperations.GetOperation:
if (
"/plugin/appkeys/probe" in reply.url().toString()
): # Probe for AppKey support
Expand Down
4 changes: 3 additions & 1 deletion NetworkMJPGImage.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
QSslConfiguration,
QSslSocket,
)
QNetworkRequestAttributes = QNetworkRequest.Attribute
except ImportError:
from PyQt5.QtCore import QUrl, pyqtProperty, pyqtSignal, pyqtSlot, QRect, QByteArray
from PyQt5.QtGui import QImage, QPainter
Expand All @@ -23,6 +24,7 @@
QSslConfiguration,
QSslSocket,
)
QNetworkRequestAttributes = QNetworkRequest.Attribute

from UM.Logger import Logger

Expand Down Expand Up @@ -118,7 +120,7 @@ def start(self) -> None:

self._image_request = QNetworkRequest(self._source_url)
try:
self._image_request.setAttribute(QNetworkRequest.FollowRedirectsAttribute, True)
self._image_request.setAttribute(QNetworkRequestAttributes.FollowRedirectsAttribute, True)
except AttributeError:
# in Qt6, this is no longer possible (or required), see https://doc.qt.io/qt-6/network-changes-qt6.html#redirect-policies
pass
Expand Down
45 changes: 28 additions & 17 deletions OctoPrintOutputDevice.py
Original file line number Diff line number Diff line change
Expand Up @@ -52,23 +52,34 @@
QCoreApplication,
)
from PyQt6.QtGui import QImage, QDesktopServices

QNetworkAccessManagerOperations = QNetworkAccessManager.Operation
QNetworkRequestKnownHeaders = QNetworkRequest.KnownHeaders
QNetworkRequestAttributes = QNetworkRequest.Attribute
QNetworkReplyNetworkErrors = QNetworkReply.NetworkError
except ImportError:
from PyQt6.QtNetwork import (
from PyQt5.QtNetwork import (
QHttpMultiPart,
QHttpPart,
QNetworkRequest,
QNetworkAccessManager,
)
from PyQt6.QtNetwork import QNetworkReply, QSslConfiguration, QSslSocket
from PyQt6.QtCore import (
from PyQt5.QtNetwork import QNetworkReply, QSslConfiguration, QSslSocket
from PyQt5.QtCore import (
QUrl,
QTimer,
pyqtSignal,
pyqtProperty,
pyqtSlot,
QCoreApplication,
)
from PyQt6.QtGui import QImage, QDesktopServices
from PyQt5.QtGui import QImage, QDesktopServices

QNetworkAccessManagerOperations = QNetworkAccessManager
QNetworkRequestKnownHeaders = QNetworkRequest
QNetworkRequestAttributes = QNetworkRequest
QNetworkReplyNetworkErrors = QNetworkReply

USE_QT5 = True

import json
Expand Down Expand Up @@ -913,15 +924,15 @@ def _sendCommandToApi(

## Handler for all requests that have finished.
def _onRequestFinished(self, reply: QNetworkReply) -> None:
if reply.error() == QNetworkReply.NetworkError.TimeoutError:
if reply.error() == QNetworkReplyNetworkErrors.TimeoutError:
Logger.log("w", "Received a timeout on a request to the instance")
self._connection_state_before_timeout = self._connection_state
self.setConnectionState(cast(ConnectionState, UnifiedConnectionState.Error))
return

if (
self._connection_state_before_timeout
and reply.error() == QNetworkReply.NetworkError.NoError
and reply.error() == QNetworkReplyNetworkErrors.NoError
):
# There was a timeout, but we got a correct answer again.
if self._last_response_time:
Expand All @@ -933,15 +944,15 @@ def _onRequestFinished(self, reply: QNetworkReply) -> None:
self.setConnectionState(self._connection_state_before_timeout)
self._connection_state_before_timeout = None

if reply.error() == QNetworkReply.NetworkError.NoError:
if reply.error() == QNetworkReplyNetworkErrors.NoError:
self._last_response_time = time()

http_status_code = reply.attribute(QNetworkRequest.Attribute.HttpStatusCodeAttribute)
http_status_code = reply.attribute(QNetworkRequestAttributes.HttpStatusCodeAttribute)
if not http_status_code:
# Received no or empty reply
return

if reply.operation() == QNetworkAccessManager.Operation.GetOperation:
if reply.operation() == QNetworkAccessManagerOperations.GetOperation:
if self._api_prefix + "printerprofiles" in reply.url().toString():
if http_status_code == 200:
try:
Expand Down Expand Up @@ -1362,7 +1373,7 @@ def _onRequestFinished(self, reply: QNetworkReply) -> None:
% end_point,
)

elif reply.operation() == QNetworkAccessManager.Operation.PostOperation:
elif reply.operation() == QNetworkAccessManagerOperations.PostOperation:
if (
self._api_prefix + "files" in reply.url().toString()
): # Result from /files command to start a print job:
Expand Down Expand Up @@ -1498,7 +1509,7 @@ def _onRequestFinished(self, reply: QNetworkReply) -> None:
error_string = bytes(reply.readAll()).decode("utf-8")
if not error_string:
error_string = reply.attribute(
QNetworkRequest.Attribute.HttpReasonPhraseAttribute
QNetworkRequestAttributes.HttpReasonPhraseAttribute
)

self._showErrorMessage(error_string)
Expand Down Expand Up @@ -1566,7 +1577,7 @@ def _onUploadFinished(self, reply: QNetworkReply) -> None:
error_string = bytes(reply.readAll()).decode("utf-8")
if not error_string:
error_string = reply.attribute(
QNetworkRequest.Attribute.HttpReasonPhraseAttribute
QNetworkRequestAttributes.HttpReasonPhraseAttribute
)

if error_string:
Expand All @@ -1580,7 +1591,7 @@ def _onUploadFinished(self, reply: QNetworkReply) -> None:
Logger.log("e", error_string)
return

location_url = reply.header(QNetworkRequest.KnownHeaders.LocationHeader)
location_url = reply.header(QNetworkRequestKnownHeaders.LocationHeader)
Logger.log(
"d", "Resource created on OctoPrint instance: %s", location_url.toString()
)
Expand Down Expand Up @@ -1781,7 +1792,7 @@ def _createEmptyRequest(
) -> QNetworkRequest:
request = QNetworkRequest(QUrl(self._api_url + target))
try:
request.setAttribute(QNetworkRequest.FollowRedirectsAttribute, True)
request.setAttribute(QNetworkRequestAttributes.FollowRedirectsAttribute, True)
except AttributeError:
# in Qt6, this is no longer possible (or required), see https://doc.qt.io/qt-6/network-changes-qt6.html#redirect-policies
pass
Expand All @@ -1790,7 +1801,7 @@ def _createEmptyRequest(
request.setRawHeader(b"User-Agent", self._user_agent.encode())

if content_type is not None:
request.setHeader(QNetworkRequest.KnownHeaders.ContentTypeHeader, content_type)
request.setHeader(QNetworkRequestKnownHeaders.ContentTypeHeader, content_type)

# ignore SSL errors (eg for self-signed certificates)
ssl_configuration = QSslConfiguration.defaultConfiguration()
Expand All @@ -1810,9 +1821,9 @@ def _createFormPart(

if not content_header.startswith("form-data;"):
content_header = "form-data; " + content_header
part.setHeader(QNetworkRequest.KnownHeaders.ContentDispositionHeader, content_header)
part.setHeader(QNetworkRequestKnownHeaders.ContentDispositionHeader, content_header)
if content_type is not None:
part.setHeader(QNetworkRequest.KnownHeaders.ContentTypeHeader, content_type)
part.setHeader(QNetworkRequestKnownHeaders.ContentTypeHeader, content_type)

part.setBody(data)
return part
Expand Down

0 comments on commit 5743173

Please sign in to comment.