diff --git a/modoboa/core/commands/postfix_maps.py b/modoboa/core/commands/postfix_maps.py
index eda26f4fc..021ceae9b 100644
--- a/modoboa/core/commands/postfix_maps.py
+++ b/modoboa/core/commands/postfix_maps.py
@@ -2,6 +2,8 @@
import getpass
import inspect
import os
+import sys
+import datetime
from django.template import Context, Template
from . import Command
@@ -46,6 +48,12 @@ query = {{ query|safe }}
query=getattr(v, args.dbtype)))
)
with open("%s/%s" % (args.destdir, v.filename), "w") as fp:
+ print >> fp, """# This file was generated on %s by running:
+# %s %s
+# DO NOT EDIT!
+""" % (datetime.datetime.now().isoformat(),
+ os.path.basename(sys.argv[0]),
+ ' '.join(sys.argv[1:]))
print >> fp, content
diff --git a/modoboa/extensions/amavis/views.py b/modoboa/extensions/amavis/views.py
index f1973b966..ba89903ee 100644
--- a/modoboa/extensions/amavis/views.py
+++ b/modoboa/extensions/amavis/views.py
@@ -1,16 +1,15 @@
# coding: utf-8
import email
from django.shortcuts import render
-from django.http import HttpResponseRedirect, HttpResponse, Http404
+from django.http import HttpResponseRedirect, Http404
from django.template import Template, Context
-from django.utils import simplejson
from django.utils.translation import ugettext as _, ungettext
from django.core.urlresolvers import reverse
from django.contrib.auth.decorators \
import login_required, user_passes_test
from django.db.models import Q
from modoboa.lib import parameters
-from modoboa.lib.exceptions import ModoboaException, BadRequest
+from modoboa.lib.exceptions import BadRequest
from modoboa.lib.webutils import (
getctx, ajax_response, render_to_json_response
)
@@ -49,7 +48,7 @@ def empty_quarantine(request):
content = "
%s
" % _("Empty quarantine")
ctx = getctx("ok", level=2, listing=content, navbar="",
menu=quar_menu(request.user))
- return HttpResponse(simplejson.dumps(ctx), mimetype="application/json")
+ return render_to_json_response(ctx)
@login_required
@@ -107,7 +106,7 @@ def _listing(request):
navbar = lst.render_navbar(page, "listing/?")
ctx = getctx("ok", listing=content, navbar=navbar,
menu=quar_menu(request.user))
- return HttpResponse(simplejson.dumps(ctx), mimetype="application/json")
+ return render_to_json_response(ctx)
@login_required
@@ -178,7 +177,7 @@ def viewmail(request, mail_id):
""").render(Context({"url": reverse(getmailcontent, args=[mail_id])}))
menu = viewm_menu(request.user, mail_id, rcpt)
ctx = getctx("ok", menu=menu, listing=content)
- return HttpResponse(simplejson.dumps(ctx), mimetype="application/json")
+ return render_to_json_response(ctx)
@login_required
diff --git a/modoboa/lib/webutils.py b/modoboa/lib/webutils.py
index b2da344a8..843897378 100644
--- a/modoboa/lib/webutils.py
+++ b/modoboa/lib/webutils.py
@@ -5,12 +5,12 @@ This module contains extra functions/shortcuts used to render HTML.
"""
import sys
import re
+import json
from django.http import HttpResponse, HttpResponseRedirect
from django.contrib.auth.decorators import login_required
from django.shortcuts import render_to_response
from django.template.loader import render_to_string
from django import template
-from django.utils import simplejson
from django.conf import settings
@@ -86,7 +86,7 @@ def ajax_response(request, status="ok", respmsg=None,
if url is not None:
jsonctx["url"] = url
jsonctx["norefresh"] = norefresh
- return HttpResponse(simplejson.dumps(jsonctx), mimetype="application/json")
+ return HttpResponse(json.dumps(jsonctx), mimetype="application/json")
def render_to_json_response(context, **response_kwargs):
@@ -95,7 +95,7 @@ def render_to_json_response(context, **response_kwargs):
:param dict context: response content
:return: ``HttpResponse`` object
"""
- data = simplejson.dumps(context)
+ data = json.dumps(context)
response_kwargs['content_type'] = 'application/json'
return HttpResponse(data, **response_kwargs)