diff options
author | René 'Necoro' Neumann <necoro@necoro.net> | 2008-06-23 22:33:20 +0200 |
---|---|---|
committer | René 'Necoro' Neumann <necoro@necoro.net> | 2008-06-23 22:33:20 +0200 |
commit | 88d60d9f5082d6dd62778614681638415f25a8d6 (patch) | |
tree | 12c4863eed252b23d4ce4675b1a7c33abd2f158b /portato/gui/windows | |
parent | 84ce6de169ab527d8393bfe9da63944c550ee16a (diff) | |
parent | 0392a7dcbaa08cbc73e091422bf6f68dbfa8d7f6 (diff) | |
download | portato-88d60d9f5082d6dd62778614681638415f25a8d6.tar.gz portato-88d60d9f5082d6dd62778614681638415f25a8d6.tar.bz2 portato-88d60d9f5082d6dd62778614681638415f25a8d6.zip |
Added the possibility to directly mail bugs
Diffstat (limited to '')
-rw-r--r-- | portato/gui/windows/mailinfo.py | 86 | ||||
-rw-r--r-- | portato/gui/windows/main.py | 3 |
2 files changed, 87 insertions, 2 deletions
diff --git a/portato/gui/windows/mailinfo.py b/portato/gui/windows/mailinfo.py new file mode 100644 index 0000000..8e476c6 --- /dev/null +++ b/portato/gui/windows/mailinfo.py @@ -0,0 +1,86 @@ +# -*- coding: utf-8 -*- +# +# File: portato/gui/windows/mailinfo.py +# This file is part of the Portato-Project, a graphical portage-frontend. +# +# Copyright (C) 2008 René 'Necoro' Neumann +# This is free software. You may redistribute copies of it under the terms of +# the GNU General Public License version 2. +# There is NO WARRANTY, to the extent permitted by law. +# +# Written by René 'Necoro' Neumann <necoro@necoro.net> + +from __future__ import absolute_import + +import smtplib +import time + +from .basic import AbstractDialog +from ..utils import GtkThread +from ...helper import debug, info +from ...constants import VERSION + +class MailInfoWindow (AbstractDialog): + TO = "bugs@portato.necoro.net" + + def __init__ (self, parent, tb): + + AbstractDialog.__init__(self, parent) + + self.tb = tb + self.window.show_all() + + def set_data (self): + name = self.tree.get_widget("nameEntry").get_text() + addr = self.tree.get_widget("mailEntry").get_text() + + if not addr: + addr = self.TO + + if name: + fro = "%s <%s>" % (name, addr) + else: + fro = addr + + commentBuffer = self.tree.get_widget("commentEntry").get_buffer() + text = commentBuffer.get_text(*commentBuffer.get_bounds()) + + if text: + text += "\n\n===========\n" + + text += self.tb + + message = """From: %s +To: %s +Subject: %s +%s""" % ( fro, self.TO, ("[Bug Report] Bug in Portato %s" % VERSION), text) + + self.addr = addr + self.message = message + + def send (self): + debug("Connecting to server") + server = smtplib.SMTP("mail.necoro.eu") + debug("Sending mail") + try: + try: + server.sendmail(self.addr, self.TO, self.message) + except smtplib.SMTPRecipientsRefused, e: + info(_("An error occurred while sending. I think we where greylisted. The error: %s") % e) + info(_("Wait 60 seconds and try again.")) + time.sleep(60) + server.sendmail(self.addr, self.TO, self.message) + debug("Sent") + finally: + server.quit() + + def cb_cancel_clicked (self, *args): + + self.close() + return True + + def cb_send_clicked (self, *args): + self.set_data() + GtkThread(target = self.send, name = "Mail Send Thread").start() + self.close() + return True diff --git a/portato/gui/windows/main.py b/portato/gui/windows/main.py index b675d17..8e5eafb 100644 --- a/portato/gui/windows/main.py +++ b/portato/gui/windows/main.py @@ -30,11 +30,10 @@ from ...constants import CONFIG_LOCATION, VERSION, APP_ICON, ICON_DIR from ...backend.exceptions import PackageNotFoundException, BlockedException # more GUI stuff -from ..utils import Database, Config +from ..utils import Database, Config, GtkThread from ..queue import EmergeQueue from ..session import SESSION_VERSION, SessionException, OldSessionException, NewSessionException from ..wrapper import GtkTree, GtkConsole -from ..exception_handling import GtkThread from ..views import LogView, HighlightView, InstalledOnlyView from ..dialogs import (blocked_dialog, changed_flags_dialog, io_ex_dialog, nothing_found_dialog, queue_not_empty_dialog, remove_deps_dialog, |