Trees | Indices | Help |
|
---|
|
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 ''' A view functions is simply a Python function that takes a Web request and 26 returns a Web response. This response can be the HTML contents of a Web page, 27 or a redirect, or the 404 and 500 error, or an XML document, or an image... 28 or anything.''' 29 30 import sys 31 import locale 32 import datetime 33 import traceback 34 import logging 35 36 from django.conf import settings 37 from django.core import template_loader 38 from django.http import HttpResponse, HttpResponseRedirect 39 from django.shortcuts import render_to_response 40 from django.template import RequestContext as Context 41 from django.views.defaults import page_not_found, server_error 42 from django.views import debug 43 from django.core.urlresolvers import reverse 44 45 from omeroweb.feedback.sendfeedback import SendFeedback 46 from omeroweb.feedback.forms import ErrorForm, CommentForm 47 48 logger = logging.getLogger('views-feedback') 49 50 ############################################################################### 5355 error = None 56 form = ErrorForm(data=request.REQUEST.copy()) 57 if form.is_valid(): 58 error = request.REQUEST['error'] 59 comment = None 60 if request.REQUEST.get('comment',None) is not None and request.REQUEST['comment'] != "": 61 comment = request.REQUEST['comment'] 62 email = None 63 if request.REQUEST.get('email', None) is not None and request.REQUEST['email'] != "": 64 email = request.REQUEST['email'] 65 try: 66 sf = SendFeedback() 67 sf.give_feedback(error, comment, email) 68 except: 69 logger.error('handler500: Feedback could not be sent') 70 logger.error(traceback.format_exc()) 71 error = "Feedback could not been sent. Please contact administrator." 72 fileObj = open(("%s/error500-%s.html" % (settings.LOGDIR, datetime.datetime.now())),"w") 73 try: 74 try: 75 fileObj.write(request.REQUEST['error']) 76 except: 77 logger.error('handler500: Error could not be saved.') 78 logger.error(traceback.format_exc()) 79 finally: 80 fileObj.close() 81 82 return HttpResponseRedirect(reverse("fthanks")) 83 84 context = {'form':form, 'error':error} 85 t = template_loader.get_template('500.html') 86 c = Context(request, context) 87 return HttpResponse(t.render(c))8890 error = None 91 form = CommentForm() 92 93 if request.method == "POST": 94 form = CommentForm(data=request.REQUEST.copy()) 95 if form.is_valid(): 96 comment = request.REQUEST['comment'] 97 email = None 98 if request.REQUEST['email'] is not None or request.REQUEST['email'] != "": 99 email = request.REQUEST['email'] 100 try: 101 sf = SendFeedback() 102 sf.give_comment(comment, email) 103 except: 104 logger.error('handler500: Feedback could not be sent') 105 logger.error(traceback.format_exc()) 106 error = "Feedback could not been sent. Please contact administrator." 107 else: 108 return HttpResponseRedirect(reverse("fthanks")) 109 110 context = {'form':form, 'error':error} 111 t = template_loader.get_template('comment.html') 112 c = Context(request, context) 113 return HttpResponse(t.render(c))114116 """ 117 Custom 500 error handler. 118 119 Templates: `500.html` 120 Context: ErrorForm 121 """ 122 form = ErrorForm(initial={'error':error500}) 123 context = {'form':form} 124 t = template_loader.get_template('500.html') 125 c = Context(request, context) 126 return HttpResponse(t.render(c))127 128 ################################################################################ 129 # handlers 130132 logger.error('handler500: Server error') 133 as_string = '\n'.join(traceback.format_exception(*sys.exc_info())) 134 logger.error(as_string) 135 136 try: 137 request_repr = repr(request) 138 except: 139 request_repr = "Request repr() unavailable" 140 141 error500 = "%s\n\n%s" % (as_string, request_repr) 142 143 return custom_server_error(request, error500)144146 logger.error('handler404: Page not found') 147 as_string = '\n'.join(traceback.format_exception(*sys.exc_info())) 148 logger.error(as_string) 149 150 try: 151 request_repr = repr(request) 152 except: 153 request_repr = "Request repr() unavailable" 154 155 error404 = "%s\n\n%s" % (as_string, request_repr) 156 157 return page_not_found(request, "404.html")158160 template = "error.html" 161 context = {"error":error} 162 return render_to_response(template,context)163
Trees | Indices | Help |
|
---|
Generated by Epydoc 3.0.1 on Tue Jan 24 19:49:45 2012 | http://epydoc.sourceforge.net |