diff --git a/apps/common/utils.py b/apps/common/utils.py index 580c4dafbc..13abb05627 100644 --- a/apps/common/utils.py +++ b/apps/common/utils.py @@ -103,20 +103,6 @@ def pretty_size_10(size): ]) -def exists_with_famfam(path): - try: - return two_state_template(os.path.exists(path)) - except Exception, exc: - return exc - - -def two_state_template(state, famfam_ok_icon=u'tick', famfam_fail_icon=u'cross'): - if state: - return u'' % famfam_ok_icon - else: - return u'' % famfam_fail_icon - - # The code here is based loosely on John Cardinal's notes found at: # http://www.johncardinal.com/tmgutil/capitalizenames.htm diff --git a/apps/common/widgets.py b/apps/common/widgets.py index 2d07facbdf..7e8db4918d 100644 --- a/apps/common/widgets.py +++ b/apps/common/widgets.py @@ -47,3 +47,17 @@ class DetailSelectMultiple(forms.widgets.SelectMultiple): else: output += u'
' % {
- 'url': reverse('document_preview', args=[x.pk]),
- 'thumbnail': reverse('document_thumbnail', args=[x.pk]),
- 'media_url': settings.MEDIA_URL,
- 'string': _(u'thumbnail')
- }
+ lambda x: document_thumbnail(x)
},
{'name':_(u'tags'), 'attribute':
lambda x: get_tags_inline_widget_simple(x)
diff --git a/apps/documents/views.py b/apps/documents/views.py
index 7b5c019a3d..ee317312e5 100644
--- a/apps/documents/views.py
+++ b/apps/documents/views.py
@@ -14,11 +14,11 @@ from django.views.generic.create_update import delete_object, update_object
from django.conf import settings
from django.utils.http import urlencode
from django.core.files.uploadedfile import SimpleUploadedFile
-#from django.contrib.comments.models import Comment
import sendfile
from common.utils import pretty_size, parse_range, urlquote, \
- return_diff, two_state_template
+ return_diff
+from common.widgets import two_state_template
from common.literals import PAGE_SIZE_DIMENSIONS, \
PAGE_ORIENTATION_PORTRAIT, PAGE_ORIENTATION_LANDSCAPE
from common.conf.settings import DEFAULT_PAPER_SIZE
diff --git a/apps/documents/widgets.py b/apps/documents/widgets.py
new file mode 100644
index 0000000000..cf7918da2e
--- /dev/null
+++ b/apps/documents/widgets.py
@@ -0,0 +1,20 @@
+from django.utils.safestring import mark_safe
+from django.conf import settings
+from django.utils.translation import ugettext_lazy as _
+from django.core.urlresolvers import reverse
+
+
+def document_thumbnail(document):
+ try:
+ return mark_safe(u'
' % {
+ 'url': reverse('document_preview', args=[document.pk]),
+ 'thumbnail': reverse('document_thumbnail', args=[document.pk]),
+ 'media_url': settings.MEDIA_URL,
+ 'string': _(u'thumbnail')
+ })
+ except:
+ return u''
+
+
+def document_link(document):
+ return mark_safe(u'%s' % (reverse('document_view_simple', args=[document.pk]), document))
diff --git a/apps/folders/views.py b/apps/folders/views.py
index a39d850d7c..824c57bd05 100644
--- a/apps/folders/views.py
+++ b/apps/folders/views.py
@@ -9,6 +9,7 @@ from django.core.exceptions import PermissionDenied
from documents import PERMISSION_DOCUMENT_VIEW
from documents.models import Document
+from documents.widgets import document_thumbnail, document_link
from permissions.api import check_permissions
from folders.models import Folder, FolderDocument
@@ -124,11 +125,10 @@ def folder_view(request, folder_id):
'object_list': folder.folderdocument_set.all(),
'extra_columns': [
{'name': _(u'document'), 'attribute':
- lambda x: '%s' % (reverse('document_view_simple', args=[x.document.pk]), x.document)
+ lambda x: document_link(x.document)
},
{'name': _(u'thumbnail'), 'attribute':
- lambda x: '
' % {
- 'url': reverse('document_preview', args=[ocr_document.document.pk]),
- 'thumbnail_url': reverse('document_thumbnail', args=[ocr_document.document.pk]),
- 'media_url': settings.MEDIA_URL,
- 'string': _(u'thumbnail')
- }
- except:
- return u''
-
-
def queue_document_list(request, queue_name='default'):
check_permissions(request.user, [PERMISSION_OCR_DOCUMENT])
@@ -52,8 +41,8 @@ def queue_document_list(request, queue_name='default'):
'object': document_queue,
'object_name': _(u'document queue'),
'extra_columns': [
- {'name': 'document', 'attribute': lambda x: '%s' % (x.document.get_absolute_url(), x.document) if hasattr(x, 'document') else _(u'Missing document.')},
- {'name': _(u'thumbnail'), 'attribute': lambda x: _display_thumbnail(x)},
+ {'name': 'document', 'attribute': lambda x: document_link(x.document) if hasattr(x, 'document') else _(u'Missing document.')},
+ {'name': _(u'thumbnail'), 'attribute': lambda x: document_thumbnail(x.document)},
{'name': 'submitted', 'attribute': lambda x: unicode(x.datetime_submitted).split('.')[0], 'keep_together':True},
{'name': 'delay', 'attribute': 'delay'},
{'name': 'state', 'attribute': lambda x: x.get_state_display()},
diff --git a/apps/permissions/views.py b/apps/permissions/views.py
index f36317f77a..e94e643ad0 100644
--- a/apps/permissions/views.py
+++ b/apps/permissions/views.py
@@ -20,6 +20,7 @@ from permissions import PERMISSION_ROLE_VIEW, PERMISSION_ROLE_EDIT, \
PERMISSION_ROLE_CREATE, PERMISSION_ROLE_DELETE, PERMISSION_PERMISSION_GRANT, \
PERMISSION_PERMISSION_REVOKE
from permissions.api import check_permissions, namespace_titles
+from permissions.widgets import role_permission_link
def role_list(request):
@@ -36,23 +37,6 @@ def role_list(request):
)
-def _role_permission_link(requester, permission, permission_list):
- ct = ContentType.objects.get_for_model(requester)
-
- template = u'%(text)s'
-
- if permission in permission_list:
- return template % {
- 'url': reverse('permission_revoke',
- args=[permission.pk, ct.app_label, ct.model, requester.pk]),
- 'icon': u'key_delete', 'text': ugettext(u'Revoke')}
- else:
- return template % {
- 'url': reverse('permission_grant',
- args=[permission.pk, ct.app_label, ct.model, requester.pk]),
- 'icon': u'key_add', 'text': ugettext(u'Grant')}
-
-
def role_permissions(request, role_id):
check_permissions(request.user, [PERMISSION_PERMISSION_GRANT, PERMISSION_PERMISSION_REVOKE])
@@ -71,7 +55,7 @@ def role_permissions(request, role_id):
{'name': _(u'name'), 'attribute': u'label'},
{
'name':_(u'state'),
- 'attribute': lambda x: _role_permission_link(role, x, role_permissions_list),
+ 'attribute': lambda x: role_permission_link(role, x, role_permissions_list),
}
],
'hide_link': True,
diff --git a/apps/permissions/widgets.py b/apps/permissions/widgets.py
new file mode 100644
index 0000000000..5fa9e462c9
--- /dev/null
+++ b/apps/permissions/widgets.py
@@ -0,0 +1,21 @@
+from django.utils.translation import ugettext
+from django.utils.safestring import mark_safe
+from django.contrib.contenttypes.models import ContentType
+from django.core.urlresolvers import reverse
+
+
+def role_permission_link(requester, permission, permission_list):
+ ct = ContentType.objects.get_for_model(requester)
+
+ template = u'%(text)s'
+
+ if permission in permission_list:
+ return mark_safe(template % {
+ 'url': reverse('permission_revoke',
+ args=[permission.pk, ct.app_label, ct.model, requester.pk]),
+ 'icon': u'key_delete', 'text': ugettext(u'Revoke')})
+ else:
+ return mark_safe(template % {
+ 'url': reverse('permission_grant',
+ args=[permission.pk, ct.app_label, ct.model, requester.pk]),
+ 'icon': u'key_add', 'text': ugettext(u'Grant')})
diff --git a/apps/smart_settings/views.py b/apps/smart_settings/views.py
index 0839777901..e2673557d0 100644
--- a/apps/smart_settings/views.py
+++ b/apps/smart_settings/views.py
@@ -2,7 +2,8 @@ from django.shortcuts import render_to_response
from django.template import RequestContext
from django.utils.translation import ugettext_lazy as _
-from common.utils import exists_with_famfam, return_type
+from common.utils import return_type
+from common.widgets import exists_with_famfam
from smart_settings.api import settings
diff --git a/apps/tags/__init__.py b/apps/tags/__init__.py
index 1eb980abcc..978f433702 100644
--- a/apps/tags/__init__.py
+++ b/apps/tags/__init__.py
@@ -9,6 +9,8 @@ from documents.models import Document
from taggit.models import Tag
+from tags.widgets import tag_color_block
+
PERMISSION_TAG_CREATE = {'namespace': 'tags', 'name': 'tag_create', 'label': _(u'Create new tags')}
PERMISSION_TAG_ATTACH = {'namespace': 'tags', 'name': 'tag_attach', 'label': _(u'Attach exising tags')}
PERMISSION_TAG_REMOVE = {'namespace': 'tags', 'name': 'tag_remove', 'label': _(u'Remove tags from documents')}
@@ -33,8 +35,7 @@ tag_multiple_delete = {'text': _(u'delete'), 'view': 'tag_multiple_delete', 'fam
register_model_list_columns(Tag, [
{
'name': _(u'color'),
- 'attribute': lambda x: u'' %
- x.tagproperties_set.get().get_color_code(),
+ 'attribute': lambda x: tag_color_block(x)
},
{
'name': _(u'color name'),
diff --git a/apps/tags/widgets.py b/apps/tags/widgets.py
index fc9350ba92..b73184dac3 100644
--- a/apps/tags/widgets.py
+++ b/apps/tags/widgets.py
@@ -1,7 +1,11 @@
from django.utils.translation import ugettext_lazy as _
+from django.utils.safestring import mark_safe
def get_tags_inline_widget(document):
+ """
+ A tag widget that includes the total tag count for a given document
+ """
tags_template = []
tag_block_template = u'