1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
|
==================
django-attachments
==================
django-attachments is a generic set of template tags to attach any kind of
files to models.
Installation:
=============
1. Put ``attachments`` to your ``INSTALLED_APPS`` in your ``settings.py``
within your django project.
2. Add ``(r'^attachments/', include('attachments.urls')),`` to your ``urls.py``.
3. Add ``'django.core.context_processors.request'`` to your ``TEMPLATE_CONTEXT_PROCESSORS``
in your settings.py. If this setting does not exist, simply add the following
snippet at the end of your settings.py.
TEMPLATE_CONTEXT_PROCESSORS = (
'django.core.context_processors.auth',
'django.core.context_processors.i18n',
'django.core.context_processors.media',
'django.core.context_processors.request',
)
This app provides a additional permission ``delete_foreign_attachments``
which enables that users with it can delete foreign attachments. Normally only
the user who uploaded the attachment can delete it.
Usage:
======
In contrib.admin:
-----------------
django-attachments provides a inline object to add a list of attachments to
any kind of model in your admin app.
Simply add ``AttachmentInlines`` to the admin options of your model. Example::
from django.contrib import admin
from attachments.admin import AttachmentInlines
class MyEntryOptions(admin.ModelAdmin)
inlines = [AttachmentInlines]
.. image:: http://cloud.github.com/downloads/bartTC/django-attachments/attachments_screenshot_admin.png
In your frontend templates:
---------------------------
First of all, load the attachments_tags in every template you want to use::
{% load attachments_tags %}
django-attachments comes with some templatetags to add or delete attachments
for your model objects in your frontend.
1. ``get_attachments_for [object]``: Fetches the attachments for the given
model instance. You can optionally define a variable name in which the attachment
list is stored in the template context. The default context variable name is
``attachments`` Example::
{% get_attachments_for entry as "attachments_list" %}
2. ``attachment_form``: Renders a upload form to add attachments for the given
model instance. Example::
{% attachment_form [object] %}
It returns an empty string if the current user is not logged in.
3. ``attachment_delete_link``: Renders a link to the delete view for the given
*attachment*. Example::
{% for att in attachment_list %}
{{ att }} {% attachment_delete_link att %}
{% endfor %}
This tag automatically checks for permission. It returns only a html link if the
give n attachment's creator is the current logged in user or the user has the
``delete_foreign_attachments`` permission.
Quick Example:
==============
::
{% load attachments_tags %}
{% get_attachments_for entry as "my_entry_attachments" %}
{% if my_entry_attachments %}
<ul>
{% for attachment in my_entry_attachments %}
<li>
<a href="{{ attachment.attachment_file.url }}">{{ attachment.filename }}</a>
{% attachment_delete_link attachment %}
</li>
{% endfor %}
</ul>
{% endif %}
{% attachment_form entry %}
|