]> git.openstreetmap.org Git - osqa.git/blobdiff - forum_modules/sximporter/views.py
Add README to the source code
[osqa.git] / forum_modules / sximporter / views.py
index fb0bcd1bbf3a4e16bb8739a58e1b77eb3c085197..ebaed2133e8c2957c814b991524e646a5202a780 100644 (file)
@@ -1,17 +1,38 @@
 from django.shortcuts import render_to_response\r
 from django.template import RequestContext\r
-from forum.views.admin import super_user_required\r
+from forum.http_responses import HttpResponseUnauthorized\r
+from forum.models import User\r
 import importer\r
 from zipfile import ZipFile\r
+import os\r
 \r
-@super_user_required\r
 def sximporter(request):\r
-    list = []\r
-    if request.method == "POST" and "dump" in request.FILES:\r
-        dump = ZipFile(request.FILES['dump'])\r
-        importer.sximport(dump, request.POST)\r
-        dump.close()\r
+    if (not User.objects.exists()) or (request.user.is_authenticated() and request.user.is_superuser):\r
+        list = []\r
+        if request.method == "POST" and "dump" in request.FILES:\r
+            dump = ZipFile(request.FILES['dump'])\r
+            members = [f for f in dump.namelist() if f.endswith('.xml')]\r
+            extract_to = os.path.join(os.path.dirname(__file__), 'tmp')\r
 \r
-    return render_to_response('modules/sximporter/page.html', {\r
+            if not os.path.exists(extract_to):\r
+                os.makedirs(extract_to)\r
+\r
+            for m in members:\r
+                f = open(os.path.join(extract_to, m), 'w')\r
+                f.write(dump.read(m))\r
+                f.close()\r
+\r
+            #dump.extractall(extract_to, members)\r
+            dump.close()\r
+\r
+            options = dict([(k, v) for k, v in request.POST.items()])\r
+            options['authenticated_user'] = (request.user.is_authenticated() and (request.user,) or (None,))[0]\r
+\r
+            importer.sximport(extract_to, options)\r
+\r
+        return render_to_response('modules/sximporter/page.html', {\r
         'names': list\r
-    }, context_instance=RequestContext(request))
\ No newline at end of file
+        }, context_instance=RequestContext(request))\r
+    else:\r
+        return HttpResponseUnauthorized(request)\r
+\r