* New "import data" feature (only supports mailboxes for now)

* Some javascript cleanup into the admin. application

see #191
This commit is contained in:
Antoine Nguyen
2011-12-09 14:38:56 +01:00
parent 767343640a
commit 4fcc5b7911
14 changed files with 226 additions and 86 deletions
+34
View File
@@ -608,3 +608,37 @@ def saveextensions(request):
ext.save()
messages.info(request, _("Modifications applied."), fail_silently=True)
return HttpResponseRedirect(reverse(admin.views.viewextensions))
@login_required
@user_passes_test(lambda u: u.is_superuser)
def importdata(request, tplname="admin/import.html"):
if request.method == "POST":
error = None
form = ImportDataForm(request.POST, request.FILES)
if form.is_valid():
import csv
reader = csv.reader(request.FILES['sourcefile'],
delimiter=form.cleaned_data['sepcar'])
cpt = 0
try:
for row in reader:
mb = Mailbox()
mb.create_from_csv(row)
cpt += 1
except AdminError, e:
error = str(e)
else:
messages.info(request, _("%d mailboxes imported successfully" % cpt))
return _render(request, "admin/import_done.html", {
"status" : "ok", "msg" : ""
})
return _render(request, "admin/import_done.html", {
"status" : "ko", "msg" : error
})
form = ImportDataForm()
ctx = dict(title=_("Import data"), action="", formid="importform",
enctype="multipart/form-data", form=form, submit_label=_("Import"))
return _render(request, tplname, ctx)