+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
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)
})
def state(request):
- return HttpResponse(simplejson.dumps(cache.get(CACHE_KEY)), mimetype="application/json")
+ return HttpResponse(json.dumps(cache.get(CACHE_KEY)), mimetype="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', {
-
- #})