Package omeroweb :: Package feedback :: Module sendfeedback
[hide private]
[frames] | no frames]

Source Code for Module omeroweb.feedback.sendfeedback

  1  #!/usr/bin/env python 
  2  # -*- coding: utf-8 -*- 
  3  #  
  4  #  
  5  #  
  6  # Copyright (c) 2008 University of Dundee.  
  7  #  
  8  # This program is free software: you can redistribute it and/or modify 
  9  # it under the terms of the GNU Affero General Public License as 
 10  # published by the Free Software Foundation, either version 3 of the 
 11  # License, or (at your option) any later version. 
 12  #  
 13  # This program is distributed in the hope that it will be useful, 
 14  # but WITHOUT ANY WARRANTY; without even the implied warranty of 
 15  # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the 
 16  # GNU Affero General Public License for more details. 
 17  #  
 18  # You should have received a copy of the GNU Affero General Public License 
 19  # along with this program.  If not, see <http://www.gnu.org/licenses/>. 
 20  #  
 21  # Author: Aleksandra Tarkowska <A(dot)Tarkowska(at)dundee(dot)ac(dot)uk>, 2008. 
 22  #  
 23  # Version: 1.0 
 24  # 
 25   
 26  import traceback 
 27  import logging 
 28  import httplib, urllib 
 29   
 30  from omero_version import omero_version 
 31   
 32  from email.MIMEMultipart import MIMEMultipart 
 33  from email.MIMEText import MIMEText 
 34  from email.MIMEImage import MIMEImage 
 35   
 36  from django.conf import settings 
 37   
 38  logger = logging.getLogger(__name__) 
 39   
40 -class SendFeedback(object):
41 42 feedback_url = settings.FEEDBACK_URL 43
44 - def send_feedback(self, feedback):
45 try: 46 conn = httplib.HTTPConnection(self.feedback_url) 47 try: 48 try: 49 p = {'error': feedback['error'], "app_name":feedback['app_name'], "app_version":feedback['app_version'], "extra":""} 50 if feedback['email'] is not None: 51 p['email'] = feedback['email'] 52 if feedback['comment'] is not None: 53 p['comment'] = feedback['comment'] 54 if feedback['env'] is not None: 55 try: 56 p['python_classpath'] = feedback['env']['path'] 57 except: 58 pass 59 try: 60 p['python_version'] = feedback['env']['python_version'] 61 except: 62 pass 63 try: 64 p['os_name'] = feedback['env']['platform'] 65 except: 66 pass 67 try: 68 p['os_arch'] = feedback['env']['arch'] 69 except: 70 pass 71 try: 72 p['os_version'] = feedback['env']['os_version'] 73 except: 74 pass 75 params = urllib.urlencode(p) 76 headers = {"Content-type": "application/x-www-form-urlencoded","Accept": "text/plain"} 77 conn.request("POST", "/qa/initial/", params, headers) 78 response = conn.getresponse() 79 80 if response.status == 200: 81 logger.info(response.read()) 82 else: 83 logger.error("Feedback server error: %s" % response.reason) 84 raise Exception("Feedback server error: %s" % response.reason) 85 except Exception, x: 86 logger.error("Feedback could not be sent.") 87 logger.error(traceback.format_exc()) 88 raise x 89 finally: 90 conn.close() 91 except Exception, x: 92 logger.error(x) 93 raise x
94
95 - def send_comment(self, feedback):
96 try: 97 conn = httplib.HTTPConnection(self.feedback_url) 98 try: 99 try: 100 p = {"comment":feedback['comment'], "app_name":feedback['app_name'], "app_version":feedback['app_version'], "extra":""} 101 if feedback['email'] is not None: 102 p['email'] = feedback['email'] 103 if feedback['env'] is not None: 104 try: 105 p['python_classpath'] = feedback['env']['path'] 106 except: 107 pass 108 try: 109 p['python_version'] = feedback['env']['python_version'] 110 except: 111 pass 112 try: 113 p['os_name'] = feedback['env']['platform'] 114 except: 115 pass 116 try: 117 p['os_arch'] = feedback['env']['arch'] 118 except: 119 pass 120 try: 121 p['os_version'] = feedback['env']['os_version'] 122 except: 123 pass 124 params = urllib.urlencode(p) 125 headers = {"Content-type": "application/x-www-form-urlencoded","Accept": "text/plain"} 126 conn.request("POST", "/qa/initial/", params, headers) 127 response = conn.getresponse() 128 129 if response.status == 200: 130 logger.info(response.read()) 131 else: 132 logger.error("Feedback server error: %s" % response.reason) 133 raise Exception("Feedback server error: %s" % response.reason) 134 except Exception, x: 135 logger.error("Feedback could not be sent.") 136 logger.error(traceback.format_exc()) 137 raise x 138 finally: 139 conn.close() 140 except Exception, x: 141 logger.error(x) 142 raise x
143
144 - def give_feedback(self, error, comment=None, email=None):
145 env = dict() 146 try: 147 import sys 148 env['path'] = sys.path 149 except: 150 pass 151 try: 152 import platform 153 env['platform'] = platform.platform() 154 except: 155 pass 156 try: 157 env['arch'] = platform.machine() 158 except: 159 pass 160 try: 161 env['os_version'] = platform.release() 162 except: 163 pass 164 try: 165 env['python_version'] = platform.python_version() 166 except: 167 pass 168 if len(env) == 0: 169 env = None 170 self.send_feedback({"email": email, "comment":comment, "error": error, "app_name": 6, "app_version": omero_version, "env":env})
171
172 - def give_comment(self, comment, email=None):
173 env = dict() 174 try: 175 import sys 176 env['path'] = sys.path 177 except: 178 pass 179 try: 180 import platform 181 env['platform'] = platform.platform() 182 except: 183 pass 184 try: 185 env['arch'] = platform.machine() 186 except: 187 pass 188 try: 189 env['os_version'] = platform.release() 190 except: 191 pass 192 try: 193 env['python_version'] = platform.python_version() 194 except: 195 pass 196 if len(env) == 0: 197 env = None 198 self.send_comment({"email": email, "comment":comment, "app_name": 6, "app_version": omero_version, "env":env})
199