Replace index, workflow, document and statistics views that use 'object_list' to SingleObjectListView class.
This commit is contained in:
@@ -8,9 +8,9 @@ from .api_views import (
|
||||
APIIndexTemplateView, APIIndexView
|
||||
)
|
||||
from .views import (
|
||||
IndexInstanceNodeView, IndexListView, SetupIndexDocumentTypesView,
|
||||
SetupIndexCreateView, SetupIndexDeleteView, SetupIndexEditView,
|
||||
SetupIndexListView
|
||||
DocumentIndexNodeListView, IndexInstanceNodeView, IndexListView,
|
||||
SetupIndexDocumentTypesView, SetupIndexCreateView, SetupIndexDeleteView,
|
||||
SetupIndexEditView, SetupIndexListView, SetupIndexTreeTemplateListView
|
||||
)
|
||||
|
||||
urlpatterns = patterns(
|
||||
@@ -32,8 +32,8 @@ urlpatterns = patterns(
|
||||
name='index_setup_delete'
|
||||
),
|
||||
url(
|
||||
r'^setup/index/(?P<index_pk>\d+)/view/$', 'index_setup_view',
|
||||
name='index_setup_view'
|
||||
r'^setup/index/(?P<pk>\d+)/template/$',
|
||||
SetupIndexTreeTemplateListView.as_view(), name='index_setup_view'
|
||||
),
|
||||
url(
|
||||
r'^setup/index/(?P<pk>\d+)/document_types/$',
|
||||
@@ -63,8 +63,8 @@ urlpatterns = patterns(
|
||||
name='rebuild_index_instances'
|
||||
),
|
||||
url(
|
||||
r'^list/for/document/(?P<document_id>\d+)/$', 'document_index_list',
|
||||
name='document_index_list'
|
||||
r'^list/for/document/(?P<pk>\d+)/$',
|
||||
DocumentIndexNodeListView.as_view(), name='document_index_list'
|
||||
),
|
||||
)
|
||||
|
||||
|
||||
@@ -88,50 +88,40 @@ class SetupIndexDeleteView(SingleObjectDeleteView):
|
||||
}
|
||||
|
||||
|
||||
def index_setup_view(request, index_pk):
|
||||
index = get_object_or_404(Index, pk=index_pk)
|
||||
class SetupIndexTreeTemplateListView(SingleObjectListView):
|
||||
view_permission = permission_document_indexing_setup
|
||||
|
||||
try:
|
||||
Permission.check_permissions(
|
||||
request.user, (permission_document_indexing_setup,)
|
||||
)
|
||||
except PermissionDenied:
|
||||
AccessControlList.objects.check_access(
|
||||
permission_document_indexing_setup, request.user, index
|
||||
)
|
||||
def get_index(self):
|
||||
return get_object_or_404(Index, pk=self.kwargs['pk'])
|
||||
|
||||
object_list = index.template_root.get_descendants(include_self=True)
|
||||
def get_queryset(self):
|
||||
return self.get_index().template_root.get_descendants(include_self=True)
|
||||
|
||||
context = {
|
||||
'object_list': object_list,
|
||||
'index': index,
|
||||
'navigation_object_list': ('index',),
|
||||
'title': _('Tree template nodes for index: %s') % index,
|
||||
'hide_object': True,
|
||||
'extra_columns': [
|
||||
def get_extra_context(self):
|
||||
return {
|
||||
'extra_columns': (
|
||||
{
|
||||
'name': _('Level'), 'attribute': encapsulate(
|
||||
lambda x: node_level(x)
|
||||
lambda node: node_level(node)
|
||||
)
|
||||
},
|
||||
{
|
||||
'name': _('Enabled'), 'attribute': encapsulate(
|
||||
lambda x: two_state_template(x.enabled)
|
||||
lambda node: two_state_template(node.enabled)
|
||||
)
|
||||
},
|
||||
{
|
||||
'name': _('Has document links?'), 'attribute': encapsulate(
|
||||
lambda x: two_state_template(x.link_documents)
|
||||
lambda node: two_state_template(node.link_documents)
|
||||
)
|
||||
},
|
||||
],
|
||||
),
|
||||
'hide_object': True,
|
||||
'index': self.get_index(),
|
||||
'navigation_object_list': ('index',),
|
||||
'title': _('Tree template nodes for index: %s') % self.get_index(),
|
||||
}
|
||||
|
||||
return render_to_response(
|
||||
'appearance/generic_list.html', context,
|
||||
context_instance=RequestContext(request)
|
||||
)
|
||||
|
||||
|
||||
class SetupIndexDocumentTypesView(AssignRemoveView):
|
||||
decode_content_type = True
|
||||
@@ -434,38 +424,49 @@ def rebuild_index_instances(request):
|
||||
return HttpResponseRedirect(next)
|
||||
|
||||
|
||||
def document_index_list(request, document_id):
|
||||
class DocumentIndexNodeListView(SingleObjectListView):
|
||||
"""
|
||||
Show a list of indexes where the current document can be found
|
||||
"""
|
||||
|
||||
document = get_object_or_404(Document, pk=document_id)
|
||||
object_list = []
|
||||
object_permission = permission_document_indexing_view
|
||||
object_permission_related = 'index'
|
||||
|
||||
queryset = document.node_instances.all()
|
||||
def dispatch(self, request, *args, **kwargs):
|
||||
try:
|
||||
# TODO: should be AND not OR
|
||||
Permission.check_permissions(
|
||||
request.user, (
|
||||
permission_document_view, permission_document_indexing_view
|
||||
)
|
||||
request.user, (permission_document_view,)
|
||||
)
|
||||
except PermissionDenied:
|
||||
queryset = AccessControlList.objects.filter_by_access(
|
||||
permission_document_indexing_view, request.user, queryset,
|
||||
related='index'
|
||||
AccessControlList.objects.check_access(
|
||||
permission_document_view, request.user, self.get_document()
|
||||
)
|
||||
|
||||
for index_instance in queryset:
|
||||
object_list.append(
|
||||
get_breadcrumbs(
|
||||
index_instance, single_link=True, include_count=True
|
||||
)
|
||||
)
|
||||
return super(
|
||||
DocumentIndexNodeListView, self
|
||||
).dispatch(request, *args, **kwargs)
|
||||
|
||||
return render_to_response('appearance/generic_list.html', {
|
||||
'object_list': object_list,
|
||||
'object': document,
|
||||
'hide_link': True,
|
||||
'title': _('Indexes containing document: %s') % document,
|
||||
}, context_instance=RequestContext(request))
|
||||
def get_document(self):
|
||||
return get_object_or_404(Document, pk=self.kwargs['pk'])
|
||||
|
||||
def get_extra_context(self):
|
||||
return {
|
||||
'extra_columns': (
|
||||
{
|
||||
'name': _('Node'),
|
||||
'attribute': encapsulate(
|
||||
lambda node: get_breadcrumbs(
|
||||
index_instance_node=node, single_link=True, include_count=True
|
||||
)
|
||||
)
|
||||
},
|
||||
),
|
||||
'hide_object': True,
|
||||
'object': self.get_document(),
|
||||
'title': _(
|
||||
'Indexes nodes containing document: %s'
|
||||
) % self.get_document(),
|
||||
}
|
||||
|
||||
def get_queryset(self):
|
||||
return self.get_document().node_instances.all()
|
||||
|
||||
@@ -115,25 +115,22 @@ class WorkflowInstanceDetailView(SingleObjectListView):
|
||||
WorkflowInstanceDetailView, self
|
||||
).dispatch(request, *args, **kwargs)
|
||||
|
||||
def get_workflow_instance(self):
|
||||
return get_object_or_404(WorkflowInstance, pk=self.kwargs['pk'])
|
||||
|
||||
def get_queryset(self):
|
||||
return self.get_workflow_instance().log_entries.order_by('-datetime')
|
||||
|
||||
def get_context_data(self, **kwargs):
|
||||
context = {
|
||||
def get_extra_context(self):
|
||||
return {
|
||||
'hide_object': True,
|
||||
'navigation_object_list': ('object', 'workflow_instance'),
|
||||
'object': self.get_workflow_instance().document,
|
||||
'object_list': self.get_queryset(),
|
||||
'title': _('Detail of workflow: %(workflow)s') % {
|
||||
'workflow': self.get_workflow_instance()
|
||||
},
|
||||
'workflow_instance': self.get_workflow_instance(),
|
||||
}
|
||||
|
||||
return context
|
||||
def get_queryset(self):
|
||||
return self.get_workflow_instance().log_entries.order_by('-datetime')
|
||||
|
||||
def get_workflow_instance(self):
|
||||
return get_object_or_404(WorkflowInstance, pk=self.kwargs['pk'])
|
||||
|
||||
|
||||
class WorkflowInstanceTransitionView(FormView):
|
||||
|
||||
@@ -1009,10 +1009,12 @@ class DocumentTypeFilenameListView(SingleObjectListView):
|
||||
),
|
||||
'hide_link': True,
|
||||
'navigation_object_list': ('document_type',),
|
||||
'object_list': self.get_document_type().filenames.all(),
|
||||
'title': _('Filenames for document type: %s') % self.get_document_type(),
|
||||
}
|
||||
|
||||
def get_queryset(self):
|
||||
return self.get_document_type().filenames.all()
|
||||
|
||||
|
||||
class DocumentTypeFilenameEditView(SingleObjectEditView):
|
||||
fields = ('enabled', 'filename',)
|
||||
|
||||
@@ -1,52 +1,62 @@
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.http import Http404
|
||||
from django.utils.translation import ugettext_lazy as _
|
||||
|
||||
from common.views import SimpleView
|
||||
from common.views import SingleObjectListView
|
||||
|
||||
from .classes import Statistic, StatisticNamespace
|
||||
from .permissions import permission_statistics_view
|
||||
|
||||
|
||||
class NamespaceListView(SimpleView):
|
||||
template_name = 'appearance/generic_list.html'
|
||||
view_permission = permission_statistics_view
|
||||
|
||||
def get_extra_context(self):
|
||||
return {
|
||||
class NamespaceListView(SingleObjectListView):
|
||||
extra_context = {
|
||||
'hide_link': True,
|
||||
'object_list': StatisticNamespace.get_all(),
|
||||
'title': _('Statistics namespaces'),
|
||||
}
|
||||
template_name = 'appearance/generic_list.html'
|
||||
view_permission = permission_statistics_view
|
||||
|
||||
def get_queryset(self):
|
||||
return StatisticNamespace.get_all()
|
||||
|
||||
|
||||
class NamespaceDetailView(SimpleView):
|
||||
class NamespaceDetailView(SingleObjectListView):
|
||||
template_name = 'appearance/generic_list.html'
|
||||
view_permission = permission_statistics_view
|
||||
|
||||
def get_extra_context(self):
|
||||
namespace = StatisticNamespace.get(self.kwargs['namespace_id'])
|
||||
|
||||
return {
|
||||
'hide_link': True,
|
||||
'object': namespace,
|
||||
'object_list': namespace.statistics,
|
||||
'title': _('Namespace details for: %s') % namespace,
|
||||
'object': self.get_namespace(),
|
||||
'title': _('Namespace details for: %s') % self.get_namespace(),
|
||||
}
|
||||
|
||||
def get_namespace(self):
|
||||
return StatisticNamespace.get(self.kwargs['namespace_id'])
|
||||
|
||||
class StatisticExecute(SimpleView):
|
||||
def get_queryset(self):
|
||||
return self.get_namespace().statistics
|
||||
|
||||
|
||||
class StatisticExecute(SingleObjectListView):
|
||||
template_name = 'appearance/generic_list.html'
|
||||
view_permission = permission_statistics_view
|
||||
|
||||
def get_extra_context(self):
|
||||
statictic = Statistic.get(self.kwargs['statistic_id'])
|
||||
|
||||
return {
|
||||
'hide_link': True,
|
||||
'namespace': statictic.namespace,
|
||||
'namespace': self.get_statictic().namespace,
|
||||
'navigation_object_list': ('namespace', 'object'),
|
||||
'object': statictic,
|
||||
'object_list': statictic.get_results(),
|
||||
'title': _('Results for: %s') % statictic,
|
||||
'object': self.get_statictic(),
|
||||
'title': _('Results for: %s') % self.get_statictic(),
|
||||
}
|
||||
|
||||
def get_queryset(self):
|
||||
return self.get_statictic().get_results()
|
||||
|
||||
def get_statictic(self):
|
||||
try:
|
||||
return Statistic.get(self.kwargs['statistic_id'])
|
||||
except KeyError:
|
||||
raise Http404(_('Statistic "%s" not found.') % self.kwargs['statistic_id'])
|
||||
|
||||
Reference in New Issue
Block a user