diff --git a/extensions/amavis_quarantine/main.py b/extensions/amavis_quarantine/main.py index a6d17292d..64e6b1152 100644 --- a/extensions/amavis_quarantine/main.py +++ b/extensions/amavis_quarantine/main.py @@ -2,10 +2,11 @@ """ """ -from django.http import HttpResponseRedirect +from django.http import HttpResponseRedirect, HttpResponse from django.shortcuts import get_object_or_404, render_to_response from django.template.loader import render_to_string from django.template import Template +from django.utils import simplejson from django.conf.urls.defaults import * from django.utils.translation import ugettext as _ from django.core.urlresolvers import reverse @@ -69,7 +70,8 @@ ORDER BY msgs.time_num DESC pagenum = 1 page = paginator.page(pagenum) return _render(request, 'amavis_quarantine/index.html', { - "count" : len(rows), "emails" : page + "count" : len(rows), "emails" : page, + "current_page" : pagenum, "last_page" : paginator._get_num_pages() }) @login_required @@ -106,15 +108,30 @@ WHERE quarantine.mail_id='%s' body = decode(text_body) pre = True - return _render(request, 'amavis_quarantine/viewmail.html', { - "headers" : msg.items(), - "body" : body, - "pre" : pre + "headers" : msg, "alert" : msg.get("X-Amavis-Alert"), + "body" : body, "pre" : pre, "mail_id" : mail_id + }) + +@login_required +def viewheaders(request, mail_id): + conn = db.getconnection("amavis_quarantine") + status, cursor = db.execute(conn, """ +SELECT mail_text +FROM quarantine +WHERE quarantine.mail_id='%s' +""" % mail_id) + content = "" + for part in cursor.fetchall(): + content += part[0] + msg = email.message_from_string(content) + return _render(request, 'amavis_quarantine/viewheader.html', { + "headers" : msg.items() }) @login_required def process(request): + print request if request.POST.has_key("deleteall"): return ids = "" @@ -124,7 +141,7 @@ def process(request): ids += "," ids += "'%s'" % id if ids == "": - return + return HttpResponseRedirect(reverse(index)) conn = db.getconnection("amavis_quarantine") if request.POST.has_key("release"): status, cursor = db.execute(conn, """ @@ -161,4 +178,10 @@ WHERE msgrcpt.mail_id=msgs.mail_id AND msgrcpt.rid=maddr.id AND msgs.mail_id IN else: message = error request.user.message_set.create(message=message) - return HttpResponseRedirect(reverse(index)) + try: + pagenum = int(request.POST.get('pagenum', '1')) + except ValueError: + pagenum = 1 + ctx = _ctx_ok(reverse(index) + "?page=%s" % pagenum) + return HttpResponse(simplejson.dumps(ctx), + mimetype="application/json") diff --git a/extensions/amavis_quarantine/templates/index.html b/extensions/amavis_quarantine/templates/index.html index 1c508073e..a34ea4344 100644 --- a/extensions/amavis_quarantine/templates/index.html +++ b/extensions/amavis_quarantine/templates/index.html @@ -1,27 +1,39 @@ {% extends "layout.html" %} {% load i18n %} +{% load amextras %} {% block html_head %} -{% endblock %} -{% block content %} + +{% endblock %} + +{% block content %}

{% trans "Quarantine" %}

{% if messages %} @@ -41,27 +80,40 @@ td { {% endif %}
+ + {% url extensions.amavis_quarantine.main.process as actionurl %} -
+ + +
- Il y a {{ count }} messages dans la quarantaine. -
-
- - - -
- -
- +
+
+ Messages {{ emails.start_index }} à {{ emails.end_index }} sur {{ count }} +
+ +
+ +
@@ -74,7 +126,7 @@ td { - {% if user.is_superuser %}{% endif %} + {% url extensions.amavis_quarantine.main.viewmail m.mailid as view_url %} diff --git a/extensions/amavis_quarantine/templates/viewheader.html b/extensions/amavis_quarantine/templates/viewheader.html new file mode 100644 index 000000000..8b187503f --- /dev/null +++ b/extensions/amavis_quarantine/templates/viewheader.html @@ -0,0 +1,43 @@ +{% extends "layout_simple.html" %} +{% load i18n %} +{% block html_head %} + +{% endblock %} + +{% block content %} +
{% trans "Type" %} {{ m.type }}{{ m.to }}{{ m.from }}{{ m.subject }} {{ m.time }}
+ +{% for k, v in headers %} + + + +{% endfor %} +
{% trans "Message headers" %}
{{ k }}{{ v }}
+{% endblock %} \ No newline at end of file diff --git a/extensions/amavis_quarantine/templates/viewmail.html b/extensions/amavis_quarantine/templates/viewmail.html index df9a274d9..72578be4c 100644 --- a/extensions/amavis_quarantine/templates/viewmail.html +++ b/extensions/amavis_quarantine/templates/viewmail.html @@ -10,7 +10,11 @@ window.addEvent("domready", function() { {% else %} doc.write("{{ body }}"); {% endif %} - doc.close(); + doc.close(); + + SqueezeBox.assign($$('a.boxed'), { + parse: 'rel' + }); }); @@ -32,16 +36,24 @@ td.left { {% endblock %} {% block content %} + + + + + + + + + + + +
{% trans "Message" %}
X-Amavis-Alert{{ alert }}
From{{ headers.from }}
To{{ headers.to }}
Date{{ headers.date }}
Subject{{ headers.subject }}
+ - - -{% for k, v in headers %} - - - -{% endfor %} -
{% trans "Message headers" %}
{{ k }}{{ v }}
{% endblock %} \ No newline at end of file diff --git a/extensions/amavis_quarantine/templatetags/__init__.py b/extensions/amavis_quarantine/templatetags/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/extensions/amavis_quarantine/templatetags/amextras.py b/extensions/amavis_quarantine/templatetags/amextras.py new file mode 100644 index 000000000..5d7895653 --- /dev/null +++ b/extensions/amavis_quarantine/templatetags/amextras.py @@ -0,0 +1,56 @@ +from django import template +from django.template.loader import render_to_string +from django.utils.translation import ugettext as _ +from django.core.urlresolvers import reverse +from mailng.extensions import amavis_quarantine + +register = template.Library() + +@register.simple_tag +def viewm_menu(selection, mail_id, perms): + entries = [ + {"name" : "back", + "url" : reverse(amavis_quarantine.main.index), + "img" : "/static/pics/back.png", + "label" : _("Back to list")}, + {"name" : "headers", + "url" : reverse(amavis_quarantine.main.viewheaders, args=[mail_id]), + "img" : "/static/pics/add.png", + "label" : _("View full headers"), + "class" : "boxed", + "rel" : "{handler:'iframe',size:{x:600,y:500}}"}, + {"name" : "release", + "url" : "", + "img" : "/static/pics/release.png", + "label" : _("Release")}, + {"name" : "delete", + "url" : "", + "img" : "/static/pics/remove.png", + "label" : _("Delete")} + ] + + return render_to_string('main/menu.html', + {"selection" : selection, "entries" : entries, + "perms" : perms}) + +@register.simple_tag +def quar_menu(selection, perms): + entries = [ + {"name" : "release", + "url" : "", + "img" : "/static/pics/release.png", + "label" : _("Release")}, + {"name" : "delete", + "url" : "", + "img" : "/static/pics/remove.png", + "label" : _("Delete")}, + {"name" : "deleteall", + "url" : "", + "img" : "/static/pics/remove.png", + "label" : _("Delete all")}, + + ] + + return render_to_string('main/menu.html', + {"selection" : selection, "entries" : entries, + "perms" : perms}) diff --git a/extensions/amavis_quarantine/urls.py b/extensions/amavis_quarantine/urls.py index e1afbff33..4dcc50e9c 100644 --- a/extensions/amavis_quarantine/urls.py +++ b/extensions/amavis_quarantine/urls.py @@ -2,6 +2,7 @@ from django.conf.urls.defaults import * urlpatterns = patterns('mailng.extensions.amavis_quarantine.main', (r'^$', 'index'), - (r'^view/(?P[\w\-\+]+)/$', 'viewmail'), + (r'^viewmail/(?P[\w\-\+]+)/$', 'viewmail'), + (r'^viewheaders/(?P[\w\-\+]+)/$', 'viewheaders'), (r'^process/$', 'process') ) diff --git a/static/pics/back.png b/static/pics/back.png new file mode 100644 index 000000000..659cd90d7 Binary files /dev/null and b/static/pics/back.png differ diff --git a/static/pics/first.png b/static/pics/first.png new file mode 100644 index 000000000..9c15c09e9 Binary files /dev/null and b/static/pics/first.png differ diff --git a/static/pics/last.png b/static/pics/last.png new file mode 100644 index 000000000..6e904efd0 Binary files /dev/null and b/static/pics/last.png differ diff --git a/static/pics/next.png b/static/pics/next.png new file mode 100644 index 000000000..6ef8de76e Binary files /dev/null and b/static/pics/next.png differ diff --git a/static/pics/release.png b/static/pics/release.png new file mode 100644 index 000000000..8b0fef9a8 Binary files /dev/null and b/static/pics/release.png differ diff --git a/templates/main/menu.html b/templates/main/menu.html index 775b07501..71047f12f 100644 --- a/templates/main/menu.html +++ b/templates/main/menu.html @@ -2,7 +2,7 @@
    {% for entry in entries %}
  • -