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/mailinfo.py | |
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 'portato/gui/windows/mailinfo.py')
-rw-r--r-- | portato/gui/windows/mailinfo.py | 86 |
1 files changed, 86 insertions, 0 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 |