Add new class based dashboard widget. This new widget supports subclassing and is template based. All exising widgets have been converted. ACL filtering was added to the widget results.
Signed-off-by: Roberto Rosario <roberto.rosario.gonzalez@gmail.com>
This commit is contained in:
@@ -4,21 +4,33 @@ from django.apps import apps
|
||||
from django.urls import reverse_lazy
|
||||
from django.utils.translation import ugettext_lazy as _
|
||||
|
||||
from common.classes import DashboardWidget
|
||||
from common.classes import DashboardWidgetNumeric
|
||||
from documents.permissions import permission_document_view
|
||||
|
||||
from .icons import icon_dashboard_checkouts
|
||||
from .permissions import permission_document_checkout_detail_view
|
||||
|
||||
|
||||
def checkedout_documents_queryset():
|
||||
DocumentCheckout = apps.get_model(
|
||||
app_label='checkouts', model_name='DocumentCheckout'
|
||||
)
|
||||
return DocumentCheckout.objects.all()
|
||||
class DashboardWidgetTotalCheckouts(DashboardWidgetNumeric):
|
||||
icon_class = icon_dashboard_checkouts
|
||||
label = _('Checkedout documents')
|
||||
link = reverse_lazy('checkouts:checkout_list')
|
||||
|
||||
|
||||
widget_checkouts = DashboardWidget(
|
||||
icon_class=icon_dashboard_checkouts,
|
||||
label=_('Checkedout documents'),
|
||||
link=reverse_lazy('checkouts:checkout_list'),
|
||||
queryset=checkedout_documents_queryset
|
||||
)
|
||||
def render(self, request):
|
||||
AccessControlList = apps.get_model(
|
||||
app_label='acls', model_name='AccessControlList'
|
||||
)
|
||||
DocumentCheckout = apps.get_model(
|
||||
app_label='checkouts', model_name='DocumentCheckout'
|
||||
)
|
||||
queryset = AccessControlList.objects.filter_by_access(
|
||||
permission=permission_document_checkout_detail_view,
|
||||
user=request.user,
|
||||
queryset=DocumentCheckout.objects.checked_out_documents()
|
||||
)
|
||||
queryset = AccessControlList.objects.filter_by_access(
|
||||
permission=permission_document_view, user=request.user,
|
||||
queryset=queryset
|
||||
)
|
||||
self.count = queryset.count()
|
||||
return super(DashboardWidgetTotalCheckouts, self).render(request)
|
||||
|
||||
Reference in New Issue
Block a user