From c8fab8cd56c88d2322104afc960c836a543cd3d6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9=20=27Necoro=27=20Neumann?= Date: Sun, 14 Mar 2010 20:02:03 +0100 Subject: Send more files for bug mails --- i18n/de.po | 97 +++++++++++++++++---------------- i18n/messages.pot | 84 ++++++++++++++-------------- portato/gui/templates/MailInfoWindow.ui | 38 +++++++++---- portato/gui/windows/mailinfo.py | 93 +++++++++++++++++++++++++------ 4 files changed, 194 insertions(+), 118 deletions(-) diff --git a/i18n/de.po b/i18n/de.po index b7add36..88783a9 100644 --- a/i18n/de.po +++ b/i18n/de.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: Portato\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-03-05 21:26+0100\n" -"PO-Revision-Date: 2010-03-05 21:27+0100\n" +"POT-Creation-Date: 2010-03-14 20:01+0100\n" +"PO-Revision-Date: 2010-03-14 20:01+0100\n" "Last-Translator: René 'Necoro' Neumann \n" "Language-Team: \n" "MIME-Version: 1.0\n" @@ -243,7 +243,7 @@ msgstr "Autor:" #: portato/gui/templates/PluginWindow.ui:141 #: portato/gui/windows/pkglist.py:59 -#: portato/gui/windows/main.py:830 +#: portato/gui/windows/main.py:843 #: portato/gui/windows/plugin.py:27 msgid "Enabled" msgstr "Aktiviert" @@ -297,15 +297,11 @@ msgstr "" "Kommentare /\n" "Vorgehensweise um den Bug zu erzeugen?" -#: portato/gui/templates/MailInfoWindow.ui:138 -msgid "Attach _Logfile" -msgstr "Hänge _Logdatei an" +#: portato/gui/templates/MailInfoWindow.ui:160 +msgid "These files will be sent:" +msgstr "Die folgenden Dateien werden geschickt:" -#: portato/gui/templates/MailInfoWindow.ui:142 -msgid "Attaches the logfile to the mail. This log only contains debug information." -msgstr "Hängt die Logdatei an die Mail an. In der Datei sind nur Debug-Informationen enthalten." - -#: portato/gui/templates/MailInfoWindow.ui:206 +#: portato/gui/templates/MailInfoWindow.ui:220 msgid "_Send" msgstr "_Send" @@ -350,7 +346,7 @@ msgid "Homepage:" msgstr "Homepage:" #: portato/gui/templates/MainWindow.ui:462 -#: portato/gui/windows/main.py:831 +#: portato/gui/windows/main.py:844 msgid "Installed" msgstr "Installiert" @@ -406,13 +402,13 @@ msgid "Remove the selected package from the queue" msgstr "Löscht das gewählte Paket aus der Queue" #: portato/gui/templates/MainWindow.ui:782 -#: portato/gui/windows/main.py:611 +#: portato/gui/windows/main.py:620 msgid "Queue" msgstr "Queue" #: portato/gui/templates/MainWindow.ui:806 -#: portato/gui/windows/main.py:1240 -#: portato/gui/windows/main.py:1242 +#: portato/gui/windows/main.py:1253 +#: portato/gui/windows/main.py:1255 msgid "Console" msgstr "Konsole" @@ -509,7 +505,7 @@ msgstr "" "Bitte führe emerge --sync && layman -S aus." #: portato/gui/dialogs.py:123 -#: portato/gui/windows/main.py:1289 +#: portato/gui/windows/main.py:1302 #, python-format msgid "No versions of package '%s' found!" msgstr "Keine Version vom Paket '%s' gefunden!" @@ -592,14 +588,15 @@ msgstr "Pakete mit Updates" msgid "World Packages" msgstr "Pakete in \"World\"" -#: portato/gui/windows/mailinfo.py:83 +#: portato/gui/windows/mailinfo.py:144 #, python-format msgid "An error occurred while sending. I think we were greylisted. The error: %s" msgstr "Während des Sendes trat ein Fehler auf. Wahrscheinlich wurden wir ge-greylistet. Der Fehler: %s" -#: portato/gui/windows/mailinfo.py:84 -msgid "Retrying after waiting 60 seconds." -msgstr "Wiederhole den Versuch nach einer 60s Pause." +#: portato/gui/windows/mailinfo.py:145 +#, python-format +msgid "Retrying after waiting %d seconds." +msgstr "Wiederhole den Versuch nach einer %ds Pause." #: portato/gui/windows/splash.py:35 #, python-format @@ -627,7 +624,7 @@ msgid "Package Set" msgstr "Paket-Set" #: portato/gui/windows/preference.py:259 -#: portato/gui/windows/main.py:833 +#: portato/gui/windows/main.py:846 #: portato/db/database.py:49 #: portato/db/database.py:50 msgid "Description" @@ -655,90 +652,90 @@ msgstr "Paket konnte nicht gefunden werden: %s" msgid "Masked by user" msgstr "Vom Benutzer maskiert" -#: portato/gui/windows/main.py:455 +#: portato/gui/windows/main.py:464 msgid "Loading Config" msgstr "Lade Konfiguration" -#: portato/gui/windows/main.py:467 +#: portato/gui/windows/main.py:476 msgid "Creating Database" msgstr "Erstelle Datenbank" -#: portato/gui/windows/main.py:471 +#: portato/gui/windows/main.py:480 msgid "Loading Plugins" msgstr "Lade Plugins" -#: portato/gui/windows/main.py:479 +#: portato/gui/windows/main.py:488 msgid "Building frontend" msgstr "Erstelle Oberfläche" -#: portato/gui/windows/main.py:545 +#: portato/gui/windows/main.py:554 msgid "Restoring Session" msgstr "Lade Session" -#: portato/gui/windows/main.py:555 +#: portato/gui/windows/main.py:564 msgid "Loading Plugin Widgets" msgstr "Lade GUI-Elemente der Plugins" -#: portato/gui/windows/main.py:558 +#: portato/gui/windows/main.py:567 msgid "Finishing startup" msgstr "Erledige letzte Handgriffe :)" -#: portato/gui/windows/main.py:614 +#: portato/gui/windows/main.py:623 msgid "Options" msgstr "Optionen" -#: portato/gui/windows/main.py:630 +#: portato/gui/windows/main.py:639 msgid "Categories" msgstr "Kategorien" -#: portato/gui/windows/main.py:689 +#: portato/gui/windows/main.py:698 msgid "Packages" msgstr "Pakete" -#: portato/gui/windows/main.py:724 +#: portato/gui/windows/main.py:733 #, python-format msgid "Package '%s/%s' is disabled." msgstr "Paket '%s/%s' wurde deaktiviert." -#: portato/gui/windows/main.py:741 +#: portato/gui/windows/main.py:750 msgid "Versions" msgstr "Versionen" -#: portato/gui/windows/main.py:744 +#: portato/gui/windows/main.py:753 msgid "Slot" msgstr "Slot" -#: portato/gui/windows/main.py:832 +#: portato/gui/windows/main.py:845 msgid "Flag" msgstr "Flag" -#: portato/gui/windows/main.py:856 +#: portato/gui/windows/main.py:869 msgid "This is an expanded use flag and cannot be selected" msgstr "Dies ist ein \"Expanded Use Flag\" und kann daher nicht ausgewählt werden." -#: portato/gui/windows/main.py:914 +#: portato/gui/windows/main.py:927 #, python-format msgid "Translating session from version %d to %d." msgstr "Upgrade Session von Version %d auf Version %d." -#: portato/gui/windows/main.py:917 +#: portato/gui/windows/main.py:930 #, python-format msgid "Cannot translate session from version %d to %d." msgstr "Kann Session nicht von Version %d nach %d upgraden." -#: portato/gui/windows/main.py:1425 +#: portato/gui/windows/main.py:1438 msgid "use flags" msgstr "Use Flags" -#: portato/gui/windows/main.py:1437 +#: portato/gui/windows/main.py:1450 msgid "masking keywords" msgstr "Masking Keywords" -#: portato/gui/windows/main.py:1838 +#: portato/gui/windows/main.py:1851 msgid "The portage tree is not existing." msgstr "Der Portage-Tree existiert nicht." -#: portato/gui/windows/main.py:1842 +#: portato/gui/windows/main.py:1855 msgid "The portage tree seems to be empty." msgstr "Der Portage-Tree scheint leer zu sein." @@ -942,22 +939,22 @@ msgstr "Leere Datenbank..." msgid "Populating database..." msgstr "Fülle Datenbank..." -#: portato/session.py:67 +#: portato/session.py:69 #, python-format msgid "Loading '%s' session from %s." msgstr "Lade '%s'-Session von %s." -#: portato/session.py:69 +#: portato/session.py:71 #, python-format msgid "Loading session from %s." msgstr "Lade Session von %s." -#: portato/session.py:141 +#: portato/session.py:139 #, python-format msgid "Saving '%s' session to %s." msgstr "Schreibe '%s'-Session nach %s." -#: portato/session.py:143 +#: portato/session.py:141 #, python-format msgid "Saving session to %s." msgstr "Schreibe Session nach %s." @@ -1115,6 +1112,14 @@ msgstr "Emerge fehlgeschlagen!" msgid "Error Code: %d" msgstr "Fehler-Code: %d" +#~ msgid "Attach _Logfile" +#~ msgstr "Hänge _Logdatei an" +#~ msgid "" +#~ "Attaches the logfile to the mail. This log only contains debug " +#~ "information." +#~ msgstr "" +#~ "Hängt die Logdatei an die Mail an. In der Datei sind nur Debug-" +#~ "Informationen enthalten." #~ msgid "Plu_gins" #~ msgstr "Plu_gins" #~ msgid "_File" diff --git a/i18n/messages.pot b/i18n/messages.pot index 26f1dd1..555837f 100644 --- a/i18n/messages.pot +++ b/i18n/messages.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-03-05 21:26+0100\n" +"POT-Creation-Date: 2010-03-14 20:01+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -239,7 +239,7 @@ msgid "Author:" msgstr "" #: portato/gui/templates/PluginWindow.ui:141 portato/gui/windows/pkglist.py:59 -#: portato/gui/windows/main.py:830 portato/gui/windows/plugin.py:27 +#: portato/gui/windows/main.py:843 portato/gui/windows/plugin.py:27 msgid "Enabled" msgstr "" @@ -284,16 +284,11 @@ msgid "" "what did you do to hit the bug?" msgstr "" -#: portato/gui/templates/MailInfoWindow.ui:138 -msgid "Attach _Logfile" +#: portato/gui/templates/MailInfoWindow.ui:160 +msgid "These files will be sent:" msgstr "" -#: portato/gui/templates/MailInfoWindow.ui:142 -msgid "" -"Attaches the logfile to the mail. This log only contains debug information." -msgstr "" - -#: portato/gui/templates/MailInfoWindow.ui:206 +#: portato/gui/templates/MailInfoWindow.ui:220 msgid "_Send" msgstr "" @@ -337,7 +332,7 @@ msgstr "" msgid "Homepage:" msgstr "" -#: portato/gui/templates/MainWindow.ui:462 portato/gui/windows/main.py:831 +#: portato/gui/templates/MainWindow.ui:462 portato/gui/windows/main.py:844 msgid "Installed" msgstr "" @@ -387,12 +382,12 @@ msgstr "" msgid "Remove the selected package from the queue" msgstr "" -#: portato/gui/templates/MainWindow.ui:782 portato/gui/windows/main.py:611 +#: portato/gui/templates/MainWindow.ui:782 portato/gui/windows/main.py:620 msgid "Queue" msgstr "" -#: portato/gui/templates/MainWindow.ui:806 portato/gui/windows/main.py:1240 -#: portato/gui/windows/main.py:1242 +#: portato/gui/templates/MainWindow.ui:806 portato/gui/windows/main.py:1253 +#: portato/gui/windows/main.py:1255 msgid "Console" msgstr "" @@ -485,7 +480,7 @@ msgid "" "Please run emerge --sync && layman -S." msgstr "" -#: portato/gui/dialogs.py:123 portato/gui/windows/main.py:1289 +#: portato/gui/dialogs.py:123 portato/gui/windows/main.py:1302 #, python-format msgid "No versions of package '%s' found!" msgstr "" @@ -573,14 +568,15 @@ msgstr "" msgid "World Packages" msgstr "" -#: portato/gui/windows/mailinfo.py:83 +#: portato/gui/windows/mailinfo.py:144 #, python-format msgid "" "An error occurred while sending. I think we were greylisted. The error: %s" msgstr "" -#: portato/gui/windows/mailinfo.py:84 -msgid "Retrying after waiting 60 seconds." +#: portato/gui/windows/mailinfo.py:145 +#, python-format +msgid "Retrying after waiting %d seconds." msgstr "" #: portato/gui/windows/splash.py:35 @@ -608,7 +604,7 @@ msgstr "" msgid "Package Set" msgstr "" -#: portato/gui/windows/preference.py:259 portato/gui/windows/main.py:833 +#: portato/gui/windows/preference.py:259 portato/gui/windows/main.py:846 #: portato/db/database.py:49 portato/db/database.py:50 msgid "Description" msgstr "" @@ -634,90 +630,90 @@ msgstr "" msgid "Masked by user" msgstr "" -#: portato/gui/windows/main.py:455 +#: portato/gui/windows/main.py:464 msgid "Loading Config" msgstr "" -#: portato/gui/windows/main.py:467 +#: portato/gui/windows/main.py:476 msgid "Creating Database" msgstr "" -#: portato/gui/windows/main.py:471 +#: portato/gui/windows/main.py:480 msgid "Loading Plugins" msgstr "" -#: portato/gui/windows/main.py:479 +#: portato/gui/windows/main.py:488 msgid "Building frontend" msgstr "" -#: portato/gui/windows/main.py:545 +#: portato/gui/windows/main.py:554 msgid "Restoring Session" msgstr "" -#: portato/gui/windows/main.py:555 +#: portato/gui/windows/main.py:564 msgid "Loading Plugin Widgets" msgstr "" -#: portato/gui/windows/main.py:558 +#: portato/gui/windows/main.py:567 msgid "Finishing startup" msgstr "" -#: portato/gui/windows/main.py:614 +#: portato/gui/windows/main.py:623 msgid "Options" msgstr "" -#: portato/gui/windows/main.py:630 +#: portato/gui/windows/main.py:639 msgid "Categories" msgstr "" -#: portato/gui/windows/main.py:689 +#: portato/gui/windows/main.py:698 msgid "Packages" msgstr "" -#: portato/gui/windows/main.py:724 +#: portato/gui/windows/main.py:733 #, python-format msgid "Package '%s/%s' is disabled." msgstr "" -#: portato/gui/windows/main.py:741 +#: portato/gui/windows/main.py:750 msgid "Versions" msgstr "" -#: portato/gui/windows/main.py:744 +#: portato/gui/windows/main.py:753 msgid "Slot" msgstr "" -#: portato/gui/windows/main.py:832 +#: portato/gui/windows/main.py:845 msgid "Flag" msgstr "" -#: portato/gui/windows/main.py:856 +#: portato/gui/windows/main.py:869 msgid "This is an expanded use flag and cannot be selected" msgstr "" -#: portato/gui/windows/main.py:914 +#: portato/gui/windows/main.py:927 #, python-format msgid "Translating session from version %d to %d." msgstr "" -#: portato/gui/windows/main.py:917 +#: portato/gui/windows/main.py:930 #, python-format msgid "Cannot translate session from version %d to %d." msgstr "" -#: portato/gui/windows/main.py:1425 +#: portato/gui/windows/main.py:1438 msgid "use flags" msgstr "" -#: portato/gui/windows/main.py:1437 +#: portato/gui/windows/main.py:1450 msgid "masking keywords" msgstr "" -#: portato/gui/windows/main.py:1838 +#: portato/gui/windows/main.py:1851 msgid "The portage tree is not existing." msgstr "" -#: portato/gui/windows/main.py:1842 +#: portato/gui/windows/main.py:1855 msgid "The portage tree seems to be empty." msgstr "" @@ -920,22 +916,22 @@ msgstr "" msgid "Populating database..." msgstr "" -#: portato/session.py:67 +#: portato/session.py:69 #, python-format msgid "Loading '%s' session from %s." msgstr "" -#: portato/session.py:69 +#: portato/session.py:71 #, python-format msgid "Loading session from %s." msgstr "" -#: portato/session.py:141 +#: portato/session.py:139 #, python-format msgid "Saving '%s' session to %s." msgstr "" -#: portato/session.py:143 +#: portato/session.py:141 #, python-format msgid "Saving session to %s." msgstr "" diff --git a/portato/gui/templates/MailInfoWindow.ui b/portato/gui/templates/MailInfoWindow.ui index 4551cdb..e3cdd1f 100644 --- a/portato/gui/templates/MailInfoWindow.ui +++ b/portato/gui/templates/MailInfoWindow.ui @@ -134,25 +134,39 @@ what did you do to hit the bug? - - Attach _Logfile + True - True - False - Attaches the logfile to the mail. This log only contains debug information. - True - True - True + 0 + none + + + True + 12 + + + True + True + False + False + False + + + + + + + + True + These files will be sent: + + + 2 4 5 - GTK_FILL - - - 5 diff --git a/portato/gui/windows/mailinfo.py b/portato/gui/windows/mailinfo.py index 0ee232a..6d6e93b 100644 --- a/portato/gui/windows/mailinfo.py +++ b/portato/gui/windows/mailinfo.py @@ -14,15 +14,41 @@ from __future__ import absolute_import, with_statement import smtplib, socket import time +import gtk, pango from email.mime.multipart import MIMEMultipart from email.mime.text import MIMEText +from os.path import basename from .basic import AbstractDialog from ..utils import GtkThread from ..dialogs import mail_failure_dialog from ...helper import debug, info -from ...constants import VERSION +from ...constants import VERSION, CONFIG_LOCATION from ...log import LOGFILE +from ... import session + +class ShowDialog (gtk.Dialog): + + def __init__(self, parent, f): + gtk.Dialog.__init__(self, f, parent, buttons = (gtk.STOCK_CLOSE, gtk.RESPONSE_CLOSE)) + + textview = gtk.TextView() + textview.set_editable(False) + textview.modify_font(pango.FontDescription("Monospace")) + textview.set_size_request(gtk.gdk.screen_width()/2, gtk.gdk.screen_height()/3) + + sw = gtk.ScrolledWindow(); + sw.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC) + sw.add(textview) + + self.vbox.add(sw) + + textbuffer = textview.get_buffer() + + with open(f) as text: + textbuffer.set_text(text.read()) + + self.vbox.show_all() class MailInfoWindow (AbstractDialog): TO = "bugs@portato.necoro.net" @@ -30,10 +56,42 @@ class MailInfoWindow (AbstractDialog): def __init__ (self, parent, tb): AbstractDialog.__init__(self, parent) + + self.files = [LOGFILE, CONFIG_LOCATION] + [s._file for s in session.sessionlist] + self.fileList = self.tree.get_widget("fileList") + self.build_file_list() self.tb = tb self.window.show_all() + def build_file_list(self): + store = gtk.ListStore(bool, str) + + for f in self.files: + store.append((True, f)) + + self.fileList.set_model(store) + cell = gtk.CellRendererText() + tCell = gtk.CellRendererToggle() + tCell.set_property("activatable", True) + tCell.connect("toggled", self.cb_file_toggled) + + self.fileList.append_column(gtk.TreeViewColumn(None, tCell, active = 0)) + self.fileList.append_column(gtk.TreeViewColumn(None, cell, text = 1)) + + def cb_file_toggled(self, cell, path): + store = self.fileList.get_model() + store[path][0] = not store[path][0] + return True + + def cb_file_clicked(self, view, path, *args): + store = view.get_model() + f = store[path][1] + + dialog = ShowDialog(self.window, f) + dialog.run() + dialog.destroy() + def set_data (self): self.message = MIMEMultipart() self.message["Subject"] = "[Bug Report] Bug in Portato %s" % VERSION @@ -63,13 +121,15 @@ class MailInfoWindow (AbstractDialog): txtmsg = MIMEText(text, "plain", "utf-8") self.message.attach(txtmsg) - # log - if self.tree.get_widget("logCheck").get_active(): - with open(LOGFILE, "r") as f: - log = MIMEText(f.read(), "plain", "utf-8") - log.add_header('Content-Disposition', 'attachment', filename='portato.log') + # logs + for (active, f) in self.fileList.get_model(): + if active: + debug("Attaching '%s'", f) + with open(f, "r") as text: + log = MIMEText(text.read(), "plain", "utf-8") + log.add_header('Content-Disposition', 'attachment', filename=basename(f)) - self.message.attach(log) + self.message.attach(log) def send (self): try: @@ -77,21 +137,22 @@ class MailInfoWindow (AbstractDialog): server = smtplib.SMTP("mail.necoro.eu") debug("Sending mail") try: - try: - server.sendmail(self.addr, self.TO, self.message.as_string()) - except smtplib.SMTPRecipientsRefused, e: - info(_("An error occurred while sending. I think we were greylisted. The error: %s") % e) - info(_("Retrying after waiting 60 seconds.")) - time.sleep(60) - server.sendmail(self.addr, self.TO, self.message.as_string()) - debug("Sent") + for i in range(5): # try 5 times at max + try: + server.sendmail(self.addr, self.TO, self.message.as_string()) + except smtplib.SMTPRecipientsRefused, e: + info(_("An error occurred while sending. I think we were greylisted. The error: %s") % e) + info(_("Retrying after waiting %d seconds."), 30) + time.sleep(30) + else: + debug("Sent") + break finally: server.quit() except socket.error, e: mail_failure_dialog("%s (Code: %s)" % (e.args[1], e.args[0])) def cb_cancel_clicked (self, *args): - self.close() return True -- cgit v1.2.3