From 9baa857a68ff9b3e9eaf77bbb7e5b08738de5eb6 Mon Sep 17 00:00:00 2001 From: Marc Schink Date: Wed, 30 Aug 2017 02:07:35 +0200 Subject: [PATCH] [httpupload] Use 'max-file-size' value for error message If a file is too large, use the 'max-file-size' value to generate an error message rather than using the error message provided by the XMPP server. This enables easy i18n of the error message and a human-readable file size. --- httpupload/httpupload.py | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/httpupload/httpupload.py b/httpupload/httpupload.py index b212030..e0c4980 100644 --- a/httpupload/httpupload.py +++ b/httpupload/httpupload.py @@ -248,12 +248,24 @@ class Base(object): IQ_CALLBACK[id_] = lambda stanza: self.received_slot(stanza, file) app.connections[self.account].connection.send(iq) + @staticmethod + def get_slot_error_message(stanza): + tmp = stanza.getTag('error').getTag('file-too-large') + + if tmp is not None: + max_file_size = int(tmp.getTag('max-file-size').getData()) + return _('File is too large, maximum allowed file size is: %s') % \ + GLib.format_size_full(max_file_size, + GLib.FormatSizeFlags.IEC_UNITS) + + return stanza.getErrorMsg() + def received_slot(self, stanza, file): log.info("Received slot") if stanza.getType() == 'error': file.progress.close_dialog() ErrorDialog(_('Could not request upload slot'), - stanza.getErrorMsg(), + self.get_slot_error_message(stanza), transient_for=file.control.parent_win.window) log.error(stanza) return