Beispiel #1
0
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))