summaryrefslogtreecommitdiff
path: root/portato/gui/windows/mailinfo.py
diff options
context:
space:
mode:
authorRené 'Necoro' Neumann <necoro@necoro.net>2008-06-23 22:33:20 +0200
committerRené 'Necoro' Neumann <necoro@necoro.net>2008-06-23 22:33:20 +0200
commit88d60d9f5082d6dd62778614681638415f25a8d6 (patch)
tree12c4863eed252b23d4ce4675b1a7c33abd2f158b /portato/gui/windows/mailinfo.py
parent84ce6de169ab527d8393bfe9da63944c550ee16a (diff)
parent0392a7dcbaa08cbc73e091422bf6f68dbfa8d7f6 (diff)
downloadportato-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.py86
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