X-Git-Url: https://git.openstreetmap.org/osqa.git/blobdiff_plain/f4730c2cb758de12b6487e3a036a9a9c70bb5d4f..99d077e46d0eb3efd5e96a65f120e6e4b6197db0:/forum_modules/exporter/views.py diff --git a/forum_modules/exporter/views.py b/forum_modules/exporter/views.py index e6b2e8b..e6cc577 100644 --- a/forum_modules/exporter/views.py +++ b/forum_modules/exporter/views.py @@ -1,9 +1,11 @@ +from __future__ import with_statement + import os, tarfile, ConfigParser, datetime +import json from StringIO import StringIO from django.http import HttpResponse, HttpResponseRedirect, Http404 from django.utils.translation import ugettext as _ -from django.utils import simplejson from django.core.cache import cache from django.core.urlresolvers import reverse from forum.views.admin import admin_tools_page, admin_page @@ -13,10 +15,9 @@ from threading import Thread import settings as selsettings from forum import settings -from exporter import export, CACHE_KEY, EXPORT_STEPS, LAST_BACKUP, DATE_AND_AUTHOR_INF_SECTION, DATETIME_FORMAT +from exporter import export, CACHE_KEY, EXPORT_STEPS, DATE_AND_AUTHOR_INF_SECTION, DATETIME_FORMAT from importer import start_import - @admin_tools_page(_('exporter'), _('XML data export')) def exporter(request): state = cache.get(CACHE_KEY) @@ -73,80 +74,29 @@ def running(request, mode): }) def state(request): - return HttpResponse(simplejson.dumps(cache.get(CACHE_KEY)), mimetype="application/json") + return HttpResponse(json.dumps(cache.get(CACHE_KEY)), content_type="application/json") @admin_page def download(request): - fname = LAST_BACKUP + if request.GET and request.GET.get('file', None): + fname = os.path.join(selsettings.EXPORTER_BACKUP_STORAGE, request.GET.get('file')) + else: + raise Http404 if not os.path.exists(fname): raise Http404 - response = HttpResponse(open(fname, 'rb').read(), content_type='application/x-gzip') + if fname.endswith('.gz'): + content_type='application/x-gzip' + filename = 'backup.tar.gz' + else: + content_type='application/zip' + filename = 'backup.zip' + + response = HttpResponse(open(fname, 'rb').read(), content_type=content_type) response['Content-Length'] = os.path.getsize(fname) - response['Content-Disposition'] = 'attachment; filename=backup.tar.gz' + response['Content-Disposition'] = 'attachment; filename=%s' % filename return response -@admin_tools_page(_('importer'), _('XML data restore')) -def importer(request): - thread = Thread(target=start_import, args=[ - '/Users/admin/dev/pyenv/osqa/maintain/forum_modules/exporter/backups/localhost-201010121118.tar.gz', - { - 'sql2008': 'sql-server-2008', - 'sql2005': 'sql-server-2005', - 'sql2000': 'sql-server-2000', - 'design' : 'database-design', - 'fulltextsearch' : 'full-text', - 'access': 'microsoft-access', - 'subquery': 'sub-query', - 'count': 'aggregates', - 'join': 'joins', - 'metadata': 'meta-data', - 'stored-procedure': 'stored-procedures', - 'temp-tables': 'temporary-tables', - 'sqlce': 'sql-server-ce', - 'maintenance-plan': 'maintenance-plans', - 'meta': 'meta-askssc', - 'msaccess2000': 'microsoft-access', - 'agent': 'sql-agent', - 'udf': 'user-defined-function', - 'report': 'reporting', - 'ssas2005': 'ssas', - 'case': 'case-statement', - 'export': 'export-data', - 'recursive': 'recursion', - 'table-variables': 'table-variable', - 'sqldmo': 'dmo', - 'install': 'installation', - 'function': 'user-defined-function', - 'average': 'aggregates', - 'aggregate-function': 'aggregates', - 'email': 'database-email', - 'distinct': 'aggregates', - 'dynamic-query': 'dynamic', - 'learn': 'learning', - 'permission': 'permissions', - 'shrink': 'shrink-database', - 'normalise': 'normalization', - 'datatype-text': 'datatypes', - 'reporting-services': 'ssrs', - 'aggregate-sum': 'aggregates', - 'aggregate-max': 'aggregates', - 'bulk-import': 'bulk-insert', - 'attach-database': 'attach', - 'scripting': 'script', - 'analysis-services': 'ssas', - 'create-table': 'create', - '2005': 'sql-server-2005' - }, - request.user]) - thread.setDaemon(True) - thread.start() - - return HttpResponseRedirect(reverse('exporter_running', kwargs=dict(mode='importer'))) - - #return ('modules/exporter/importer.html', { - - #})