From cae66b7a586d64c34c010c16affad371ed0b21ce Mon Sep 17 00:00:00 2001 From: Etoh Date: Sun, 16 Apr 2017 12:11:35 +0100 Subject: [PATCH] Move from @requireMinServerVersion to @requireServerVersion and apply to sendChat --- syncplay/client.py | 37 ++++++++++++++++++++----------------- syncplay/messages_de.py | 8 +++++++- syncplay/messages_en.py | 7 ++++++- syncplay/messages_ru.py | 8 +++++++- 4 files changed, 40 insertions(+), 20 deletions(-) diff --git a/syncplay/client.py b/syncplay/client.py index 9db333a..1d77b51 100644 --- a/syncplay/client.py +++ b/syncplay/client.py @@ -585,11 +585,6 @@ class SyncplayClient(object): self.userlist.currentUser.room = roomName if resetAutoplay: self.resetAutoPlayState() - - def sendChat(self,message): - if self._protocol and self._protocol.logged: - message = utils.truncateText(message,constants.MAX_CHAT_MESSAGE_LENGTH) - self._protocol.sendChatMessage(message) def sendRoom(self): room = self.userlist.currentUser.room @@ -685,19 +680,27 @@ class SyncplayClient(object): if promptForAction: self.ui.promptFor(getMessage("enter-to-exit-prompt")) - def requireMinServerVersion(minVersion): - def requireMinVersionDecorator(f): + def requireServerFeature(featureRequired): + def requireServerFeatureDecorator(f): @wraps(f) def wrapper(self, *args, **kwds): - if not utils.meetsMinVersion(self.serverVersion,minVersion): - if self.serverVersion != "0.0.0": - self.ui.showErrorMessage(getMessage("not-supported-by-server-error").format(minVersion, self.serverVersion)) - else: - self.ui.showDebugMessage("Tried to check server version too soon (threshold: {})".format(minVersion)) + if self.serverVersion == "0.0.0": + self.ui.showDebugMessage( + "Tried to check server version too soon (testing support for: {})".format(featureRequired)) + return None + if not self.serverFeatures.has_key(featureRequired) or not self.serverFeatures[featureRequired]: + featureName = getMessage(u"feature-{}".format(featureRequired)) + self.ui.showErrorMessage(getMessage("not-supported-by-server-error").format(featureName)) return return f(self, *args, **kwds) return wrapper - return requireMinVersionDecorator + return requireServerFeatureDecorator + + @requireServerFeature("chat") + def sendChat(self,message): + if self._protocol and self._protocol.logged: + message = utils.truncateText(message,constants.MAX_CHAT_MESSAGE_LENGTH) + self._protocol.sendChatMessage(message) def changePlaylistEnabledState(self, newState): oldState = self.sharedPlaylistIsEnabled() @@ -777,11 +780,11 @@ class SyncplayClient(object): self.ui.updateAutoPlayState(False) self.stopAutoplayCountdown() - @requireMinServerVersion(constants.USER_READY_MIN_VERSION) + @requireServerFeature("readiness") def toggleReady(self, manuallyInitiated=True): self._protocol.setReady(not self.userlist.currentUser.isReady(), manuallyInitiated) - @requireMinServerVersion(constants.USER_READY_MIN_VERSION) + @requireServerFeature("readiness") def changeReadyState(self, newState, manuallyInitiated=True): oldState = self.userlist.currentUser.isReady() if newState != oldState: @@ -796,7 +799,7 @@ class SyncplayClient(object): if oldReadyState != isReady: self._warnings.checkReadyStates() - @requireMinServerVersion(constants.CONTROLLED_ROOMS_MIN_VERSION) + @requireServerFeature("managedRooms") def createControlledRoom(self, roomName): controlPassword = utils.RandomStringGenerator.generate_room_password() self.lastControlPasswordAttempt = controlPassword @@ -815,7 +818,7 @@ class SyncplayClient(object): else: return "" - @requireMinServerVersion(constants.CONTROLLED_ROOMS_MIN_VERSION) + @requireServerFeature("managedRooms") def identifyAsController(self, controlPassword): controlPassword = self.stripControlPassword(controlPassword) self.ui.showMessage(getMessage("identifying-as-controller-notification").format(controlPassword)) diff --git a/syncplay/messages_de.py b/syncplay/messages_de.py index c35603f..e10c93b 100644 --- a/syncplay/messages_de.py +++ b/syncplay/messages_de.py @@ -134,7 +134,13 @@ de = { "vlc-failed-versioncheck": u"Diese VLC-Version wird von Syncplay nicht unterstützt. Bitte nutze VLC 2.0", "vlc-failed-other" : u"Beim Laden des syncplay.lua Interface-Skripts durch VLC trat folgender Fehler auf: {}", # Syncplay Error - "not-supported-by-server-error" : u"Dieses Feature wird vom Server nicht unterstützt. Es wird ein Server mit Syncplay Version {}+ benötigt, aktuell verwendet wird jedoch Version {}.", #minVersion, serverVersion + "feature-sharedPlaylists": u"shared playlists", # used for not-supported-by-server-error # TODO: Translate + "feature-chat": u"chat", # used for not-supported-by-server-error # TODO: Translate + "feature-readiness": u"readiness", # used for not-supported-by-server-error # TODO: Translate + "feature-managedRooms": u"managed rooms", # used for not-supported-by-server-error # TODO: Translate + + "not-supported-by-server-error": u"The {} feature is not supported by this server..", # feature # TODO: Translate + #OLD TRANSLATION: "not-supported-by-server-error" : u"Dieses Feature wird vom Server nicht unterstützt. Es wird ein Server mit Syncplay Version {}+ benötigt, aktuell verwendet wird jedoch Version {}.", #minVersion, serverVersion "shared-playlists-not-supported-by-server-error" : "The shared playlists feature may not be supported by the server. To ensure that it works correctly requires a server running Syncplay {}+, but the server is running Syncplay {}.", #minVersion, serverVersion # TODO: Translate "shared-playlists-disabled-by-server-error" : "The shared playlist feature has been disabled in the server configuration. To use this feature you will need to connect to a different server.", # TODO: Translate diff --git a/syncplay/messages_en.py b/syncplay/messages_en.py index 768193a..3883185 100644 --- a/syncplay/messages_en.py +++ b/syncplay/messages_en.py @@ -132,7 +132,12 @@ en = { "vlc-failed-noscript": "VLC has reported that the syncplay.lua interface script has not been installed. Please refer to http://syncplay.pl/LUA/ for instructions.", "vlc-failed-versioncheck": "This version of VLC is not supported by Syncplay.", - "not-supported-by-server-error" : "This feature is not supported by the server. The feature requires a server running Syncplay {}+, but the server is running Syncplay {}.", #minVersion, serverVersion + "feature-sharedPlaylists" : u"shared playlists", # used for not-supported-by-server-error + "feature-chat" : u"chat", # used for not-supported-by-server-error + "feature-readiness" : u"readiness", # used for not-supported-by-server-error + "feature-managedRooms" : u"managed rooms", # used for not-supported-by-server-error + + "not-supported-by-server-error" : u"The {} feature is not supported by this server..", #feature "shared-playlists-not-supported-by-server-error" : "The shared playlists feature may not be supported by the server. To ensure that it works correctly requires a server running Syncplay {}+, but the server is running Syncplay {}.", #minVersion, serverVersion "shared-playlists-disabled-by-server-error" : "The shared playlist feature has been disabled in the server configuration. To use this feature you will need to connect to a different server.", diff --git a/syncplay/messages_ru.py b/syncplay/messages_ru.py index 9746c17..33db39c 100644 --- a/syncplay/messages_ru.py +++ b/syncplay/messages_ru.py @@ -134,7 +134,13 @@ ru = { "vlc-failed-versioncheck" : u"Данная версия VLC не поддерживается Syncplay. Пожалуйста, используйте VLC версии 2 или выше.", "vlc-failed-other" : u"Во время загрузки скрипта интерфейса syncplay.lua в VLC произошла следующая ошибка: {}", # Syncplay Error - "not-supported-by-server-error" : u"Эта возможность не поддерживается сервером. Требуется сервер Syncplay {}+, вы подключены к серверу Syncplay {}.", #minVersion, serverVersion + "feature-sharedPlaylists": u"shared playlists", # used for not-supported-by-server-error # TODO: Translate + "feature-chat": u"chat", # used for not-supported-by-server-error # TODO: Translate + "feature-readiness": u"readiness", # used for not-supported-by-server-error # TODO: Translate + "feature-managedRooms": u"managed rooms", # used for not-supported-by-server-error # TODO: Translate + + "not-supported-by-server-error": u"The {} feature is not supported by this server..", # feature # TODO: Translate + #OLD TRANSLATION: "not-supported-by-server-error" : u"Эта возможность не поддерживается сервером. Требуется сервер Syncplay {}+, вы подключены к серверу Syncplay {}.", #minVersion, serverVersion "shared-playlists-not-supported-by-server-error" : u"Общие списки воспроизведения могут не поддерживаться сервером. Для корректной работы требуется сервер Syncplay {}+, вы подключены к серверу Syncplay {}.", #minVersion, serverVersion "shared-playlists-disabled-by-server-error" : "The shared playlist feature has been disabled in the server configuration. To use this feature you will need to connect to a different server.", # TODO: Translate