Convert document metadata list view to CBV.

This commit is contained in:
Roberto Rosario
2015-08-14 14:54:04 -04:00
parent 0fa11810c6
commit 0fe902b52a
2 changed files with 40 additions and 26 deletions
+4 -3
View File
@@ -10,8 +10,9 @@ from .api_views import (
APIMetadataTypeView APIMetadataTypeView
) )
from .views import ( from .views import (
MetadataTypeCreateView, MetadataTypeDeleteView, MetadataTypeEditView, DocumentMetadataListView, MetadataTypeCreateView, MetadataTypeDeleteView,
MetadataTypeListView, MissingRequiredMetadataDocumentListView, MetadataTypeEditView, MetadataTypeListView,
MissingRequiredMetadataDocumentListView,
SetupDocumentTypeMetadataOptionalView, SetupDocumentTypeMetadataOptionalView,
SetupDocumentTypeMetadataRequiredView SetupDocumentTypeMetadataRequiredView
) )
@@ -20,7 +21,7 @@ urlpatterns = patterns(
'metadata.views', 'metadata.views',
url(r'^(?P<document_id>\d+)/edit/$', 'metadata_edit', name='metadata_edit'), url(r'^(?P<document_id>\d+)/edit/$', 'metadata_edit', name='metadata_edit'),
url( url(
r'^(?P<document_id>\d+)/view/$', 'metadata_view', r'^(?P<pk>\d+)/view/$', DocumentMetadataListView.as_view(),
name='metadata_view' name='metadata_view'
), ),
url( url(
+36 -23
View File
@@ -12,7 +12,7 @@ from django.utils.translation import ugettext_lazy as _, ungettext
from acls.models import AccessControlList from acls.models import AccessControlList
from common.utils import encapsulate from common.utils import encapsulate
from common.views import ( from common.generics import (
AssignRemoveView, SingleObjectCreateView, SingleObjectDeleteView, AssignRemoveView, SingleObjectCreateView, SingleObjectDeleteView,
SingleObjectEditView, SingleObjectListView SingleObjectEditView, SingleObjectListView
) )
@@ -473,31 +473,44 @@ def metadata_multiple_remove(request):
) )
def metadata_view(request, document_id): class DocumentMetadataListView(SingleObjectListView):
document = get_object_or_404(Document, pk=document_id) def dispatch(self, request, *args, **kwargs):
try:
Permission.check_permissions(
self.request.user, (permission_metadata_document_view,)
)
except PermissionDenied:
AccessControlList.objects.check_access(
permission_metadata_document_view, self.request.user,
self.get_document()
)
try: return super(DocumentMetadataListView, self).dispatch(
Permission.check_permissions( request, *args, **kwargs
request.user, (permission_metadata_document_view,)
)
except PermissionDenied:
AccessControlList.objects.check_access(
permission_metadata_document_view, request.user, document
) )
return render_to_response('appearance/generic_list.html', { def get_document(self):
'title': _('Metadata for document: %s') % document, return get_object_or_404(Document, pk=self.kwargs['pk'])
'object_list': document.metadata.all(),
'extra_columns': [ def get_extra_context(self):
{'name': _('Value'), 'attribute': 'value'}, document = self.get_document()
{ return {
'name': _('Required'), 'title': _('Metadata for document: %s') % document,
'attribute': encapsulate(lambda x: x.metadata_type in document.document_type.metadata.filter(required=True)) 'extra_columns': (
} {'name': _('Value'), 'attribute': 'value'},
], {
'hide_link': True, 'name': _('Required'),
'object': document, 'attribute': encapsulate(
}, context_instance=RequestContext(request)) lambda metadata: metadata.metadata_type in document.document_type.metadata.filter(required=True)
)
}
),
'hide_link': True,
'object': document,
}
def get_queryset(self):
return self.get_document().metadata.all()
# Setup views # Setup views