diff --git a/mayan/apps/common/icons.py b/mayan/apps/common/icons.py index 413e807e62..e689a21347 100644 --- a/mayan/apps/common/icons.py +++ b/mayan/apps/common/icons.py @@ -16,6 +16,9 @@ icon_current_user_locale_profile_edit = Icon( driver_name='fontawesome', symbol='globe' ) icon_documentation = Icon(driver_name='fontawesome', symbol='book') +icon_fail = Icon( + driver_name='fontawesome', symbol='times' +) icon_forum = Icon( driver_name='fontawesome', symbol='life-ring' ) @@ -31,6 +34,9 @@ icon_menu_user = Icon( icon_object_error_list_with_icon = Icon( driver_name='fontawesome', symbol='lock' ) +icon_ok = Icon( + driver_name='fontawesome', symbol='check' +) icon_packages_licenses = Icon( driver_name='fontawesome', symbol='certificate' ) @@ -43,3 +49,4 @@ icon_support = Icon( icon_tools = Icon( driver_name='fontawesome', symbol='wrench' ) + diff --git a/mayan/apps/common/widgets.py b/mayan/apps/common/widgets.py index f8ebf0fca4..a4b021097f 100644 --- a/mayan/apps/common/widgets.py +++ b/mayan/apps/common/widgets.py @@ -5,6 +5,8 @@ from django.utils.encoding import force_text from django.utils.html import format_html from django.utils.safestring import mark_safe +from icons import icon_fail as default_icon_fail, icon_ok as default_icon_ok + class DisableableSelectWidget(forms.SelectMultiple): allow_multiple_selected = True @@ -76,8 +78,22 @@ class TextAreaDiv(forms.widgets.Widget): super(TextAreaDiv, self).__init__(default_attrs) -def two_state_template(state, ok_icon='fa fa-check', fail_icon='fa fa-times'): - if state: - return mark_safe(''.format(ok_icon)) - else: - return mark_safe(''.format(fail_icon)) +class TwoStateWidget(object): + def __init__(self, state, icon_ok=None, icon_fail=None): + self.state = state + self.icon_ok = icon_ok or default_icon_ok + self.icon_fail = icon_fail or default_icon_fail + + def render(self): + if self.state: + return mark_safe( + '
{}
'.format( + self.icon_ok.render() + ) + ) + else: + return mark_safe( + '
{}
'.format( + self.icon_fail.render() + ) + ) diff --git a/mayan/apps/document_indexing/apps.py b/mayan/apps/document_indexing/apps.py index 03084da236..b28324c260 100644 --- a/mayan/apps/document_indexing/apps.py +++ b/mayan/apps/document_indexing/apps.py @@ -14,7 +14,7 @@ from common import ( MayanAppConfig, menu_facet, menu_main, menu_object, menu_secondary, menu_setup, menu_tools ) -from common.widgets import two_state_template +from common.widgets import TwoStateWidget from documents.signals import post_document_created, post_initial_document_type from mayan.celery import app from navigation import SourceColumn @@ -80,7 +80,9 @@ class DocumentIndexingApp(MayanAppConfig): SourceColumn(source=Index, label=_('Slug'), attribute='slug') SourceColumn( source=Index, label=_('Enabled'), - func=lambda context: two_state_template(context['object'].enabled) + func=lambda context: TwoStateWidget( + state=context['object'].enabled + ).render() ) SourceColumn( @@ -108,13 +110,15 @@ class DocumentIndexingApp(MayanAppConfig): ) SourceColumn( source=IndexTemplateNode, label=_('Enabled'), - func=lambda context: two_state_template(context['object'].enabled) + func=lambda context: TwoStateWidget( + state=context['object'].enabled + ).render() ) SourceColumn( source=IndexTemplateNode, label=_('Has document links?'), - func=lambda context: two_state_template( - context['object'].link_documents - ) + func=lambda context: TwoStateWidget( + state=context['object'].link_documents + ).render() ) SourceColumn( diff --git a/mayan/apps/document_states/apps.py b/mayan/apps/document_states/apps.py index 92f1195991..85a64ad6d7 100644 --- a/mayan/apps/document_states/apps.py +++ b/mayan/apps/document_states/apps.py @@ -15,7 +15,7 @@ from common import ( from common.classes import ModelAttribute from common.links import link_object_error_list from common.permissions_runtime import permission_error_log_view -from common.widgets import two_state_template +from common.widgets import TwoStateWidget from mayan.celery import app from navigation import SourceColumn @@ -198,7 +198,9 @@ class DocumentStatesApp(MayanAppConfig): SourceColumn( source=WorkflowState, label=_('Is initial state?'), - func=lambda context: two_state_template(context['object'].initial) + func=lambda context: TwoStateWidget( + state=context['object'].initial + ).render() ) SourceColumn( source=WorkflowState, label=_('Completion'), attribute='completion' @@ -209,7 +211,9 @@ class DocumentStatesApp(MayanAppConfig): ) SourceColumn( source=WorkflowStateAction, label=_('Enabled?'), - func=lambda context: two_state_template(context['object'].enabled) + func=lambda context: TwoStateWidget( + state=context['object'].enabled + ).render() ) SourceColumn( source=WorkflowStateAction, label=_('When?'), diff --git a/mayan/apps/documents/apps.py b/mayan/apps/documents/apps.py index 3416c1e1d4..b5076efd10 100644 --- a/mayan/apps/documents/apps.py +++ b/mayan/apps/documents/apps.py @@ -17,7 +17,7 @@ from common import ( from common.classes import ModelAttribute from common.dashboards import dashboard_main from common.signals import post_initial_setup -from common.widgets import two_state_template +from common.widgets import TwoStateWidget from converter.links import link_transformation_list from converter.permissions import ( permission_transformation_create, @@ -251,7 +251,9 @@ class DocumentsApp(MayanAppConfig): SourceColumn( source=DocumentTypeFilename, label=_('Enabled'), - func=lambda context: two_state_template(context['object'].enabled) + func=lambda context: TwoStateWidget( + state=context['object'].enabled + ).render() ) # DeletedDocument diff --git a/mayan/apps/events/apps.py b/mayan/apps/events/apps.py index 33283841f0..8de1e7012a 100644 --- a/mayan/apps/events/apps.py +++ b/mayan/apps/events/apps.py @@ -8,7 +8,7 @@ from common import ( MayanAppConfig, menu_main, menu_object, menu_secondary, menu_tools, menu_user ) -from common.widgets import two_state_template +from common.widgets import TwoStateWidget from navigation import SourceColumn from .links import ( @@ -75,9 +75,9 @@ class EventsApp(MayanAppConfig): ) SourceColumn( source=Notification, label=_('Seen'), - func=lambda context: two_state_template( + func=lambda context: TwoStateWidget( state=context['object'].read - ) + ).render() ) menu_main.bind_links( diff --git a/mayan/apps/linking/apps.py b/mayan/apps/linking/apps.py index fc3dc5bfdb..56fee57d08 100644 --- a/mayan/apps/linking/apps.py +++ b/mayan/apps/linking/apps.py @@ -10,7 +10,7 @@ from common import ( MayanAppConfig, menu_facet, menu_object, menu_secondary, menu_setup, menu_sidebar ) -from common.widgets import two_state_template +from common.widgets import TwoStateWidget from navigation import SourceColumn from .links import ( @@ -65,12 +65,16 @@ class LinkingApp(MayanAppConfig): ) SourceColumn( source=SmartLink, label=_('Enabled'), - func=lambda context: two_state_template(context['object'].enabled) + func=lambda context: TwoStateWidget( + state=context['object'].enabled + ).render() ) SourceColumn( source=SmartLinkCondition, label=_('Enabled'), - func=lambda context: two_state_template(context['object'].enabled) + func=lambda context: TwoStateWidget( + state=context['object'].enabled + ).render() ) menu_facet.bind_links( diff --git a/mayan/apps/mailer/apps.py b/mayan/apps/mailer/apps.py index 3b465426b6..a9d95ad7f8 100644 --- a/mayan/apps/mailer/apps.py +++ b/mayan/apps/mailer/apps.py @@ -12,7 +12,7 @@ from common import ( MayanAppConfig, menu_object, menu_multi_item, menu_secondary, menu_setup, menu_tools ) -from common.widgets import two_state_template +from common.widgets import TwoStateWidget from mayan.celery import app from navigation import SourceColumn @@ -60,15 +60,15 @@ class MailerApp(MayanAppConfig): ) SourceColumn( source=UserMailer, label=_('Default?'), - func=lambda context: two_state_template( - context['object'].default - ) + func=lambda context: TwoStateWidget( + state=context['object'].default + ).render() ) SourceColumn( source=UserMailer, label=_('Enabled?'), - func=lambda context: two_state_template( - context['object'].enabled - ) + func=lambda context: TwoStateWidget( + state=context['object'].enabled + ).render() ) SourceColumn( source=UserMailer, label=_('Label'), attribute='backend_label' diff --git a/mayan/apps/metadata/apps.py b/mayan/apps/metadata/apps.py index b169f165a5..a5163f4538 100644 --- a/mayan/apps/metadata/apps.py +++ b/mayan/apps/metadata/apps.py @@ -14,7 +14,7 @@ from common import ( menu_setup, menu_sidebar ) from common.classes import ModelAttribute -from common.widgets import two_state_template +from common.widgets import TwoStateWidget from documents.search import document_page_search, document_search from documents.signals import post_document_type_change from mayan.celery import app @@ -135,9 +135,9 @@ class MetadataApp(MayanAppConfig): ) SourceColumn( source=DocumentMetadata, label=_('Required'), - func=lambda context: two_state_template( - context['object'].is_required - ) + func=lambda context: TwoStateWidget( + state=context['object'].is_required + ).render() ) app.conf.CELERY_QUEUES.append( diff --git a/mayan/apps/sources/views.py b/mayan/apps/sources/views.py index 6f624ac4bd..81cd45cba9 100644 --- a/mayan/apps/sources/views.py +++ b/mayan/apps/sources/views.py @@ -18,7 +18,7 @@ from common.views import ( ConfirmView, MultiFormView, SingleObjectCreateView, SingleObjectDeleteView, SingleObjectEditView, SingleObjectListView ) -from common.widgets import two_state_template +from common.widgets import TwoStateWidget from documents.models import DocumentType, Document from documents.permissions import ( permission_document_create, permission_document_new_version @@ -574,7 +574,7 @@ class SetupSourceListView(SingleObjectListView): { 'name': _('Enabled'), 'attribute': encapsulate( - lambda entry: two_state_template(entry.enabled) + lambda entry: TwoStateWidget(state=entry.enabled).render() ) }, ), diff --git a/mayan/apps/task_manager/apps.py b/mayan/apps/task_manager/apps.py index 67c4aa55e0..2660d558f8 100644 --- a/mayan/apps/task_manager/apps.py +++ b/mayan/apps/task_manager/apps.py @@ -5,7 +5,7 @@ from django.utils.translation import ugettext_lazy as _ from common import ( MayanAppConfig, menu_object, menu_secondary, menu_tools ) -from common.widgets import two_state_template +from common.widgets import TwoStateWidget from navigation import SourceColumn from .classes import CeleryQueue, Task @@ -34,15 +34,15 @@ class TaskManagerApp(MayanAppConfig): ) SourceColumn( source=CeleryQueue, label=_('Default queue?'), - func=lambda context: two_state_template( - context['object'].is_default_queue - ) + func=lambda context: TwoStateWidget( + state=context['object'].is_default_queue + ).render() ) SourceColumn( source=CeleryQueue, label=_('Is transient?'), - func=lambda context: two_state_template( - context['object'].is_transient - ) + func=lambda context: TwoStateWidget( + state=context['object'].is_transient + ).render() ) SourceColumn( source=Task, label=_('Type'), attribute='task_type' @@ -56,9 +56,9 @@ class TaskManagerApp(MayanAppConfig): ) SourceColumn( source=Task, label=_('Acknowledged'), - func=lambda context: two_state_template( - context['object'].kwargs['acknowledged'] - ) + func=lambda context: TwoStateWidget( + state=context['object'].kwargs['acknowledged'] + ).render() ) SourceColumn( source=Task, label=_('Arguments'), diff --git a/mayan/apps/user_management/apps.py b/mayan/apps/user_management/apps.py index 908491f7bc..5e1df8d9ae 100644 --- a/mayan/apps/user_management/apps.py +++ b/mayan/apps/user_management/apps.py @@ -9,7 +9,7 @@ from acls.links import link_acl_list from acls.permissions import permission_acl_edit, permission_acl_view from common import menu_multi_item, menu_object, menu_secondary, menu_setup from common.apps import MayanAppConfig -from common.widgets import two_state_template +from common.widgets import TwoStateWidget from metadata import MetadataLookup from navigation import SourceColumn from rest_api.fields import DynamicSerializerField @@ -96,15 +96,15 @@ class UserManagementApp(MayanAppConfig): ) SourceColumn( source=User, label=_('Active'), - func=lambda context: two_state_template( - context['object'].is_active - ) + func=lambda context: TwoStateWidget( + state=context['object'].is_active + ).render() ) SourceColumn( source=User, label=_('Has usable password?'), - func=lambda context: two_state_template( - context['object'].has_usable_password() - ) + func=lambda context: TwoStateWidget( + state=context['object'].has_usable_password() + ).render() ) menu_multi_item.bind_links(