Skip to main content

Progress bar upload for Django

Project description

========================
django-progressbarupload
========================

django-progressbarupload is a simple Django application that instantiates an HTML5 upload progress bar when the user submit a form with files (a form having basically FileField(s) and/or ImageField(s), and an enctype="multipart/form-data").

![ScreenShot](https://raw.github.com/ouhouhsami/django-progressbarupload/master/docs/img/admin_progress_bar_screenshot.png)


Quick start
-----------

Requirements :
* Django 1.4.3 (tested).
* django.contrib.staticfiles app to serve static files


1. Install the app

pypi version

```
pip install django-progressbarupload
```

development version

```
pip install -e git+http://github.com/ouhouhsami/django-progressbarupload.git#egg=django-progressbarupload
```

2. Add progressbarupload to your INSTALLED_APPS in your settings

```
INSTALLED_APPS += ('progressbarupload', )
```

3. Add "progressbarupload.uploadhandler.ProgressBarUploadHandler" to your FILE_UPLOAD_HANDLERS setting

```python
FILE_UPLOAD_HANDLERS = (
"progressbarupload.uploadhandler.ProgressBarUploadHandler",
"django.core.files.uploadhandler.MemoryFileUploadHandler",
"django.core.files.uploadhandler.TemporaryFileUploadHandler",
)
```

4. Include the progressbarupload URLconf in your project urls.py

```
(r'^progressbarupload/', include('progressbarupload.urls')),
```

Usage
-----

### ModelAdmin

Set the ```change_form_template``` and ```add_form_template``` attributes in your ModelAdmin to 'progressbarupload/change_form.html'.


from django.contrib import admin
from my_awesome_app.models import MyAwesomeModelWithFiles

class MyAwesomeModelWithFiles(admin.ModelAdmin):
change_form_template = 'progressbarupload/change_form.html'
add_form_template = 'progressbarupload/change_form.html'

admin.site.register(MyAwesomeModelWithFiles, UploadFileModelAdmin)


### Form and ModelForm

To use a progress bar in your custom ModelForm or Form, load the progress_bar template tag set ```{% load progress_bar %}``` in the template, and use the following template tags ```{% progress_bar_media %}``` between <head> tags to load javascript files and ```{% progress_bar %}``` where you and to display the progress bar.


{% load progress_bar %}

<!DOCTYPE html>
<html>
<head>
{% progress_bar_media %}
</head>

<body>
<form enctype="multipart/form-data" method="post" action=".">
{% csrf_token %}
{{ form }}
{% progress_bar %}
<input type="submit" />
</form>
</body>
</html>


Further information
-------------------

Make sure your browser renders HTML5 ```<progress>``` tag and uses data-* attribute (IE>10, FF>6.0, Chrome>8.0, Opera>11.0).

As Django has a unique TemporaryFileUploadHandler for all request.FILES. For ModelAdmin, if you have related models, using TabularInline, the upload progress will also be shown in the admin add/change form as soon as you use the right templates in your ModelAdmin (and even if your ModelAdmin doesn't contain any file upload).

Custom TemporaryFileUploadHandler copied from http://djangosnippets.org/snippets/678/

Launch tests
------------

It assumes you have installed virtualenvwrapper (http://virtualenvwrapper.readthedocs.org/en/latest/)

```
# get the application code
git clone https://github.com/ouhouhsami/django-progressbarupload.git
cd django-progressbarupload
# create a virtualenv
mkvirtualenv progressbarupload
add2virtualenv .
# install requirements for tests
pip install -r requirements/tests.txt
# launch tests
django-admin.py test --settings=progressbarupload.test_settings progressbarupload
```

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

django-progressbarupload-0.1.2.tar.gz (19.2 kB view details)

Uploaded Source

Built Distribution

File details

Details for the file django-progressbarupload-0.1.2.tar.gz.

File metadata

File hashes

Hashes for django-progressbarupload-0.1.2.tar.gz
Algorithm Hash digest
SHA256 137b6aa5cdbe186a1d71d2c0f3c5b310a9f2a8c505f09e3b21875ca624c1b6f0
MD5 b711c5db04a26525568c6e72ab74c5a6
BLAKE2b-256 e9a03041719048f43c0702c35195995acd78fd31fbcfa5acddb0ee14939b453f

See more details on using hashes here.

File details

Details for the file django-progressbarupload-0.1.2.macosx-10.4-x86_64.exe.

File metadata

File hashes

Hashes for django-progressbarupload-0.1.2.macosx-10.4-x86_64.exe
Algorithm Hash digest
SHA256 4427efedf6b79660297745f48a73653dff43b95e6e3cd4631fd59983500d41c9
MD5 e59a11a85300c0de9d03fe0e42010775
BLAKE2b-256 3842041611493a680e4cce18661da12dc63301e4d67c7859052ade3c89315b8b

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page