From 82743be05a64b4c3bc4d3ef1df6b533400703969 Mon Sep 17 00:00:00 2001 From: richardbarran Date: Sat, 31 Oct 2009 19:16:27 +0000 Subject: [PATCH] Don't trap exceptions in the AJAX call handling code - let them propagate. git-svn-id: http://django-jqchat.googlecode.com/svn/trunk@14 8369a704-5b4a-11de-992f-fdd7e25b9163 --- jqchat/views.py | 114 +++++++++++++++++++++++------------------------- 1 file changed, 55 insertions(+), 59 deletions(-) diff --git a/jqchat/views.py b/jqchat/views.py index 1fb4c54..ea9a2b0 100644 --- a/jqchat/views.py +++ b/jqchat/views.py @@ -76,68 +76,64 @@ class Ajax(object): # Instead they have to be attached to child classes. def __call__(self, request, id): - try: - if not request.user.is_authenticated(): - return HttpResponseBadRequest('You need to be logged in to access the chat system.') - - StatusCode = 0 # Default status code is 0 i.e. no new data. - self.request = request - self.request_time = int(self.request.REQUEST['time']) - self.ThisRoom = Room.objects.get(id=id) - NewDescription = None + if not request.user.is_authenticated(): + return HttpResponseBadRequest('You need to be logged in to access the chat system.') - if self.request.method == "POST": - # User has sent new data. - action = self.request.POST['action'] - - if action == 'postmsg': - msg_text = self.request.POST['message'] - - if len(msg_text.strip()) > 0: # Ignore empty strings. - Message.objects.create_message(self.request.user, self.ThisRoom, escape(msg_text)) - else: - # If a GET, make sure that no action was specified. - if self.request.GET.get('action', None): - return HttpResponseBadRequest('Need to POST if you want to send data.') + StatusCode = 0 # Default status code is 0 i.e. no new data. + self.request = request + self.request_time = int(self.request.REQUEST['time']) + self.ThisRoom = Room.objects.get(id=id) + NewDescription = None + + if self.request.method == "POST": + # User has sent new data. + action = self.request.POST['action'] - # If using Pinax we can get the user's timezone. - try: - user_tz = self.request.user.account_set.all()[0].timezone - except: - user_tz = settings.TIME_ZONE - - # Extra JSON string to be spliced into the response. - CustomPayload = self.ExtraHandling() - if CustomPayload: - StatusCode = 1 - - # Get new messages - do this last in case the ExtraHandling has itself generated - # new messages. - NewMessages = self.ThisRoom.message_set.filter(unix_timestamp__gt=self.request_time) - if NewMessages: - StatusCode = 1 - - # Only keep the last X messages. - l = len(NewMessages) - if l > JQCHAT_DISPLAY_COUNT: - NewMessages = NewMessages[l-JQCHAT_DISPLAY_COUNT:] - - response = render_to_response('jqchat/chat_payload.json', - {'current_unix_timestamp': int(time.time()), - 'NewMessages': NewMessages, - 'StatusCode': StatusCode, - 'NewDescription': NewDescription, - 'user_tz': user_tz, - 'CustomPayload': CustomPayload, - 'TimeDisplayFormat': DATE_FORMAT - }, - context_instance=RequestContext(self.request)) - response['Content-Type'] = 'text/plain; charset=utf-8' - response['Cache-Control'] = 'no-cache' - return response + if action == 'postmsg': + msg_text = self.request.POST['message'] + + if len(msg_text.strip()) > 0: # Ignore empty strings. + Message.objects.create_message(self.request.user, self.ThisRoom, escape(msg_text)) + else: + # If a GET, make sure that no action was specified. + if self.request.GET.get('action', None): + return HttpResponseBadRequest('Need to POST if you want to send data.') + + # If using Pinax we can get the user's timezone. + try: + user_tz = self.request.user.account_set.all()[0].timezone except: - import traceback - print traceback.format_exc() + user_tz = settings.TIME_ZONE + + # Extra JSON string to be spliced into the response. + CustomPayload = self.ExtraHandling() + if CustomPayload: + StatusCode = 1 + + # Get new messages - do this last in case the ExtraHandling has itself generated + # new messages. + NewMessages = self.ThisRoom.message_set.filter(unix_timestamp__gt=self.request_time) + if NewMessages: + StatusCode = 1 + + # Only keep the last X messages. + l = len(NewMessages) + if l > JQCHAT_DISPLAY_COUNT: + NewMessages = NewMessages[l-JQCHAT_DISPLAY_COUNT:] + + response = render_to_response('jqchat/chat_payload.json', + {'current_unix_timestamp': int(time.time()), + 'NewMessages': NewMessages, + 'StatusCode': StatusCode, + 'NewDescription': NewDescription, + 'user_tz': user_tz, + 'CustomPayload': CustomPayload, + 'TimeDisplayFormat': DATE_FORMAT + }, + context_instance=RequestContext(self.request)) + response['Content-Type'] = 'text/plain; charset=utf-8' + response['Cache-Control'] = 'no-cache' + return response def ExtraHandling(self): """We might want to receive/send extra data in the Ajax calls. -- 2.39.5