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

Source Code for Module omeroweb.feedback.sendfeedback

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