Replace function views with class based views
This commit is contained in:
@@ -3,12 +3,13 @@ from __future__ import unicode_literals
|
||||
from django.conf.urls import patterns, url
|
||||
|
||||
from .api_views import APICheckedoutDocumentListView, APICheckedoutDocumentView
|
||||
from .views import CheckoutListView
|
||||
|
||||
urlpatterns = patterns('checkouts.views',
|
||||
url(r'^list/$', 'checkout_list', (), 'checkout_list'),
|
||||
url(r'^(?P<document_pk>\d+)/check/out/$', 'checkout_document', (), 'checkout_document'),
|
||||
url(r'^(?P<document_pk>\d+)/check/in/$', 'checkin_document', (), 'checkin_document'),
|
||||
url(r'^(?P<document_pk>\d+)/check/info/$', 'checkout_info', (), 'checkout_info'),
|
||||
url(r'^list/$', CheckoutListView.as_view(), name='checkout_list'),
|
||||
url(r'^(?P<document_pk>\d+)/check/out/$', 'checkout_document', name='checkout_document'),
|
||||
url(r'^(?P<document_pk>\d+)/check/in/$', 'checkin_document', name='checkin_document'),
|
||||
url(r'^(?P<document_pk>\d+)/check/info/$', 'checkout_info', name='checkout_info'),
|
||||
)
|
||||
|
||||
api_urls = patterns('',
|
||||
|
||||
@@ -10,7 +10,7 @@ from django.template import RequestContext
|
||||
from django.utils.translation import ugettext_lazy as _
|
||||
|
||||
from documents.models import Document
|
||||
from documents.views import document_list
|
||||
from documents.views import DocumentListView
|
||||
|
||||
from acls.models import AccessEntry
|
||||
from common.utils import encapsulate, get_object_name
|
||||
@@ -26,19 +26,18 @@ from .permissions import (
|
||||
)
|
||||
|
||||
|
||||
def checkout_list(request):
|
||||
return document_list(
|
||||
request,
|
||||
object_list=DocumentCheckout.objects.checked_out_documents(),
|
||||
title=_('Documents checked out'),
|
||||
extra_context={
|
||||
'extra_columns': [
|
||||
{'name': _('Checkout user'), 'attribute': encapsulate(lambda document: get_object_name(document.checkout_info().user_object, display_object_type=False))},
|
||||
{'name': _('Checkout time and date'), 'attribute': encapsulate(lambda document: document.checkout_info().checkout_datetime)},
|
||||
{'name': _('Checkout expiration'), 'attribute': encapsulate(lambda document: document.checkout_info().expiration_datetime)},
|
||||
],
|
||||
}
|
||||
)
|
||||
class CheckoutListView(DocumentListView):
|
||||
queryset = DocumentCheckout.objects.checked_out_documents()
|
||||
|
||||
extra_context = {
|
||||
'title': _('Documents checked out'),
|
||||
'hide_links': True,
|
||||
'extra_columns': [
|
||||
{'name': _('Checkout user'), 'attribute': encapsulate(lambda document: get_object_name(document.checkout_info().user_object, display_object_type=False))},
|
||||
{'name': _('Checkout time and date'), 'attribute': encapsulate(lambda document: document.checkout_info().checkout_datetime)},
|
||||
{'name': _('Checkout expiration'), 'attribute': encapsulate(lambda document: document.checkout_info().expiration_datetime)},
|
||||
],
|
||||
}
|
||||
|
||||
|
||||
def checkout_info(request, document_pk):
|
||||
|
||||
@@ -10,11 +10,11 @@ from .api_views import (
|
||||
APIRecentDocumentListView
|
||||
)
|
||||
from .settings import PRINT_SIZE, DISPLAY_SIZE
|
||||
from .views import DocumentListView
|
||||
from .views import DocumentListView, RecentDocumentListView
|
||||
|
||||
urlpatterns = patterns('documents.views',
|
||||
url(r'^list/$', DocumentListView.as_view(), name='document_list'),
|
||||
url(r'^list/recent/$', 'document_list_recent', (), 'document_list_recent'),
|
||||
url(r'^list/recent/$', RecentDocumentListView.as_view(), name='document_list_recent'),
|
||||
|
||||
url(r'^(?P<document_id>\d+)/preview/$', 'document_preview', (), 'document_preview'),
|
||||
url(r'^(?P<document_id>\d+)/content/$', 'document_content', (), 'document_content'),
|
||||
|
||||
@@ -21,8 +21,10 @@ from common.compressed_files import CompressedFile
|
||||
from common.utils import encapsulate, pretty_size, parse_range, urlquote
|
||||
from common.views import SingleObjectListView
|
||||
from common.widgets import two_state_template
|
||||
from converter.literals import (DEFAULT_FILE_FORMAT_MIMETYPE, DEFAULT_PAGE_NUMBER,
|
||||
DEFAULT_ROTATION, DEFAULT_ZOOM_LEVEL)
|
||||
from converter.literals import (
|
||||
DEFAULT_FILE_FORMAT_MIMETYPE, DEFAULT_PAGE_NUMBER, DEFAULT_ROTATION,
|
||||
DEFAULT_ZOOM_LEVEL
|
||||
)
|
||||
from filetransfers.api import serve_file
|
||||
from permissions.models import Permission
|
||||
|
||||
@@ -61,13 +63,23 @@ logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
class DocumentListView(SingleObjectListView):
|
||||
queryset = Document.objects.all()
|
||||
object_permission = PERMISSION_DOCUMENT_VIEW
|
||||
|
||||
extra_context = {
|
||||
'title': _('All documents'),
|
||||
'hide_links': True,
|
||||
'title': _('All documents'),
|
||||
}
|
||||
object_permission = PERMISSION_DOCUMENT_VIEW
|
||||
queryset = Document.objects.all()
|
||||
|
||||
|
||||
class RecentDocumentListView(DocumentListView):
|
||||
extra_context = {
|
||||
'hide_links': True,
|
||||
'recent_count': RECENT_COUNT,
|
||||
'title': _('Recent documents'),
|
||||
}
|
||||
|
||||
def get_queryset(self):
|
||||
return RecentDocument.objects.get_for_user(self.request.user)
|
||||
|
||||
|
||||
def document_list(request, object_list=None, title=None, extra_context=None):
|
||||
@@ -708,17 +720,6 @@ def document_page_navigation_last(request, document_page_id):
|
||||
return HttpResponseRedirect('{0}?{1}'.format(reverse(view, args=[document_page.pk]), request.GET.urlencode()))
|
||||
|
||||
|
||||
def document_list_recent(request):
|
||||
return document_list(
|
||||
request,
|
||||
object_list=RecentDocument.objects.get_for_user(request.user),
|
||||
title=_('Recent documents'),
|
||||
extra_context={
|
||||
'recent_count': RECENT_COUNT
|
||||
}
|
||||
)
|
||||
|
||||
|
||||
def transform_page(request, document_page_id, zoom_function=None, rotation_function=None):
|
||||
document_page = get_object_or_404(DocumentPage, pk=document_page_id)
|
||||
|
||||
|
||||
@@ -9,6 +9,7 @@ from .api_views import (
|
||||
APIDocumentTypeMetadataTypeRequiredView, APIMetadataTypeListView,
|
||||
APIMetadataTypeView
|
||||
)
|
||||
from .views import MissingRequiredMetadataDocumentListView
|
||||
|
||||
urlpatterns = patterns('metadata.views',
|
||||
url(r'^(?P<document_id>\d+)/edit/$', 'metadata_edit', (), 'metadata_edit'),
|
||||
@@ -27,7 +28,7 @@ urlpatterns = patterns('metadata.views',
|
||||
url(r'^setup/document/type/(?P<document_type_id>\d+)/metadata/edit/$', 'setup_document_type_metadata', (), 'setup_document_type_metadata'),
|
||||
url(r'^setup/document/type/(?P<document_type_id>\d+)/metadata/edit/required/$', 'setup_document_type_metadata_required', (), 'setup_document_type_metadata_required'),
|
||||
|
||||
url(r'^tools/missing_required_metadata/$', 'documents_missing_required_metadata', (), 'documents_missing_required_metadata'),
|
||||
url(r'^tools/missing_required_metadata/$', MissingRequiredMetadataDocumentListView.as_view(), name='documents_missing_required_metadata'),
|
||||
)
|
||||
|
||||
api_urls = patterns('',
|
||||
|
||||
@@ -15,7 +15,7 @@ from documents.models import Document, DocumentType
|
||||
from documents.permissions import (
|
||||
PERMISSION_DOCUMENT_TYPE_EDIT, PERMISSION_DOCUMENT_VIEW
|
||||
)
|
||||
from documents.views import document_list
|
||||
from documents.views import DocumentListView
|
||||
from permissions.models import Permission
|
||||
|
||||
from common.utils import encapsulate, generate_choices_w_labels
|
||||
@@ -34,6 +34,14 @@ from .permissions import (
|
||||
)
|
||||
|
||||
|
||||
class MissingRequiredMetadataDocumentListView(DocumentListView):
|
||||
extra_context = {
|
||||
'hide_links': True,
|
||||
'title': _('Documents missing required metadata'),
|
||||
}
|
||||
queryset = Document.objects.filter(document_type__metadata__required=True, metadata__value__isnull=True)
|
||||
|
||||
|
||||
def metadata_edit(request, document_id=None, document_id_list=None):
|
||||
if document_id:
|
||||
document_id_list = unicode(document_id)
|
||||
@@ -338,32 +346,6 @@ def metadata_view(request, document_id):
|
||||
}, context_instance=RequestContext(request))
|
||||
|
||||
|
||||
def documents_missing_required_metadata(request):
|
||||
pre_object_list = Document.objects.filter(document_type__metadata__required=True, metadata__value__isnull=True)
|
||||
|
||||
try:
|
||||
Permission.objects.check_permissions(request.user, [PERMISSION_DOCUMENT_VIEW])
|
||||
except PermissionDenied:
|
||||
# If user doesn't have global permission, get a list of document
|
||||
# for which he/she does hace access use it to filter the
|
||||
# provided object_list
|
||||
object_list = AccessEntry.objects.filter_objects_by_access(
|
||||
PERMISSION_DOCUMENT_VIEW, request.user, pre_object_list)
|
||||
else:
|
||||
object_list = pre_object_list
|
||||
|
||||
context = {
|
||||
'object_list': object_list,
|
||||
'title': _('Documents missing required metadata'),
|
||||
'hide_links': True,
|
||||
}
|
||||
|
||||
return document_list(
|
||||
request,
|
||||
extra_context=context
|
||||
)
|
||||
|
||||
|
||||
# Setup views
|
||||
def setup_metadata_type_list(request):
|
||||
Permission.objects.check_permissions(request.user, [PERMISSION_METADATA_TYPE_VIEW])
|
||||
|
||||
Reference in New Issue
Block a user