Attach files to Django models
Project description
Paperclip
Add attachments to Django models, used in MapEntity.
INSTALL
Installing from pypi (using pip)
pip install paperclip
Installing from github
pip install -e git://github.com/makinacorpus/django-paperclip.git#egg=django-paperclip
UPGRADE
After upgrade to 0.4.0, if you want to enable links to Youtube/Soundcould media, you have to add an additional column to the database:
ALTER TABLE paperclip_attachment ADD COLUMN attachment_video VARCHAR(200) NOT NULL DEFAULT '';
BASIC USAGE
Add paperclip to INSTALLED_APPS
Include urls
urlpatterns = patterns( '', ... url(r'^paperclip/', include('paperclip.urls')), ... )
Include scripts in template
<script src="{% static "paperclip/bootstrap-confirm.js" %}" type="text/javascript"></script> <script src="{% static "paperclip/spin.min.js" %}" type="text/javascript"></script> <script src="{% static "paperclip/paperclip.js" %}" type="text/javascript"></script>
If you use bootstrap 3, please include paperclip/bootstrap-3-confirm.js instead of paperclip/bootstrap-confirm.js.
Include list and form in template
{% include 'paperclip/attachment_list.html' with object=my_instance attachment_form_next=my_instance.get_detail_url %}
CONFIGURATION
You can define the following django setting:
PAPERCLIP_CONFIG = { 'ENABLE_VIDEO': False, 'FILETYPE_MODEL': 'FileType', 'ATTACHMENT_TABLE_NAME': 'paperclip_attachment', 'ACTION_HISTORY_ENABLED': True, }
TEMPLATES
Three templates are embeded and can easily be overriden :
paperclip/attachment_list.html : renders a table displaying attached files for an object and an upload form using the two following templates
paperclip/_attachment_table.html : renders a table displaying attached files for an object
paperclip/_attachment_form.html : renders an upload form
USE A CUSTOM FORM
You can use a custom django form by following this steps. Parenthetically, It’s the recommended solution if you want to use django-crispy-forms or django-floppyforms.
Write your custom form :
from paperclip.forms import AttachmentForm class MyAttachmentForm(AttachmentForm): ...
Note: To be sure to not break the form logic, we recommend to inherit from the native paperclip.forms.AttachmentForm.
Add your form class in a attachment_form_class variable of the main view context
context['attachment_form_class'] = MyAttachmentForm
Override 'add_attachment' and 'update_attachment' URLs to provide your custom form class in arguments
from my_app.forms import MyAttachmentForm urlpatterns = patterns( '', url(r'^paperclip/', include('paperclip.urls')), ... url(r'^add-for/(?P<app_label>[\w\-]+)/' r'(?P<module_name>[\w\-]+)/(?P<pk>\d+)/$', 'paperclip.views.add_attachment', kwargs={'attachment_form': MyAttachmentForm}, name="add_attachment"), url(r'^update/(?P<attachment_pk>\d+)/$', 'paperclip.views.update_attachment', kwargs={'attachment_form': MyAttachmentForm}, name="update_attachment"), ... )
Note: Be sure to write these URLs after having included paperclip URLs.
LICENSE
LGPL
CHANGELOG
0.4.0 (2015-03-20)
** New **
Allow to add links to Youtube or Soundcloud media
0.3.0 (2015-03-18)
** Removed (WARNING: backward incompatibility) **
Totally remove crispy_forms and floppy_forms integration (you can now override the form by a custom one instead)
** New **
Allow usage of a custom form
0.2.3 (2014-12-15)
Handle swappable User model
Embed spinner, bootstrap-confirm and add a bootstrap-3-confirm
Remove crispy_forms dependency
0.2.2 (2014-11-14)
Fix permission check for attachments
0.2.0 (2014-11-12)
Allow to override file types from request.
0.1.3 (2014-11-07)
Fix packaging of locale files
0.1.2 (2014-11-07)
Fix upload regular expressions for author and legend
0.1.1 (2014-11-03)
Fix missing SVG media in package
0.1.0 (2014-10-23)
Initial working version
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.