django-documents

Attach documents to Django models
Download

django-documents Ranking & Summary

Advertisement

  • Rating:
  • 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