This simple app provides:
a Document model with:
a generic many to many relation
a file field that uploads to a private directory
a method get_download_url()
a view to download a document which allows custom security checks through a signal
a signal, document_pre_download, that is emited by the download view, and which responds with 503 if emiting the signal raises a DownloadForbidden exception
clean admin integration
south support
Install django-generic-m2m
Refer to django-generic-m2m installation documentation, do “Installation” and “Adding to your Django Project”.
Install autocomplete_light
Refer to django-autocomplete-light installation documentation, do “Quick install” and “Quick admin integration”.
Install django-documents
Download the lastest release:
pip install django-documents
Or install the development version:
pip install -e git+https://github.com/yourlabs/django-documents.git#egg=documents
Add to settings.INSTALLED_APPS:
'documents',
If using south, run:
./manage.py migrate
Else, run:
./manage.py syncdb
Add to urls.py:
url(r'^documents/', include('documents.urls')),
Set settings.DOCUMENTS_UPLOAD_TO to the absolute path where uploads should be stored. This must be a private directory.
Prepare the generic many to many autocomplete
Register a generic autocomplete, with name “AutocompleteDocumentRelations”. There is an example in test_project which is imported in urls.py. Refer the django-autocomplete-light documentation about the registry for alternative methods.
If the project already uses django-generic-m2m and django-autocomplete-light, a good solution is to re-register the project’s generic autocomplete with name=’AutocompleteDocumentRelations’, ie.:
# your project specific autocomplete
class AutocompleteProject(autocomplete_light.AutocompleteGenericBase):
# ....
# register for your project needs
autocomplete_light.register(AutocompleteProject)
# registery for documents relations
autocomplete_light.register(AutocompleteProject,
name='AutocompleteDocumentRelations')
Secure your documents
Connect to document_pre_import, for example:
# project specific document permissions
import documents
def document_security(sender, request, document, **kwargs):
if not request.user.is_staff:
raise documents.DownloadForbidden()
documents.document_pre_download.connect(document_security)
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
File details
Details for the file django-documents-0.0.1.tar.gz.
File metadata
- Download URL: django-documents-0.0.1.tar.gz
- Upload date:
- Size: 5.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3f709f879bb6b280d6f787f53a60ae0edb4ce1cde89f5859a02991383ca3d823
|
|
| MD5 |
0d6f5289dc15425ae879fe14a64cdfda
|
|
| BLAKE2b-256 |
51286eee26fe76a8b35773defffd2a0a30473702e4d69022d366dade59b14b77
|