Convert document metadata list view to CBV.
This commit is contained in:
@@ -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(
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user