diff --git a/apps/documents/__init__.py b/apps/documents/__init__.py index b305855ab9..23f4030aa4 100644 --- a/apps/documents/__init__.py +++ b/apps/documents/__init__.py @@ -16,8 +16,8 @@ document_download = {'text':_('download'), 'view':'document_download', 'args':'o staging_file_preview = {'text':_('preview'), 'class':'fancybox', 'view':'staging_file_preview', 'args':'object.id', 'famfam':'drive_magnify'} -register_links(Document, [document_view, document_edit, document_delete, document_preview, document_download]) -register_links(Document, [document_list, document_create, document_create_multiple], menu_name='sidebar') +register_links(Document, [document_edit, document_delete, document_preview, document_download]) +register_links(Document, [document_list, document_create, document_create_multiple, document_view], menu_name='sidebar') register_links(['document_list', 'document_create', 'document_create_multiple', 'upload_document_with_type', 'upload_multiple_documents_with_type'], [document_list, document_create, document_create_multiple], menu_name='sidebar') register_links(StagingFile, [staging_file_preview]) diff --git a/apps/documents/utils.py b/apps/documents/utils.py index c31bfdf694..40c428a06f 100644 --- a/apps/documents/utils.py +++ b/apps/documents/utils.py @@ -3,7 +3,17 @@ import tempfile from documents.conf.settings import TEMPORARY_DIRECTORY - +#http://snippets.dzone.com/posts/show/5434 +#http://snippets.dzone.com/user/jakob +def pretty_size(size): + suffixes = [("B",2**10), ("K",2**20), ("M",2**30), ("G",2**40), ("T",2**50)] + for suf, lim in suffixes: + if size > lim: + continue + else: + return round(size/float(lim/2**10),2).__str__()+suf + + #http://stackoverflow.com/questions/123198/how-do-i-copy-a-file-in-python def copyfile(source, dest, buffer_size=1024*1024): """ diff --git a/apps/documents/views.py b/apps/documents/views.py index 6f3e60de94..3969e6b762 100644 --- a/apps/documents/views.py +++ b/apps/documents/views.py @@ -14,7 +14,7 @@ from django.core.files.base import File from filetransfers.api import serve_file from convert import convert, in_cache -from utils import from_descriptor_to_tempfile +from utils import from_descriptor_to_tempfile, pretty_size from models import Document, DocumentMetadata, DocumentType, MetadataType from forms import DocumentTypeSelectForm, DocumentCreateWizard, \ @@ -39,11 +39,7 @@ def document_list(request): 'extra_columns':[ {'name':_(u'mimetype'), 'attribute':'file_mimetype'}, {'name':_(u'added'), 'attribute':lambda x: x.date_added.date()}, - ], - 'subtemplates_dict':[ - { - 'name':'fancybox.html', - }, + {'name':_(u'file size'), 'attribute':lambda x: pretty_size(x.file.storage.size(x.file.path)) if x.exists() else '-'}, ], }, ) @@ -167,9 +163,6 @@ def upload_document_with_type(request, document_type_id, multiple=True): finally: context.update({ 'subtemplates_dict':[ - { - 'name':'fancybox.html', - }, { 'name':'generic_list_subtemplate.html', 'title':_(u'files in staging'), @@ -195,17 +188,15 @@ def document_view(request, document_id): {'label':_(u'Filename'), 'field':'file_filename'}, {'label':_(u'File extension'), 'field':'file_extension'}, {'label':_(u'File mimetype'), 'field':'file_mimetype'}, + {'label':_(u'File size'), 'field':lambda x: pretty_size(x.file.storage.size(x.file.path)) if x.exists() else '-'}, + {'label':_(u'Exists in storage'), 'field':'exists'}, {'label':_(u'Date added'), 'field':lambda x: x.date_added.date()}, {'label':_(u'Time added'), 'field':lambda x: unicode(x.date_added.time()).split('.')[0]}, {'label':_(u'Checksum'), 'field':'checksum'}, {'label':_(u'UUID'), 'field':'uuid'}, - {'label':_(u'Exists in storage'), 'field':'exists'} ]) subtemplates_dict = [ - { - 'name':'fancybox.html', - }, { 'name':'generic_list_subtemplate.html', 'title':_(u'metadata'), diff --git a/apps/main/templates/base.html b/apps/main/templates/base.html index 317d89d834..e0285c1d30 100755 --- a/apps/main/templates/base.html +++ b/apps/main/templates/base.html @@ -11,6 +11,7 @@ {% block web_theme_stylesheets %} + {% block stylesheets %}{% endblock %} {% endblock %} @@ -20,6 +21,21 @@ $("input:text:visible:not(#livesearch):not([readonly]):enabled:first").focus(); }); + + + + {% block javascript %}{% endblock %} {% endblock %} diff --git a/docs/TODO b/docs/TODO index 6ae57c97ca..acaf40268a 100644 --- a/docs/TODO +++ b/docs/TODO @@ -13,6 +13,7 @@ * Implement single sign on or LDAP for intranets - DEFERRED, provided by Django AuthBackends * Database storage backend (sql, nosql: [mongodb]) - DEFERRED, provided by https://bitbucket.org/david/django-storages/wiki/Home * Staging file previews - DONE +* Display file size in list and details - DONE * Document list filtering by metadata * Filterform date filtering widget * Validate GET data before saving file