django-export icon indicating copy to clipboard operation
django-export copied to clipboard

A Django app to export a database dump and media files

====================================================== A Django app to export a database dump and media files

This app provides a few views to export the database and the media-root. Default templates are provided for an easy integration with django.contrib.admin.

Currently mysql and sqlite3 database backends are supported.

Additionally the app provides some Amazon S3 integration. Exporting a database dump directly to S3 and listing the bucket contents is implemented.

I originally posted the views on djangosnippets a few month ago `here`_

.. _here : http://www.djangosnippets.org/snippets/580/

Installation

Add the folder export to your Python-Path.

Then add export to your INSTALLED_APPS setting::

INSTALLED_APPS = (
    ...
    'export',
)

Then hook the app into your url-conf, for example diretly under the admin url-space::

urlpatterns += patterns('',
    url(r'^admin/export/', include('export.urls')),
)


Be sure to add this pattern before the django.contrib.admin pattern, 
otherwise your urls will never be picked up, because they are catched by
the ``r'^admin/(.*)'`` pattern.

Now add Links to the export views to your Admin Index Template, or anywhere else you like. The Links to the views are accessible via::

Export Database: {% url export_database %}
Export Database to S3: {% url export_database_s3 %}
Export Media Root: {% url export_mediaroot %}
List S3 Bucket: {% url export_list_s3 %}

Settings

There are currently two optional settings::

MYSQLDUMP_CMD : The command used to dump a mysql database. Defaults to: '/usr/bin/mysqldump -h %s --opt --compact
--skip-add-locks -u %s -p%s %s | bzip2 -c'

SQLITE3DUMP_CMD: The command used to dump a sqlite2 database. Defaults to: 'echo ".dump" | /usr/bin/sqlite3 %s | bzip2 -c'

DISABLE_STREAMING: Normally an exported file would get streamed to the client in small chunks. If you are using ConditionalGetMiddleware or GZipMiddleware, this will break the streaming and results in zero-byte-size files. Set this option to True will disable streaming.

                 Keep in mind that, in this case, the exported file
                 will held entirely in RAM until it's fully transmitted
                 to the client. Defaults to: ``False``

                 See http://code.djangoproject.com/ticket/7581 for details.

To enable Amazon S3 support there are two steps:

* first install the S3 python library (can be found on the amazon website)
* then add a few settings with your credentials:
   * settings.AWS_ACCESS_KEY_ID
   * settings.AWS_SECRET_ACCESS_KEY
   * settings.AWS_BUCKET_NAME