django-documentsAttach documents to Django models | |
Download |
django-documents Ranking & Summary
Advertisement
- License:
- MIT/X Consortium Lic...
- Price:
- FREE
- Publisher Name:
- James Pic
- Publisher web site:
- https://github.com/jpic/
django-documents Tags
django-documents Description
django-documents is a simple Django app that 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 supportInstall django-generic-m2mRefer to django-generic-m2m installation documentation, do "Installation" and "Adding to your Django Project".Install autocomplete_lightRefer to django-autocomplete-light installation documentation, do "Quick install" and "Quick admin integration".Install django-documentsDownload the lastest release:pip install django-documentsOr install the development version:pip install -e git+https://github.com/yourlabs/django-documents.git#egg=documentsAdd to settings.INSTALLED_APPS:'documents',If using south, run:./manage.py migrateElse, run:./manage.py syncdbAdd 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 autocompleteRegister 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 autocompleteclass AutocompleteProject(autocomplete_light.AutocompleteGenericBase): # ....# register for your project needsautocomplete_light.register(AutocompleteProject)# registery for documents relationsautocomplete_light.register(AutocompleteProject, name='AutocompleteDocumentRelations')Secure your documentsConnect to document_pre_import, for example:# project specific document permissionsimport documentsdef document_security(sender, request, document, **kwargs): if not request.user.is_staff: raise documents.DownloadForbidden()documents.document_pre_download.connect(document_security)Display documents related to a modelUse get_related_documents() from Python:from documents.models import get_related_documentsyour_model = YourModel.objects.get(pk=XXX)related_documents = get_related_documents(your_model)Or from a template:{% load documents_tags %}{% for document in your_model|get_related_documents %} {{ document }}{% endfor %}Note that get_related_documents() returns a QuerySet, ie. you can get a count:get_related_documents(your_model).count()Or from a template:{% with related_documents=your_model|get_related_documents %} {{ related_documents.count }}{% endwith %}Product's homepage
django-documents Related Software