def detail(request, message_id, archive=False): """ Displays details of a message, and processes quarantined messages """ if archive: obj = Archive else: obj = Message message_details = get_object_or_404(obj, id=message_id) if not message_details.can_access(request): return HttpResponseForbidden(_('You are not authorized' ' to access this page')) error_list = '' quarantine_form = QuarantineProcessForm() quarantine_form.fields[ 'message_id'].widget.attrs['value'] = message_details.id if request.method == 'POST': quarantine_form = QuarantineProcessForm(request.POST) if quarantine_form.is_valid(): form_data = quarantine_form.cleaned_data form_data['message_id'] = [form_data['message_id']] task = ProcessQuarantine.apply_async(args=[form_data], queue=message_details.hostname) html = [] task.wait() result = task.result[0] if task.status == 'SUCCESS': success = True if form_data['release']: #release if form_data['use_alt']: to_addr = form_data['altrecipients'] else: to_addr = message_details.to_address to_addr = to_addr.split(',') error_msg = '' if not result['release']: success = False error_msg = dict(result['errors'])['release'] template = 'messages/released.html' html.append(render_to_string(template, {'id': message_details.id, 'addrs': to_addr, 'success': success, 'error_msg': error_msg})) if form_data['learn']: #salean error_msg = '' template = "messages/salearn.html" if not result['learn']: success = False error_msg = dict(result['errors'])['learn'] html.append(render_to_string(template, {'id': message_details.id, 'msg': error_msg, 'success': success})) if form_data['todelete']: #delete error_msg = '' if not result['delete']: success = False error_msg = dict(result['errors'])['delete'] template = "messages/delete.html" html.append(render_to_string(template, {'id': message_details.id, 'success': success, 'error_msg': error_msg})) html = '<br />'.join(html) else: success = False html = _('Processing the request failed') else: error_list = quarantine_form.errors.values()[0] error_list = error_list[0] html = error_list success = False if request.is_ajax(): response = anyjson.dumps({'success': success, 'html': html}) return HttpResponse(response, content_type='application/javascript; charset=utf-8') quarantine_form.fields['altrecipients'].widget.attrs['size'] = '55' return render_to_response('messages/detail.html', locals(), context_instance=RequestContext(request))