Update documents app to comply with MERCs 5
Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
This commit is contained in:
@@ -46,6 +46,7 @@ class APIDeletedDocumentListView(generics.ListAPIView):
|
||||
Returns a list of all the trashed documents.
|
||||
"""
|
||||
filter_backends = (MayanObjectPermissionsFilter,)
|
||||
lookup_url_kwarg = 'document_pk'
|
||||
mayan_object_permissions = {'GET': (permission_document_view,)}
|
||||
permission_classes = (MayanPermission,)
|
||||
queryset = Document.trash.all()
|
||||
@@ -58,6 +59,7 @@ class APIDeletedDocumentView(generics.RetrieveDestroyAPIView):
|
||||
delete: Delete the trashed document.
|
||||
get: Retreive the details of the trashed document.
|
||||
"""
|
||||
lookup_url_kwarg = 'document_pk'
|
||||
mayan_object_permissions = {
|
||||
'DELETE': (permission_document_delete,),
|
||||
'GET': (permission_document_view,)
|
||||
@@ -71,6 +73,7 @@ class APIDeletedDocumentRestoreView(generics.GenericAPIView):
|
||||
"""
|
||||
post: Restore a trashed document.
|
||||
"""
|
||||
lookup_url_kwarg = 'document_pk'
|
||||
mayan_object_permissions = {
|
||||
'POST': (permission_document_restore,)
|
||||
}
|
||||
@@ -92,6 +95,7 @@ class APIDocumentDownloadView(DownloadMixin, generics.RetrieveAPIView):
|
||||
"""
|
||||
get: Download the latest version of a document.
|
||||
"""
|
||||
lookup_url_kwarg = 'document_pk'
|
||||
mayan_object_permissions = {
|
||||
'GET': (permission_document_download,)
|
||||
}
|
||||
@@ -152,7 +156,7 @@ class APIDocumentPageImageView(generics.RetrieveAPIView):
|
||||
"""
|
||||
get: Returns an image representation of the selected document.
|
||||
"""
|
||||
lookup_url_kwarg = 'page_pk'
|
||||
lookup_url_kwarg = 'document_page_pk'
|
||||
|
||||
def get_document(self):
|
||||
if self.request.method == 'GET':
|
||||
@@ -160,7 +164,9 @@ class APIDocumentPageImageView(generics.RetrieveAPIView):
|
||||
else:
|
||||
permission_required = permission_document_edit
|
||||
|
||||
document = get_object_or_404(klass=Document.passthrough, pk=self.kwargs['pk'])
|
||||
document = get_object_or_404(
|
||||
klass=Document.passthrough, pk=self.kwargs['document_pk']
|
||||
)
|
||||
|
||||
AccessControlList.objects.check_access(
|
||||
permission_required, self.request.user, document
|
||||
@@ -169,7 +175,7 @@ class APIDocumentPageImageView(generics.RetrieveAPIView):
|
||||
|
||||
def get_document_version(self):
|
||||
return get_object_or_404(
|
||||
klass=self.get_document().versions.all(), pk=self.kwargs['version_pk']
|
||||
klass=self.get_document().versions.all(), pk=self.kwargs['document_version_pk']
|
||||
)
|
||||
|
||||
def get_queryset(self):
|
||||
@@ -247,7 +253,7 @@ class APIDocumentPageView(generics.RetrieveUpdateAPIView):
|
||||
patch: Edit the selected document page.
|
||||
put: Edit the selected document page.
|
||||
"""
|
||||
lookup_url_kwarg = 'page_pk'
|
||||
lookup_url_kwarg = 'document_page_pk'
|
||||
serializer_class = DocumentPageSerializer
|
||||
|
||||
def get_document(self):
|
||||
@@ -256,7 +262,9 @@ class APIDocumentPageView(generics.RetrieveUpdateAPIView):
|
||||
else:
|
||||
permission_required = permission_document_edit
|
||||
|
||||
document = get_object_or_404(klass=Document, pk=self.kwargs['pk'])
|
||||
document = get_object_or_404(
|
||||
klass=Document, pk=self.kwargs['document_pk']
|
||||
)
|
||||
|
||||
AccessControlList.objects.check_access(
|
||||
permission_required, self.request.user, document
|
||||
@@ -265,7 +273,8 @@ class APIDocumentPageView(generics.RetrieveUpdateAPIView):
|
||||
|
||||
def get_document_version(self):
|
||||
return get_object_or_404(
|
||||
klass=self.get_document().versions.all(), pk=self.kwargs['version_pk']
|
||||
klass=self.get_document().versions.all(),
|
||||
pk=self.kwargs['document_version_pk']
|
||||
)
|
||||
|
||||
def get_queryset(self):
|
||||
@@ -278,6 +287,7 @@ class APIDocumentTypeListView(generics.ListCreateAPIView):
|
||||
post: Create a new document type.
|
||||
"""
|
||||
filter_backends = (MayanObjectPermissionsFilter,)
|
||||
lookup_url_kwarg = 'document_type_pk'
|
||||
mayan_object_permissions = {'GET': (permission_document_type_view,)}
|
||||
mayan_view_permissions = {'POST': (permission_document_type_create,)}
|
||||
permission_classes = (MayanPermission,)
|
||||
@@ -304,6 +314,7 @@ class APIDocumentTypeView(generics.RetrieveUpdateDestroyAPIView):
|
||||
patch: Edit the properties of the selected document type.
|
||||
put: Edit the properties of the selected document type.
|
||||
"""
|
||||
lookup_url_kwarg = 'document_type_pk'
|
||||
mayan_object_permissions = {
|
||||
'GET': (permission_document_type_view,),
|
||||
'PUT': (permission_document_type_edit,),
|
||||
@@ -331,11 +342,14 @@ class APIDocumentTypeDocumentListView(generics.ListAPIView):
|
||||
Returns a list of all the documents of a particular document type.
|
||||
"""
|
||||
filter_backends = (MayanObjectPermissionsFilter,)
|
||||
lookup_url_kwarg = 'document_type_pk'
|
||||
mayan_object_permissions = {'GET': (permission_document_view,)}
|
||||
serializer_class = DocumentSerializer
|
||||
|
||||
def get_queryset(self):
|
||||
document_type = get_object_or_404(klass=DocumentType, pk=self.kwargs['pk'])
|
||||
document_type = get_object_or_404(
|
||||
klass=DocumentType, pk=self.kwargs['document_type_pk']
|
||||
)
|
||||
AccessControlList.objects.check_access(
|
||||
permissions=permission_document_type_view, user=self.request.user,
|
||||
obj=document_type
|
||||
@@ -348,10 +362,12 @@ class APIDocumentVersionDownloadView(DownloadMixin, generics.RetrieveAPIView):
|
||||
"""
|
||||
get: Download a document version.
|
||||
"""
|
||||
lookup_url_kwarg = 'version_pk'
|
||||
lookup_url_kwarg = 'document_version_pk'
|
||||
|
||||
def get_document(self):
|
||||
document = get_object_or_404(klass=Document, pk=self.kwargs['pk'])
|
||||
document = get_object_or_404(
|
||||
klass=Document, pk=self.kwargs['document_pk']
|
||||
)
|
||||
|
||||
AccessControlList.objects.check_access(
|
||||
permissions=(permission_document_download,), user=self.request.user,
|
||||
@@ -402,6 +418,7 @@ class APIDocumentView(generics.RetrieveUpdateDestroyAPIView):
|
||||
patch: Edit the properties of the selected document.
|
||||
put: Edit the properties of the selected document.
|
||||
"""
|
||||
lookup_url_kwarg = 'document_pk'
|
||||
mayan_object_permissions = {
|
||||
'GET': (permission_document_view,),
|
||||
'PUT': (permission_document_properties_edit,),
|
||||
@@ -445,7 +462,9 @@ class APIDocumentVersionPageListView(generics.ListAPIView):
|
||||
serializer_class = DocumentPageSerializer
|
||||
|
||||
def get_document(self):
|
||||
document = get_object_or_404(klass=Document, pk=self.kwargs['pk'])
|
||||
document = get_object_or_404(
|
||||
klass=Document, pk=self.kwargs['document_pk']
|
||||
)
|
||||
|
||||
AccessControlList.objects.check_access(
|
||||
permission_document_view, self.request.user, document
|
||||
@@ -454,7 +473,8 @@ class APIDocumentVersionPageListView(generics.ListAPIView):
|
||||
|
||||
def get_document_version(self):
|
||||
return get_object_or_404(
|
||||
klass=self.get_document().versions.all(), pk=self.kwargs['version_pk']
|
||||
klass=self.get_document().versions.all(),
|
||||
pk=self.kwargs['document_version_pk']
|
||||
)
|
||||
|
||||
def get_queryset(self):
|
||||
@@ -493,10 +513,14 @@ class APIDocumentVersionsListView(generics.ListCreateAPIView):
|
||||
return NewDocumentVersionSerializer
|
||||
|
||||
def get_queryset(self):
|
||||
return get_object_or_404(klass=Document, pk=self.kwargs['pk']).versions.all()
|
||||
return get_object_or_404(
|
||||
klass=Document, pk=self.kwargs['document_pk']
|
||||
).versions.all()
|
||||
|
||||
def perform_create(self, serializer):
|
||||
document = get_object_or_404(klass=Document, pk=self.kwargs['pk'])
|
||||
document = get_object_or_404(
|
||||
klass=Document, pk=self.kwargs['document_pk']
|
||||
)
|
||||
|
||||
AccessControlList.objects.check_access(
|
||||
permissions=(permission_document_new_version,),
|
||||
@@ -512,7 +536,7 @@ class APIDocumentVersionView(generics.RetrieveUpdateDestroyAPIView):
|
||||
patch: Edit the selected document version.
|
||||
put: Edit the selected document version.
|
||||
"""
|
||||
lookup_url_kwarg = 'version_pk'
|
||||
lookup_url_kwarg = 'document_version_pk'
|
||||
|
||||
def get_document(self):
|
||||
if self.request.method == 'GET':
|
||||
@@ -522,7 +546,9 @@ class APIDocumentVersionView(generics.RetrieveUpdateDestroyAPIView):
|
||||
else:
|
||||
permission_required = permission_document_edit
|
||||
|
||||
document = get_object_or_404(klass=Document, pk=self.kwargs['pk'])
|
||||
document = get_object_or_404(
|
||||
klass=Document, pk=self.kwargs['document_pk']
|
||||
)
|
||||
|
||||
AccessControlList.objects.check_access(
|
||||
permission_required, self.request.user, document
|
||||
|
||||
@@ -21,8 +21,8 @@ class DashboardWidgetDocumentPagesTotal(DashboardWidgetNumeric):
|
||||
icon_class = icon_dashboard_pages_per_month
|
||||
label = _('Total pages')
|
||||
link = reverse_lazy(
|
||||
'statistics:statistic_detail',
|
||||
args=('total-document-pages-at-each-month',)
|
||||
viewname='statistics:statistic_detail',
|
||||
kwargs={'slug': 'total-document-pages-at-each-month'}
|
||||
)
|
||||
|
||||
def render(self, request):
|
||||
@@ -100,8 +100,8 @@ class DashboardWidgetDocumentsNewThisMonth(DashboardWidgetNumeric):
|
||||
icon_class = icon_dashboard_new_documents_this_month
|
||||
label = _('New documents this month')
|
||||
link = reverse_lazy(
|
||||
'statistics:statistic_detail',
|
||||
args=('new-documents-per-month',)
|
||||
viewname='statistics:statistic_detail',
|
||||
kwargs={'slug': 'new-documents-per-month'}
|
||||
)
|
||||
|
||||
def render(self, request):
|
||||
@@ -113,8 +113,8 @@ class DashboardWidgetDocumentsPagesNewThisMonth(DashboardWidgetNumeric):
|
||||
icon_class = icon_dashboard_pages_per_month
|
||||
label = _('New pages this month')
|
||||
link = reverse_lazy(
|
||||
'statistics:statistic_detail',
|
||||
args=('new-document-pages-per-month',)
|
||||
viewname='statistics:statistic_detail',
|
||||
kwargs={'slug': 'new-document-pages-per-month'}
|
||||
)
|
||||
|
||||
def render(self, request):
|
||||
|
||||
@@ -135,7 +135,10 @@ class Document(models.Model):
|
||||
return False
|
||||
|
||||
def get_absolute_url(self):
|
||||
return reverse('documents:document_preview', args=(self.pk,))
|
||||
return reverse(
|
||||
viewname='documents:document_preview',
|
||||
kwargs={'document_pk': self.pk}
|
||||
)
|
||||
|
||||
def get_api_image_url(self, *args, **kwargs):
|
||||
latest_version = self.latest_version
|
||||
|
||||
@@ -101,7 +101,10 @@ class DocumentPage(models.Model):
|
||||
return combined_cache_filename
|
||||
|
||||
def get_absolute_url(self):
|
||||
return reverse('documents:document_page_view', args=(self.pk,))
|
||||
return reverse(
|
||||
viewname='documents:document_page_view',
|
||||
kwargs={'document_page_pk': self.pk}
|
||||
)
|
||||
|
||||
def get_api_image_url(self, *args, **kwargs):
|
||||
"""
|
||||
@@ -123,9 +126,11 @@ class DocumentPage(models.Model):
|
||||
final_url = furl()
|
||||
final_url.args = kwargs
|
||||
final_url.path = reverse(
|
||||
'rest_api:documentpage-image', args=(
|
||||
self.document.pk, self.document_version.pk, self.pk
|
||||
)
|
||||
viewname='rest_api:documentpage-image', kwargs={
|
||||
'document_pk': self.document.pk,
|
||||
'document_version_pk': self.document_version.pk,
|
||||
'document_page_pk': self.pk
|
||||
}
|
||||
)
|
||||
final_url.args['_hash'] = transformations_hash
|
||||
count = 1
|
||||
|
||||
@@ -82,7 +82,8 @@ class DocumentType(models.Model):
|
||||
|
||||
def get_absolute_url(self):
|
||||
return reverse(
|
||||
'documents:document_type_document_list', args=(self.pk,)
|
||||
viewname='documents:document_type_document_list',
|
||||
kwargs={'document_type_pk': self.pk}
|
||||
)
|
||||
|
||||
def get_document_count(self, user):
|
||||
|
||||
@@ -149,7 +149,10 @@ class DocumentVersion(models.Model):
|
||||
)
|
||||
|
||||
def get_absolute_url(self):
|
||||
return reverse('documents:document_version_view', args=(self.pk,))
|
||||
return reverse(
|
||||
viewname='documents:document_version_view',
|
||||
kwargs={'document_version_pk': self.pk}
|
||||
)
|
||||
|
||||
def get_api_image_url(self, *args, **kwargs):
|
||||
first_page = self.pages.first()
|
||||
|
||||
@@ -26,25 +26,28 @@ class DocumentPageSerializer(serializers.HyperlinkedModelSerializer):
|
||||
|
||||
def get_document_version_url(self, instance):
|
||||
return reverse(
|
||||
'rest_api:documentversion-detail', args=(
|
||||
instance.document.pk, instance.document_version.pk,
|
||||
), request=self.context['request'], format=self.context['format']
|
||||
viewname='rest_api:documentversion-detail', kwargs={
|
||||
'document_pk': instance.document.pk,
|
||||
'document_version_pk': instance.document_version.pk
|
||||
}, request=self.context['request'], format=self.context['format']
|
||||
)
|
||||
|
||||
def get_image_url(self, instance):
|
||||
return reverse(
|
||||
'rest_api:documentpage-image', args=(
|
||||
instance.document.pk, instance.document_version.pk,
|
||||
instance.pk,
|
||||
), request=self.context['request'], format=self.context['format']
|
||||
viewname='rest_api:documentpage-image', kwargs={
|
||||
'document_pk': instance.document.pk,
|
||||
'document_version_pk': instance.document_version.pk,
|
||||
'document_page_pk': instance.pk,
|
||||
}, request=self.context['request'], format=self.context['format']
|
||||
)
|
||||
|
||||
def get_url(self, instance):
|
||||
return reverse(
|
||||
'rest_api:documentpage-detail', args=(
|
||||
instance.document.pk, instance.document_version.pk,
|
||||
instance.pk,
|
||||
), request=self.context['request'], format=self.context['format']
|
||||
viewname='rest_api:documentpage-detail', kwargs={
|
||||
'document_pk': instance.document.pk,
|
||||
'document_version_pk': instance.document_version.pk,
|
||||
'document_page_pk': instance.pk,
|
||||
}, request=self.context['request'], format=self.context['format']
|
||||
)
|
||||
|
||||
|
||||
@@ -56,14 +59,18 @@ class DocumentTypeFilenameSerializer(serializers.ModelSerializer):
|
||||
|
||||
class DocumentTypeSerializer(serializers.HyperlinkedModelSerializer):
|
||||
documents_url = serializers.HyperlinkedIdentityField(
|
||||
view_name='rest_api:documenttype-document-list',
|
||||
lookup_field='pk', lookup_url_kwarg='document_type_pk',
|
||||
view_name='rest_api:documenttype-document-list'
|
||||
)
|
||||
documents_count = serializers.SerializerMethodField()
|
||||
filenames = DocumentTypeFilenameSerializer(many=True, read_only=True)
|
||||
|
||||
class Meta:
|
||||
extra_kwargs = {
|
||||
'url': {'view_name': 'rest_api:documenttype-detail'},
|
||||
'url': {
|
||||
'lookup_field': 'pk', 'lookup_url_kwarg': 'document_type_pk',
|
||||
'view_name': 'rest_api:documenttype-detail'
|
||||
}
|
||||
}
|
||||
fields = (
|
||||
'delete_time_period', 'delete_time_unit', 'documents_url',
|
||||
@@ -78,13 +85,17 @@ class DocumentTypeSerializer(serializers.HyperlinkedModelSerializer):
|
||||
|
||||
class WritableDocumentTypeSerializer(serializers.ModelSerializer):
|
||||
documents_url = serializers.HyperlinkedIdentityField(
|
||||
view_name='rest_api:documenttype-document-list',
|
||||
lookup_field='pk', lookup_url_kwarg='document_type_pk',
|
||||
view_name='rest_api:documenttype-document-list'
|
||||
)
|
||||
documents_count = serializers.SerializerMethodField()
|
||||
|
||||
class Meta:
|
||||
extra_kwargs = {
|
||||
'url': {'view_name': 'rest_api:documenttype-detail'},
|
||||
'url': {
|
||||
'lookup_field': 'pk', 'lookup_url_kwarg': 'document_type_pk',
|
||||
'view_name': 'rest_api:documenttype-detail'
|
||||
}
|
||||
}
|
||||
fields = (
|
||||
'delete_time_period', 'delete_time_unit', 'documents_url',
|
||||
@@ -106,7 +117,10 @@ class DocumentVersionSerializer(serializers.HyperlinkedModelSerializer):
|
||||
|
||||
class Meta:
|
||||
extra_kwargs = {
|
||||
'document': {'view_name': 'rest_api:document-detail'},
|
||||
'document': {
|
||||
'lookup_field': 'pk', 'lookup_url_kwarg': 'document_pk',
|
||||
'view_name': 'rest_api:document-detail'
|
||||
},
|
||||
'file': {'use_url': False},
|
||||
}
|
||||
fields = (
|
||||
@@ -121,30 +135,33 @@ class DocumentVersionSerializer(serializers.HyperlinkedModelSerializer):
|
||||
|
||||
def get_document_url(self, instance):
|
||||
return reverse(
|
||||
'rest_api:document-detail', args=(
|
||||
instance.document.pk,
|
||||
), request=self.context['request'], format=self.context['format']
|
||||
viewname='rest_api:document-detail', kwargs={
|
||||
'document_pk': instance.document.pk
|
||||
}, request=self.context['request'], format=self.context['format']
|
||||
)
|
||||
|
||||
def get_download_url(self, instance):
|
||||
return reverse(
|
||||
'rest_api:documentversion-download', args=(
|
||||
instance.document.pk, instance.pk,
|
||||
), request=self.context['request'], format=self.context['format']
|
||||
viewname='rest_api:documentversion-download', kwargs={
|
||||
'document_pk': instance.document.pk,
|
||||
'document_version_pk': instance.pk
|
||||
}, request=self.context['request'], format=self.context['format']
|
||||
)
|
||||
|
||||
def get_pages_url(self, instance):
|
||||
return reverse(
|
||||
'rest_api:documentversion-page-list', args=(
|
||||
instance.document.pk, instance.pk,
|
||||
), request=self.context['request'], format=self.context['format']
|
||||
viewname='rest_api:documentversion-page-list', kwargs={
|
||||
'document_pk': instance.document.pk,
|
||||
'document_version_pk': instance.pk
|
||||
}, request=self.context['request'], format=self.context['format']
|
||||
)
|
||||
|
||||
def get_url(self, instance):
|
||||
return reverse(
|
||||
'rest_api:documentversion-detail', args=(
|
||||
instance.document.pk, instance.pk,
|
||||
), request=self.context['request'], format=self.context['format']
|
||||
viewname='rest_api:documentversion-detail', kwargs={
|
||||
'document_pk': instance.document.pk,
|
||||
'document_version_pk': instance.pk
|
||||
}, request=self.context['request'], format=self.context['format']
|
||||
)
|
||||
|
||||
|
||||
@@ -167,30 +184,33 @@ class WritableDocumentVersionSerializer(serializers.ModelSerializer):
|
||||
|
||||
def get_document_url(self, instance):
|
||||
return reverse(
|
||||
'rest_api:document-detail', args=(
|
||||
instance.document.pk,
|
||||
), request=self.context['request'], format=self.context['format']
|
||||
viewname='rest_api:document-detail', kwargs={
|
||||
'document_pk': instance.document.pk
|
||||
}, request=self.context['request'], format=self.context['format']
|
||||
)
|
||||
|
||||
def get_download_url(self, instance):
|
||||
return reverse(
|
||||
'rest_api:documentversion-download', args=(
|
||||
instance.document.pk, instance.pk,
|
||||
), request=self.context['request'], format=self.context['format']
|
||||
viewname='rest_api:documentversion-download', kwargs={
|
||||
'document_pk': instance.document.pk,
|
||||
'document_version_pk': instance.pk
|
||||
}, request=self.context['request'], format=self.context['format']
|
||||
)
|
||||
|
||||
def get_pages_url(self, instance):
|
||||
return reverse(
|
||||
'rest_api:documentversion-page-list', args=(
|
||||
instance.document.pk, instance.pk,
|
||||
), request=self.context['request'], format=self.context['format']
|
||||
viewname='rest_api:documentversion-page-list', kwargs={
|
||||
'document_pk': instance.document.pk,
|
||||
'document_version_pk': instance.pk
|
||||
}, request=self.context['request'], format=self.context['format']
|
||||
)
|
||||
|
||||
def get_url(self, instance):
|
||||
return reverse(
|
||||
'rest_api:documentversion-detail', args=(
|
||||
instance.document.pk, instance.pk,
|
||||
), request=self.context['request'], format=self.context['format']
|
||||
viewname='rest_api:documentversion-detail', kwargs={
|
||||
'document_pk': instance.document.pk,
|
||||
'document_version_pk': instance.pk
|
||||
}, request=self.context['request'], format=self.context['format']
|
||||
)
|
||||
|
||||
|
||||
@@ -213,13 +233,20 @@ class NewDocumentVersionSerializer(serializers.Serializer):
|
||||
class DeletedDocumentSerializer(serializers.HyperlinkedModelSerializer):
|
||||
document_type_label = serializers.SerializerMethodField()
|
||||
restore = serializers.HyperlinkedIdentityField(
|
||||
lookup_field='pk', lookup_url_kwarg='document_pk',
|
||||
view_name='rest_api:trasheddocument-restore'
|
||||
)
|
||||
|
||||
class Meta:
|
||||
extra_kwargs = {
|
||||
'document_type': {'view_name': 'rest_api:documenttype-detail'},
|
||||
'url': {'view_name': 'rest_api:trasheddocument-detail'}
|
||||
'document_type': {
|
||||
'lookup_field': 'pk', 'lookup_url_kwarg': 'document_type_pk',
|
||||
'view_name': 'rest_api:documenttype-detail'
|
||||
},
|
||||
'url': {
|
||||
'lookup_field': 'pk', 'lookup_url_kwarg': 'document_pk',
|
||||
'view_name': 'rest_api:trasheddocument-detail'
|
||||
}
|
||||
}
|
||||
fields = (
|
||||
'date_added', 'deleted_date_time', 'description', 'document_type',
|
||||
@@ -240,13 +267,20 @@ class DocumentSerializer(serializers.HyperlinkedModelSerializer):
|
||||
document_type = DocumentTypeSerializer()
|
||||
latest_version = DocumentVersionSerializer(many=False, read_only=True)
|
||||
versions_url = serializers.HyperlinkedIdentityField(
|
||||
view_name='rest_api:document-version-list',
|
||||
lookup_field='pk', lookup_url_kwarg='document_pk',
|
||||
view_name='rest_api:document-version-list'
|
||||
)
|
||||
|
||||
class Meta:
|
||||
extra_kwargs = {
|
||||
'document_type': {'view_name': 'rest_api:documenttype-detail'},
|
||||
'url': {'view_name': 'rest_api:document-detail'}
|
||||
'document_type': {
|
||||
'lookup_field': 'pk', 'lookup_url_kwarg': 'document_type_pk',
|
||||
'view_name': 'rest_api:documenttype-detail'
|
||||
},
|
||||
'url': {
|
||||
'lookup_field': 'pk', 'lookup_url_kwarg': 'document_pk',
|
||||
'view_name': 'rest_api:document-detail'
|
||||
}
|
||||
}
|
||||
fields = (
|
||||
'date_added', 'description', 'document_type', 'id', 'label',
|
||||
@@ -260,9 +294,11 @@ class WritableDocumentSerializer(serializers.ModelSerializer):
|
||||
document_type = DocumentTypeSerializer(read_only=True)
|
||||
latest_version = DocumentVersionSerializer(many=False, read_only=True)
|
||||
versions = serializers.HyperlinkedIdentityField(
|
||||
view_name='rest_api:document-version-list',
|
||||
lookup_field='pk', lookup_url_kwarg='document_pk',
|
||||
view_name='rest_api:document-version-list'
|
||||
)
|
||||
url = serializers.HyperlinkedIdentityField(
|
||||
lookup_field='pk', lookup_url_kwarg='document_pk',
|
||||
view_name='rest_api:document-detail',
|
||||
)
|
||||
|
||||
|
||||
@@ -60,9 +60,9 @@ class DocumentTypeAPITestCase(BaseAPITestCase):
|
||||
|
||||
def _request_document_type_patch(self):
|
||||
return self.patch(
|
||||
viewname='rest_api:documenttype-detail', args=(
|
||||
self.document_type.pk,
|
||||
), data={'label': TEST_DOCUMENT_TYPE_LABEL_EDITED}
|
||||
viewname='rest_api:documenttype-detail', kwargs={
|
||||
'document_type_pk': self.document_type.pk
|
||||
}, data={'label': TEST_DOCUMENT_TYPE_LABEL_EDITED}
|
||||
)
|
||||
|
||||
def test_document_type_edit_via_patch_no_permission(self):
|
||||
@@ -89,9 +89,9 @@ class DocumentTypeAPITestCase(BaseAPITestCase):
|
||||
|
||||
def _request_document_type_put(self):
|
||||
return self.put(
|
||||
viewname='rest_api:documenttype-detail', args=(
|
||||
self.document_type.pk,
|
||||
), data={'label': TEST_DOCUMENT_TYPE_LABEL_EDITED}
|
||||
viewname='rest_api:documenttype-detail', kwargs={
|
||||
'document_type_pk': self.document_type.pk
|
||||
}, data={'label': TEST_DOCUMENT_TYPE_LABEL_EDITED}
|
||||
)
|
||||
|
||||
def test_document_type_edit_via_put_no_permission(self):
|
||||
@@ -118,9 +118,9 @@ class DocumentTypeAPITestCase(BaseAPITestCase):
|
||||
|
||||
def _request_document_type_delete(self):
|
||||
return self.delete(
|
||||
viewname='rest_api:documenttype-detail', args=(
|
||||
self.document_type.pk,
|
||||
)
|
||||
viewname='rest_api:documenttype-detail', kwargs={
|
||||
'document_type_pk': self.document_type.pk
|
||||
}
|
||||
)
|
||||
|
||||
def test_document_type_delete_no_permission(self):
|
||||
@@ -206,9 +206,9 @@ class DocumentAPITestCase(DocumentTestMixin, BaseAPITestCase):
|
||||
|
||||
with open(TEST_DOCUMENT_PATH, mode='rb') as file_descriptor:
|
||||
return self.post(
|
||||
viewname='rest_api:document-version-list', args=(
|
||||
self.document.pk,
|
||||
), data={
|
||||
viewname='rest_api:document-version-list', kwargs={
|
||||
'document_pk': self.document.pk
|
||||
}, data={
|
||||
'comment': '', 'file': file_descriptor,
|
||||
}
|
||||
)
|
||||
@@ -246,9 +246,10 @@ class DocumentAPITestCase(DocumentTestMixin, BaseAPITestCase):
|
||||
|
||||
def _request_document_version_revert(self):
|
||||
return self.delete(
|
||||
viewname='rest_api:documentversion-detail', args=(
|
||||
self.document.pk, self.document.latest_version.pk
|
||||
)
|
||||
viewname='rest_api:documentversion-detail', kwargs={
|
||||
'document_pk': self.document.pk,
|
||||
'document_version_pk': self.document.latest_version.pk
|
||||
}
|
||||
)
|
||||
|
||||
def test_document_version_revert_no_permission(self):
|
||||
@@ -273,7 +274,8 @@ class DocumentAPITestCase(DocumentTestMixin, BaseAPITestCase):
|
||||
|
||||
def _request_document_version_list(self):
|
||||
return self.get(
|
||||
viewname='rest_api:document-version-list', args=(self.document.pk,)
|
||||
viewname='rest_api:document-version-list',
|
||||
kwargs={'document_pk': self.document.pk}
|
||||
)
|
||||
|
||||
def test_document_version_list_no_permission(self):
|
||||
@@ -298,7 +300,8 @@ class DocumentAPITestCase(DocumentTestMixin, BaseAPITestCase):
|
||||
|
||||
def _request_document_download(self):
|
||||
return self.get(
|
||||
viewname='rest_api:document-download', args=(self.document.pk,)
|
||||
viewname='rest_api:document-download',
|
||||
kwargs={'document_pk': self.document.pk}
|
||||
)
|
||||
|
||||
def test_document_download_no_permission(self):
|
||||
@@ -325,9 +328,10 @@ class DocumentAPITestCase(DocumentTestMixin, BaseAPITestCase):
|
||||
|
||||
def _request_document_version_download(self):
|
||||
return self.get(
|
||||
viewname='rest_api:documentversion-download', args=(
|
||||
self.document.pk, self.document.latest_version.pk,
|
||||
)
|
||||
viewname='rest_api:documentversion-download', kwargs={
|
||||
'document_pk': self.document.pk,
|
||||
'document_version_pk': self.document.latest_version.pk,
|
||||
}
|
||||
)
|
||||
|
||||
def test_document_version_download_no_permission(self):
|
||||
@@ -357,9 +361,10 @@ class DocumentAPITestCase(DocumentTestMixin, BaseAPITestCase):
|
||||
self.document = self.upload_document()
|
||||
|
||||
response = self.get(
|
||||
viewname='rest_api:documentversion-download', args=(
|
||||
self.document.pk, self.document.latest_version.pk,
|
||||
), data={'preserve_extension': True}
|
||||
viewname='rest_api:documentversion-download', kwargs={
|
||||
'document_pk': self.document.pk,
|
||||
'document_version_pk': self.document.latest_version.pk,
|
||||
}, data={'preserve_extension': True}
|
||||
)
|
||||
|
||||
with self.document.latest_version.open() as file_object:
|
||||
@@ -374,9 +379,10 @@ class DocumentAPITestCase(DocumentTestMixin, BaseAPITestCase):
|
||||
|
||||
def _request_document_version_edit_via_patch(self):
|
||||
return self.patch(
|
||||
viewname='rest_api:documentversion-detail', args=(
|
||||
self.document.pk, self.document.latest_version.pk,
|
||||
), data={'comment': TEST_DOCUMENT_VERSION_COMMENT_EDITED}
|
||||
viewname='rest_api:documentversion-detail', kwargs={
|
||||
'document_pk': self.document.pk,
|
||||
'document_version_pk': self.document.latest_version.pk,
|
||||
}, data={'comment': TEST_DOCUMENT_VERSION_COMMENT_EDITED}
|
||||
)
|
||||
|
||||
def test_document_version_edit_via_patch_no_permission(self):
|
||||
@@ -400,9 +406,10 @@ class DocumentAPITestCase(DocumentTestMixin, BaseAPITestCase):
|
||||
|
||||
def _request_document_version_edit_via_put(self):
|
||||
return self.put(
|
||||
viewname='rest_api:documentversion-detail', args=(
|
||||
self.document.pk, self.document.latest_version.pk,
|
||||
), data={'comment': TEST_DOCUMENT_VERSION_COMMENT_EDITED}
|
||||
viewname='rest_api:documentversion-detail', kwargs={
|
||||
'document_pk': self.document.pk,
|
||||
'document_version_pk': self.document.latest_version.pk,
|
||||
}, data={'comment': TEST_DOCUMENT_VERSION_COMMENT_EDITED}
|
||||
)
|
||||
|
||||
def test_document_version_edit_via_put_no_permission(self):
|
||||
@@ -426,7 +433,8 @@ class DocumentAPITestCase(DocumentTestMixin, BaseAPITestCase):
|
||||
|
||||
def _request_document_description_edit_via_patch(self):
|
||||
return self.patch(
|
||||
viewname='rest_api:document-detail', args=(self.document.pk,),
|
||||
viewname='rest_api:document-detail',
|
||||
kwargs={'document_pk': self.document.pk},
|
||||
data={'description': TEST_DOCUMENT_DESCRIPTION_EDITED}
|
||||
)
|
||||
|
||||
@@ -450,7 +458,8 @@ class DocumentAPITestCase(DocumentTestMixin, BaseAPITestCase):
|
||||
|
||||
def _request_document_description_edit_via_put(self):
|
||||
return self.put(
|
||||
viewname='rest_api:document-detail', args=(self.document.pk,),
|
||||
viewname='rest_api:document-detail',
|
||||
kwargs={'document_pk': self.document.pk},
|
||||
data={'description': TEST_DOCUMENT_DESCRIPTION_EDITED}
|
||||
)
|
||||
|
||||
@@ -481,9 +490,10 @@ class DocumentPageAPITestCase(DocumentTestMixin, BaseAPITestCase):
|
||||
def _request_document_page_image(self):
|
||||
page = self.document.pages.first()
|
||||
return self.get(
|
||||
viewname='rest_api:documentpage-image', args=(
|
||||
page.document.pk, page.document_version.pk, page.pk
|
||||
),
|
||||
viewname='rest_api:documentpage-image', kwargs={
|
||||
'document_pk': page.document.pk,
|
||||
'document_version_pk': page.document_version.pk, 'document_page_pk': page.pk
|
||||
}
|
||||
)
|
||||
|
||||
def test_document_page_image_view_no_access(self):
|
||||
@@ -507,7 +517,8 @@ class TrashedDocumentAPITestCase(DocumentTestMixin, BaseAPITestCase):
|
||||
|
||||
def _request_document_move_to_trash(self):
|
||||
return self.delete(
|
||||
viewname='rest_api:document-detail', args=(self.document.pk,)
|
||||
viewname='rest_api:document-detail',
|
||||
kwargs={'document_pk': self.document.pk}
|
||||
)
|
||||
|
||||
def test_document_move_to_trash_no_permission(self):
|
||||
@@ -528,7 +539,8 @@ class TrashedDocumentAPITestCase(DocumentTestMixin, BaseAPITestCase):
|
||||
|
||||
def _request_trashed_document_delete_view(self):
|
||||
return self.delete(
|
||||
viewname='rest_api:trasheddocument-detail', args=(self.document.pk,)
|
||||
viewname='rest_api:trasheddocument-detail',
|
||||
kwargs={'document_pk': self.document.pk}
|
||||
)
|
||||
|
||||
def test_trashed_document_delete_from_trash_no_access(self):
|
||||
@@ -550,7 +562,8 @@ class TrashedDocumentAPITestCase(DocumentTestMixin, BaseAPITestCase):
|
||||
|
||||
def _request_trashed_document_detail_view(self):
|
||||
return self.get(
|
||||
viewname='rest_api:trasheddocument-detail', args=(self.document.pk,)
|
||||
viewname='rest_api:trasheddocument-detail',
|
||||
kwargs={'document_pk': self.document.pk}
|
||||
)
|
||||
|
||||
def test_trashed_document_detail_view_no_access(self):
|
||||
@@ -594,7 +607,8 @@ class TrashedDocumentAPITestCase(DocumentTestMixin, BaseAPITestCase):
|
||||
|
||||
def _request_trashed_document_restore_view(self):
|
||||
return self.post(
|
||||
viewname='rest_api:trasheddocument-restore', args=(self.document.pk,)
|
||||
viewname='rest_api:trasheddocument-restore',
|
||||
kwargs={'document_pk': self.document.pk}
|
||||
)
|
||||
|
||||
def test_trashed_document_restore_no_access(self):
|
||||
|
||||
@@ -16,7 +16,8 @@ class DeletedDocumentTestCase(GenericDocumentViewTestCase):
|
||||
|
||||
def _request_document_restore_view(self):
|
||||
return self.post(
|
||||
viewname='documents:document_restore', args=(self.document.pk,)
|
||||
viewname='documents:document_restore',
|
||||
kwargs={'document_pk': self.document.pk}
|
||||
)
|
||||
|
||||
def test_document_restore_view_no_permission(self):
|
||||
@@ -42,7 +43,8 @@ class DeletedDocumentTestCase(GenericDocumentViewTestCase):
|
||||
|
||||
def _request_document_trash_view(self):
|
||||
return self.post(
|
||||
viewname='documents:document_trash', args=(self.document.pk,)
|
||||
viewname='documents:document_trash',
|
||||
kwargs={'document_pk': self.document.pk}
|
||||
)
|
||||
|
||||
def test_document_trash_no_permissions(self):
|
||||
@@ -63,7 +65,8 @@ class DeletedDocumentTestCase(GenericDocumentViewTestCase):
|
||||
|
||||
def _request_document_delete_view(self):
|
||||
return self.post(
|
||||
viewname='documents:document_delete', args=(self.document.pk,),
|
||||
viewname='documents:document_delete',
|
||||
kwargs={'document_pk': self.document.pk}
|
||||
)
|
||||
|
||||
def test_document_delete_no_permissions(self):
|
||||
|
||||
@@ -1,8 +1,11 @@
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.utils.encoding import force_text
|
||||
|
||||
from ..permissions import permission_document_view
|
||||
|
||||
from .base import GenericDocumentViewTestCase
|
||||
from .literals import TEST_MULTI_PAGE_TIFF
|
||||
|
||||
|
||||
class DocumentPageViewTestCase(GenericDocumentViewTestCase):
|
||||
@@ -12,7 +15,8 @@ class DocumentPageViewTestCase(GenericDocumentViewTestCase):
|
||||
|
||||
def _document_page_list_view(self):
|
||||
return self.get(
|
||||
viewname='documents:document_pages', args=(self.document.pk,)
|
||||
viewname='documents:document_pages',
|
||||
kwargs={'document_pk': self.document.pk}
|
||||
)
|
||||
|
||||
def test_document_page_list_view_no_permission(self):
|
||||
@@ -27,3 +31,87 @@ class DocumentPageViewTestCase(GenericDocumentViewTestCase):
|
||||
self.assertContains(
|
||||
response=response, text=self.document.label, status_code=200
|
||||
)
|
||||
|
||||
|
||||
class DocumentPageNavigationViewTestCase(GenericDocumentViewTestCase):
|
||||
test_document_filename = TEST_MULTI_PAGE_TIFF
|
||||
|
||||
def setUp(self):
|
||||
super(DocumentPageNavigationViewTestCase, self).setUp()
|
||||
self.login_user()
|
||||
|
||||
def _request_document_page_navigation_next_view(self):
|
||||
return self.get(
|
||||
viewname='documents:document_page_navigation_next',
|
||||
kwargs={'document_page_pk': self.document.pages.first().pk},
|
||||
follow=True
|
||||
)
|
||||
|
||||
def test_document_page_navigation_next_with_access(self):
|
||||
self.grant_access(
|
||||
obj=self.document, permission=permission_document_view
|
||||
)
|
||||
|
||||
response = self._request_document_page_navigation_next_view()
|
||||
|
||||
self.assertContains(
|
||||
response=response, status_code=200,
|
||||
text=force_text(self.document.pages.last())
|
||||
)
|
||||
|
||||
def _request_document_page_navigation_last_view(self):
|
||||
return self.get(
|
||||
viewname='documents:document_page_navigation_last',
|
||||
kwargs={'document_page_pk': self.document.pages.first().pk},
|
||||
follow=True
|
||||
)
|
||||
|
||||
def test_document_page_navigation_last_with_access(self):
|
||||
self.grant_access(
|
||||
obj=self.document, permission=permission_document_view
|
||||
)
|
||||
|
||||
response = self._request_document_page_navigation_last_view()
|
||||
|
||||
self.assertContains(
|
||||
response=response, status_code=200,
|
||||
text=force_text(self.document.pages.last())
|
||||
)
|
||||
|
||||
def _request_document_page_navigation_previous_view(self):
|
||||
return self.get(
|
||||
viewname='documents:document_page_navigation_previous',
|
||||
kwargs={'document_page_pk': self.document.pages.last().pk},
|
||||
follow=True
|
||||
)
|
||||
|
||||
def test_document_page_navigation_previous_with_access(self):
|
||||
self.grant_access(
|
||||
obj=self.document, permission=permission_document_view
|
||||
)
|
||||
|
||||
response = self._request_document_page_navigation_previous_view()
|
||||
|
||||
self.assertContains(
|
||||
response=response, status_code=200,
|
||||
text=force_text(self.document.pages.first())
|
||||
)
|
||||
|
||||
def _request_document_page_navigation_first_view(self):
|
||||
return self.get(
|
||||
viewname='documents:document_page_navigation_first',
|
||||
kwargs={'document_page_pk': self.document.pages.last().pk},
|
||||
follow=True
|
||||
)
|
||||
|
||||
def test_document_page_navigation_first_with_access(self):
|
||||
self.grant_access(
|
||||
obj=self.document, permission=permission_document_view
|
||||
)
|
||||
|
||||
response = self._request_document_page_navigation_first_view()
|
||||
|
||||
self.assertContains(
|
||||
response=response, status_code=200,
|
||||
text=force_text(self.document.pages.first())
|
||||
)
|
||||
|
||||
@@ -50,7 +50,7 @@ class DocumentTypeViewsTestCase(GenericDocumentViewTestCase):
|
||||
def _request_document_type_delete(self):
|
||||
return self.post(
|
||||
viewname='documents:document_type_delete',
|
||||
args=(self.document_type.pk,)
|
||||
kwargs={'document_type_pk': self.document_type.pk}
|
||||
)
|
||||
|
||||
def test_document_type_delete_view_no_permission(self):
|
||||
@@ -69,7 +69,7 @@ class DocumentTypeViewsTestCase(GenericDocumentViewTestCase):
|
||||
def _request_document_type_edit(self):
|
||||
return self.post(
|
||||
viewname='documents:document_type_edit',
|
||||
args=(self.document_type.pk,),
|
||||
kwargs={'document_type_pk': self.document_type.pk},
|
||||
data={
|
||||
'label': TEST_DOCUMENT_TYPE_LABEL_EDITED,
|
||||
'delete_time_period': DEFAULT_DELETE_PERIOD,
|
||||
@@ -105,7 +105,7 @@ class DocumentTypeQuickLabelViewsTestCase(DocumentTypeQuickLabelTestMixin, Gener
|
||||
def _request_quick_label_create(self):
|
||||
return self.post(
|
||||
viewname='documents:document_type_filename_create',
|
||||
args=(self.document_type.pk,),
|
||||
kwargs={'document_type_pk': self.document_type.pk},
|
||||
data={
|
||||
'filename': TEST_DOCUMENT_TYPE_QUICK_LABEL,
|
||||
}
|
||||
@@ -132,7 +132,7 @@ class DocumentTypeQuickLabelViewsTestCase(DocumentTypeQuickLabelTestMixin, Gener
|
||||
def _request_quick_label_delete(self):
|
||||
return self.post(
|
||||
viewname='documents:document_type_filename_delete',
|
||||
args=(self.document_type_filename.pk,),
|
||||
kwargs={'filename_pk': self.document_type_filename.pk},
|
||||
)
|
||||
|
||||
def test_document_type_quick_label_delete_no_access(self):
|
||||
@@ -158,7 +158,7 @@ class DocumentTypeQuickLabelViewsTestCase(DocumentTypeQuickLabelTestMixin, Gener
|
||||
def _request_quick_label_edit(self):
|
||||
return self.post(
|
||||
viewname='documents:document_type_filename_edit',
|
||||
args=(self.document_type_filename.pk,),
|
||||
kwargs={'filename_pk': self.document_type_filename.pk},
|
||||
data={
|
||||
'filename': TEST_DOCUMENT_TYPE_QUICK_LABEL_EDITED,
|
||||
}
|
||||
@@ -193,7 +193,7 @@ class DocumentTypeQuickLabelViewsTestCase(DocumentTypeQuickLabelTestMixin, Gener
|
||||
def _request_quick_label_list_view(self):
|
||||
return self.get(
|
||||
viewname='documents:document_type_filename_list',
|
||||
args=(self.document_type.pk,),
|
||||
kwargs={'document_type_pk': self.document_type.pk},
|
||||
)
|
||||
|
||||
def test_document_type_quick_label_list_no_access(self):
|
||||
|
||||
@@ -22,7 +22,7 @@ class DocumentVersionTestCase(GenericDocumentViewTestCase):
|
||||
def _request_document_version_list_view(self):
|
||||
return self.get(
|
||||
viewname='documents:document_version_list',
|
||||
args=(self.document.pk,)
|
||||
kwargs={'document_pk': self.document.pk}
|
||||
)
|
||||
|
||||
def test_document_version_list_no_permission(self):
|
||||
@@ -43,7 +43,7 @@ class DocumentVersionTestCase(GenericDocumentViewTestCase):
|
||||
def _request_document_version_revert_view(self, document_version):
|
||||
return self.post(
|
||||
viewname='documents:document_version_revert',
|
||||
args=(document_version.pk,)
|
||||
kwargs={'document_version_pk': document_version.pk}
|
||||
)
|
||||
|
||||
def test_document_version_revert_no_permission(self):
|
||||
|
||||
@@ -33,7 +33,7 @@ class DocumentsViewsTestCase(GenericDocumentViewTestCase):
|
||||
def _request_document_properties_view(self):
|
||||
return self.get(
|
||||
viewname='documents:document_properties',
|
||||
args=(self.document.pk,)
|
||||
kwargs={'document_pk': self.document.pk}
|
||||
)
|
||||
|
||||
def test_document_view_no_permissions(self):
|
||||
@@ -69,7 +69,7 @@ class DocumentsViewsTestCase(GenericDocumentViewTestCase):
|
||||
def _request_document_type_edit(self, document_type):
|
||||
return self.post(
|
||||
viewname='documents:document_document_type_edit',
|
||||
args=(self.document.pk,),
|
||||
kwargs={'document_pk': self.document.pk},
|
||||
data={'document_type': document_type.pk}
|
||||
)
|
||||
|
||||
@@ -177,7 +177,7 @@ class DocumentsViewsTestCase(GenericDocumentViewTestCase):
|
||||
def _request_document_download_form_view(self):
|
||||
return self.get(
|
||||
viewname='documents:document_download_form',
|
||||
args=(self.document.pk,),
|
||||
kwargs={'document_pk': self.document.pk}
|
||||
)
|
||||
|
||||
def test_document_download_form_view_no_permission(self):
|
||||
@@ -199,7 +199,8 @@ class DocumentsViewsTestCase(GenericDocumentViewTestCase):
|
||||
|
||||
def _request_document_download_view(self):
|
||||
return self.get(
|
||||
viewname='documents:document_download', args=(self.document.pk,)
|
||||
viewname='documents:document_download',
|
||||
kwargs={'document_pk': self.document.pk}
|
||||
)
|
||||
|
||||
def test_document_download_view_no_permission(self):
|
||||
@@ -259,9 +260,9 @@ class DocumentsViewsTestCase(GenericDocumentViewTestCase):
|
||||
def _request_document_version_download(self, data=None):
|
||||
data = data or {}
|
||||
return self.get(
|
||||
viewname='documents:document_version_download', args=(
|
||||
self.document.latest_version.pk,
|
||||
), data=data
|
||||
viewname='documents:document_version_download', kwargs={
|
||||
'document_version_pk': self.document.latest_version.pk,
|
||||
}, data=data
|
||||
)
|
||||
|
||||
def test_document_version_download_view_no_permission(self):
|
||||
@@ -319,7 +320,7 @@ class DocumentsViewsTestCase(GenericDocumentViewTestCase):
|
||||
def _request_document_update_page_count_view(self):
|
||||
return self.post(
|
||||
viewname='documents:document_update_page_count',
|
||||
args=(self.document.pk,)
|
||||
kwargs={'document_pk': self.document.pk}
|
||||
)
|
||||
|
||||
def test_document_update_page_count_view_no_permission(self):
|
||||
@@ -371,7 +372,7 @@ class DocumentsViewsTestCase(GenericDocumentViewTestCase):
|
||||
def _request_document_clear_transformations_view(self):
|
||||
return self.post(
|
||||
viewname='documents:document_clear_transformations',
|
||||
args=(self.document.pk,)
|
||||
kwargs={'document_pk': self.document.pk}
|
||||
)
|
||||
|
||||
def test_document_clear_transformations_view_no_permission(self):
|
||||
@@ -505,9 +506,9 @@ class DocumentsViewsTestCase(GenericDocumentViewTestCase):
|
||||
|
||||
def _request_document_page_view(self, document_page):
|
||||
return self.get(
|
||||
viewname='documents:document_page_view', args=(
|
||||
document_page.pk,
|
||||
)
|
||||
viewname='documents:document_page_view', kwargs={
|
||||
'document_page_pk': document_page.pk
|
||||
}
|
||||
)
|
||||
|
||||
def test_document_page_view_no_permissions(self):
|
||||
@@ -530,9 +531,9 @@ class DocumentsViewsTestCase(GenericDocumentViewTestCase):
|
||||
|
||||
def _request_document_print_view(self):
|
||||
return self.get(
|
||||
viewname='documents:document_print', args=(
|
||||
self.document.pk,
|
||||
), data={
|
||||
viewname='documents:document_print', kwargs={
|
||||
'document_pk': self.document.pk
|
||||
}, data={
|
||||
'page_group': PAGE_RANGE_ALL
|
||||
}
|
||||
)
|
||||
@@ -564,7 +565,8 @@ class DocumentsQuickLabelViewsTestCase(DocumentTypeQuickLabelTestMixin, GenericD
|
||||
data.update(extra_data or {})
|
||||
|
||||
return self.post(
|
||||
viewname='documents:document_edit', args=(self.document.pk,),
|
||||
viewname='documents:document_edit',
|
||||
kwargs={'document_pk': self.document.pk},
|
||||
data=data
|
||||
)
|
||||
|
||||
|
||||
@@ -23,7 +23,7 @@ class DuplicatedDocumentsViewsTestCase(GenericDocumentViewTestCase):
|
||||
def _request_document_duplicates_list_view(self):
|
||||
return self.get(
|
||||
viewname='documents:document_duplicates_list',
|
||||
args=(self.document.pk,)
|
||||
kwargs={'document_pk': self.document.pk}
|
||||
)
|
||||
|
||||
def test_duplicated_document_list_no_permissions(self):
|
||||
|
||||
@@ -29,7 +29,8 @@ class DocumentEventsTestCase(GenericDocumentViewTestCase):
|
||||
Action.objects.all().delete()
|
||||
|
||||
response = self.get(
|
||||
'documents:document_download', args=(self.document.pk,)
|
||||
viewname='documents:document_download',
|
||||
kwargs={'document_pk': self.document.pk}
|
||||
)
|
||||
|
||||
self.assertEqual(response.status_code, 403)
|
||||
@@ -49,7 +50,8 @@ class DocumentEventsTestCase(GenericDocumentViewTestCase):
|
||||
self.expected_content_type = 'image/png; charset=utf-8'
|
||||
|
||||
response = self.get(
|
||||
viewname='documents:document_download', args=(self.document.pk,),
|
||||
viewname='documents:document_download',
|
||||
kwargs={'document_pk': self.document.pk}
|
||||
)
|
||||
|
||||
# Download the file to close the file descriptor
|
||||
@@ -73,7 +75,8 @@ class DocumentEventsTestCase(GenericDocumentViewTestCase):
|
||||
Action.objects.all().delete()
|
||||
|
||||
response = self.get(
|
||||
viewname='documents:document_preview', args=(self.document.pk,)
|
||||
viewname='documents:document_preview',
|
||||
kwargs={'document_pk': self.document.pk}
|
||||
)
|
||||
|
||||
self.assertEqual(response.status_code, 403)
|
||||
@@ -90,7 +93,8 @@ class DocumentEventsTestCase(GenericDocumentViewTestCase):
|
||||
permission_document_view.stored_permission
|
||||
)
|
||||
self.get(
|
||||
viewname='documents:document_preview', args=(self.document.pk,),
|
||||
viewname='documents:document_preview',
|
||||
kwargs={'document_pk': self.document.pk}
|
||||
)
|
||||
|
||||
event = Action.objects.any(obj=self.document).first()
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -2,12 +2,14 @@ from __future__ import absolute_import, unicode_literals
|
||||
|
||||
import logging
|
||||
|
||||
from furl import furl
|
||||
|
||||
from django.conf import settings
|
||||
from django.contrib import messages
|
||||
from django.shortcuts import get_object_or_404, resolve_url
|
||||
from django.urls import reverse
|
||||
from django.utils.encoding import force_text
|
||||
from django.utils.http import urlencode
|
||||
from django.utils.six.moves.urllib.parse import parse_qs, urlparse
|
||||
from django.utils.translation import ugettext_lazy as _
|
||||
from django.views.generic import RedirectView
|
||||
|
||||
@@ -37,11 +39,10 @@ logger = logging.getLogger(__name__)
|
||||
|
||||
class DocumentPageInteractiveTransformation(RedirectView):
|
||||
def dispatch(self, request, *args, **kwargs):
|
||||
object = self.get_object()
|
||||
obj = self.get_object()
|
||||
|
||||
AccessControlList.objects.check_access(
|
||||
permissions=permission_document_view, user=request.user,
|
||||
obj=object
|
||||
obj=obj, permissions=permission_document_view, user=request.user,
|
||||
)
|
||||
|
||||
return super(DocumentPageInteractiveTransformation, self).dispatch(
|
||||
@@ -49,11 +50,14 @@ class DocumentPageInteractiveTransformation(RedirectView):
|
||||
)
|
||||
|
||||
def get_object(self):
|
||||
return get_object_or_404(klass=DocumentPage, pk=self.kwargs['pk'])
|
||||
return get_object_or_404(
|
||||
klass=DocumentPage, pk=self.kwargs['document_page_pk']
|
||||
)
|
||||
|
||||
def get_redirect_url(self, *args, **kwargs):
|
||||
url = reverse(
|
||||
'documents:document_page_view', args=(self.kwargs['pk'],)
|
||||
viewname='documents:document_page_view',
|
||||
kwargs={'document_page_pk': self.kwargs['document_page_pk']}
|
||||
)
|
||||
|
||||
query_dict = {
|
||||
@@ -70,8 +74,8 @@ class DocumentPageInteractiveTransformation(RedirectView):
|
||||
class DocumentPageListView(SingleObjectListView):
|
||||
def dispatch(self, request, *args, **kwargs):
|
||||
AccessControlList.objects.check_access(
|
||||
permissions=permission_document_view, user=self.request.user,
|
||||
obj=self.get_document()
|
||||
obj=self.get_document(), permissions=permission_document_view,
|
||||
user=self.request.user,
|
||||
)
|
||||
|
||||
return super(
|
||||
@@ -79,7 +83,7 @@ class DocumentPageListView(SingleObjectListView):
|
||||
).dispatch(request, *args, **kwargs)
|
||||
|
||||
def get_document(self):
|
||||
return get_object_or_404(klass=Document, pk=self.kwargs['pk'])
|
||||
return get_object_or_404(klass=Document, pk=self.kwargs['document_pk'])
|
||||
|
||||
def get_extra_context(self):
|
||||
return {
|
||||
@@ -109,64 +113,63 @@ class DocumentPageNavigationBase(RedirectView):
|
||||
)
|
||||
|
||||
def get_object(self):
|
||||
return get_object_or_404(klass=DocumentPage, pk=self.kwargs['pk'])
|
||||
|
||||
def get_redirect_url(self, *args, **kwargs):
|
||||
parse_result = urlparse(
|
||||
self.request.META.get(
|
||||
'HTTP_REFERER', resolve_url(
|
||||
settings.LOGIN_REDIRECT_URL
|
||||
)
|
||||
)
|
||||
return get_object_or_404(
|
||||
klass=DocumentPage, pk=self.kwargs['document_page_pk']
|
||||
)
|
||||
|
||||
query_dict = parse_qs(parse_result.query)
|
||||
def get_redirect_url(self, *args, **kwargs):
|
||||
"""
|
||||
Attempt to jump to the same kind of view but resolved to a new
|
||||
object of the same kind.
|
||||
"""
|
||||
previous_url = self.request.META.get('HTTP_REFERER', None)
|
||||
|
||||
resolver_match = resolve(parse_result.path)
|
||||
if not previous_url:
|
||||
try:
|
||||
previous_url = self.get_object().get_absolute_url()
|
||||
except AttributeError:
|
||||
previous_url = resolve_url(settings.LOGIN_REDIRECT_URL)
|
||||
|
||||
# Default is to stay on the same view
|
||||
url = parse_result.path
|
||||
parsed_url = furl(url=previous_url)
|
||||
|
||||
new_object = self.navigation_function()
|
||||
# Obtain the view name to be able to resolve it back with new keyword
|
||||
# arguments.
|
||||
resolver_match = resolve(path=force_text(parsed_url.path))
|
||||
|
||||
# Inject new_object pk in the referer's view pk or object_id kwargs
|
||||
if 'pk' in resolver_match.kwargs:
|
||||
resolver_match.kwargs['pk'] = new_object.pk
|
||||
new_kwargs = self.get_new_kwargs()
|
||||
|
||||
if set(new_kwargs) == set(resolver_match.kwargs):
|
||||
# It is the same type of object, reuse the URL to stay in the
|
||||
# same kind of view but pointing to a new object
|
||||
url = reverse(
|
||||
resolver_match.view_name, kwargs=resolver_match.kwargs
|
||||
)
|
||||
elif 'object_id' in resolver_match.kwargs:
|
||||
resolver_match.kwargs['object_id'] = new_object.pk
|
||||
url = reverse(
|
||||
resolver_match.view_name, kwargs=resolver_match.kwargs
|
||||
viewname=resolver_match.view_name, kwargs=new_kwargs
|
||||
)
|
||||
else:
|
||||
messages.warning(
|
||||
self.request, _(
|
||||
'Unknown view keyword argument schema, unable to '
|
||||
'redirect.'
|
||||
)
|
||||
)
|
||||
url = parsed_url.path
|
||||
|
||||
return '{}?{}'.format(url, urlencode(query_dict, doseq=True))
|
||||
# Update just the path to retain the querystring in case there is
|
||||
# transformation data.
|
||||
parsed_url.path = url
|
||||
|
||||
return parsed_url.tostr()
|
||||
|
||||
|
||||
class DocumentPageNavigationFirst(DocumentPageNavigationBase):
|
||||
def navigation_function(self):
|
||||
def get_new_kwargs(self):
|
||||
document_page = self.get_object()
|
||||
|
||||
return document_page.siblings.first()
|
||||
return {'document_page_pk': document_page.siblings.first().pk}
|
||||
|
||||
|
||||
class DocumentPageNavigationLast(DocumentPageNavigationBase):
|
||||
def navigation_function(self):
|
||||
def get_new_kwargs(self):
|
||||
document_page = self.get_object()
|
||||
|
||||
return document_page.siblings.last()
|
||||
return {'document_page_pk': document_page.siblings.last().pk}
|
||||
|
||||
|
||||
class DocumentPageNavigationNext(DocumentPageNavigationBase):
|
||||
def navigation_function(self):
|
||||
def get_new_kwargs(self):
|
||||
document_page = self.get_object()
|
||||
|
||||
try:
|
||||
@@ -175,14 +178,16 @@ class DocumentPageNavigationNext(DocumentPageNavigationBase):
|
||||
)
|
||||
except DocumentPage.DoesNotExist:
|
||||
messages.warning(
|
||||
self.request, _('There are no more pages in this document')
|
||||
request=self.request, message=_(
|
||||
'There are no more pages in this document'
|
||||
)
|
||||
)
|
||||
finally:
|
||||
return document_page
|
||||
return {'document_page_pk': document_page.pk}
|
||||
|
||||
|
||||
class DocumentPageNavigationPrevious(DocumentPageNavigationBase):
|
||||
def navigation_function(self):
|
||||
def get_new_kwargs(self):
|
||||
document_page = self.get_object()
|
||||
|
||||
try:
|
||||
@@ -191,12 +196,12 @@ class DocumentPageNavigationPrevious(DocumentPageNavigationBase):
|
||||
)
|
||||
except DocumentPage.DoesNotExist:
|
||||
messages.warning(
|
||||
self.request, _(
|
||||
request=self.request, message=_(
|
||||
'You are already at the first page of this document'
|
||||
)
|
||||
)
|
||||
finally:
|
||||
return document_page
|
||||
return {'document_page_pk': document_page.pk}
|
||||
|
||||
|
||||
class DocumentPageRotateLeftView(DocumentPageInteractiveTransformation):
|
||||
@@ -253,7 +258,9 @@ class DocumentPageView(SimpleView):
|
||||
}
|
||||
|
||||
def get_object(self):
|
||||
return get_object_or_404(klass=DocumentPage, pk=self.kwargs['pk'])
|
||||
return get_object_or_404(
|
||||
klass=DocumentPage, pk=self.kwargs['document_page_pk']
|
||||
)
|
||||
|
||||
|
||||
class DocumentPageViewResetView(RedirectView):
|
||||
|
||||
@@ -42,7 +42,7 @@ class DocumentTypeCreateView(SingleObjectCreateView):
|
||||
'delete_time_unit'
|
||||
)
|
||||
model = DocumentType
|
||||
post_action_redirect = reverse_lazy('documents:document_type_list')
|
||||
post_action_redirect = reverse_lazy(viewname='documents:document_type_list')
|
||||
view_permission = permission_document_type_create
|
||||
|
||||
def get_extra_context(self):
|
||||
@@ -59,7 +59,8 @@ class DocumentTypeCreateView(SingleObjectCreateView):
|
||||
class DocumentTypeDeleteView(SingleObjectDeleteView):
|
||||
model = DocumentType
|
||||
object_permission = permission_document_type_delete
|
||||
post_action_redirect = reverse_lazy('documents:document_type_list')
|
||||
post_action_redirect = reverse_lazy(viewname='documents:document_type_list')
|
||||
pk_url_kwarg = 'document_type_pk'
|
||||
|
||||
def get_extra_context(self):
|
||||
return {
|
||||
@@ -71,7 +72,7 @@ class DocumentTypeDeleteView(SingleObjectDeleteView):
|
||||
|
||||
class DocumentTypeDocumentListView(DocumentListView):
|
||||
def get_document_type(self):
|
||||
return get_object_or_404(klass=DocumentType, pk=self.kwargs['pk'])
|
||||
return get_object_or_404(klass=DocumentType, pk=self.kwargs['document_type_pk'])
|
||||
|
||||
def get_document_queryset(self):
|
||||
return self.get_document_type().documents.all()
|
||||
@@ -94,7 +95,10 @@ class DocumentTypeEditView(SingleObjectEditView):
|
||||
)
|
||||
model = DocumentType
|
||||
object_permission = permission_document_type_edit
|
||||
post_action_redirect = reverse_lazy('documents:document_type_list')
|
||||
pk_url_kwarg = 'document_type_pk'
|
||||
post_action_redirect = reverse_lazy(
|
||||
viewname='documents:document_type_list'
|
||||
)
|
||||
|
||||
def get_extra_context(self):
|
||||
return {
|
||||
@@ -146,7 +150,7 @@ class DocumentTypeFilenameCreateView(SingleObjectCreateView):
|
||||
)
|
||||
|
||||
def get_document_type(self):
|
||||
return get_object_or_404(klass=DocumentType, pk=self.kwargs['pk'])
|
||||
return get_object_or_404(klass=DocumentType, pk=self.kwargs['document_type_pk'])
|
||||
|
||||
def get_extra_context(self):
|
||||
return {
|
||||
@@ -164,6 +168,7 @@ class DocumentTypeFilenameCreateView(SingleObjectCreateView):
|
||||
class DocumentTypeFilenameDeleteView(SingleObjectDeleteView):
|
||||
model = DocumentTypeFilename
|
||||
object_permission = permission_document_type_edit
|
||||
pk_url_kwarg = 'filename_pk'
|
||||
|
||||
def get_extra_context(self):
|
||||
return {
|
||||
@@ -181,8 +186,8 @@ class DocumentTypeFilenameDeleteView(SingleObjectDeleteView):
|
||||
|
||||
def get_post_action_redirect(self):
|
||||
return reverse(
|
||||
'documents:document_type_filename_list',
|
||||
args=(self.get_object().document_type.pk,)
|
||||
viewname='documents:document_type_filename_list',
|
||||
kwargs={'document_type_pk': self.get_object().document_type.pk}
|
||||
)
|
||||
|
||||
|
||||
@@ -190,6 +195,7 @@ class DocumentTypeFilenameEditView(SingleObjectEditView):
|
||||
fields = ('enabled', 'filename',)
|
||||
model = DocumentTypeFilename
|
||||
object_permission = permission_document_type_edit
|
||||
pk_url_kwarg = 'filename_pk'
|
||||
|
||||
def get_extra_context(self):
|
||||
document_type_filename = self.get_object()
|
||||
@@ -209,8 +215,8 @@ class DocumentTypeFilenameEditView(SingleObjectEditView):
|
||||
|
||||
def get_post_action_redirect(self):
|
||||
return reverse(
|
||||
'documents:document_type_filename_list',
|
||||
args=(self.get_object().document_type.pk,)
|
||||
viewname='documents:document_type_filename_list',
|
||||
kwargs={'document_type_pk': self.get_object().document_type.pk}
|
||||
)
|
||||
|
||||
|
||||
@@ -219,7 +225,7 @@ class DocumentTypeFilenameListView(SingleObjectListView):
|
||||
object_permission = permission_document_type_view
|
||||
|
||||
def get_document_type(self):
|
||||
return get_object_or_404(klass=DocumentType, pk=self.kwargs['pk'])
|
||||
return get_object_or_404(klass=DocumentType, pk=self.kwargs['document_type_pk'])
|
||||
|
||||
def get_extra_context(self):
|
||||
return {
|
||||
|
||||
@@ -27,18 +27,18 @@ logger = logging.getLogger(__name__)
|
||||
class DocumentVersionListView(SingleObjectListView):
|
||||
def dispatch(self, request, *args, **kwargs):
|
||||
AccessControlList.objects.check_access(
|
||||
permissions=permission_document_version_view, user=request.user,
|
||||
obj=self.get_document()
|
||||
obj=self.get_document(),
|
||||
permissions=permission_document_version_view, user=request.user
|
||||
)
|
||||
|
||||
self.get_document().add_as_recent_document_for_user(request.user)
|
||||
self.get_document().add_as_recent_document_for_user(user=request.user)
|
||||
|
||||
return super(
|
||||
DocumentVersionListView, self
|
||||
).dispatch(request, *args, **kwargs)
|
||||
|
||||
def get_document(self):
|
||||
return get_object_or_404(klass=Document, pk=self.kwargs['pk'])
|
||||
return get_object_or_404(klass=Document, pk=self.kwargs['document_pk'])
|
||||
|
||||
def get_extra_context(self):
|
||||
return {
|
||||
@@ -67,18 +67,22 @@ class DocumentVersionRevertView(ConfirmView):
|
||||
}
|
||||
|
||||
def get_object(self):
|
||||
return get_object_or_404(klass=DocumentVersion, pk=self.kwargs['pk'])
|
||||
return get_object_or_404(
|
||||
klass=DocumentVersion, pk=self.kwargs['document_version_pk']
|
||||
)
|
||||
|
||||
def view_action(self):
|
||||
try:
|
||||
self.get_object().revert(_user=self.request.user)
|
||||
messages.success(
|
||||
self.request, _('Document version reverted successfully')
|
||||
request=self.request, message=_(
|
||||
'Document version reverted successfully'
|
||||
)
|
||||
)
|
||||
except Exception as exception:
|
||||
messages.error(
|
||||
self.request,
|
||||
_('Error reverting document version; %s') % exception
|
||||
request=self.request,
|
||||
message=_('Error reverting document version; %s') % exception
|
||||
)
|
||||
|
||||
|
||||
@@ -86,6 +90,7 @@ class DocumentVersionDownloadFormView(DocumentDownloadFormView):
|
||||
form_class = DocumentVersionDownloadForm
|
||||
model = DocumentVersion
|
||||
multiple_download_view = None
|
||||
pk_url_kwarg = 'document_version_pk'
|
||||
querystring_form_fields = (
|
||||
'compressed', 'zip_filename', 'preserve_extension'
|
||||
)
|
||||
@@ -108,7 +113,7 @@ class DocumentVersionDownloadFormView(DocumentDownloadFormView):
|
||||
)
|
||||
|
||||
if not id_list:
|
||||
id_list = self.kwargs['pk']
|
||||
id_list = self.kwargs['document_version_pk']
|
||||
|
||||
return self.model.objects.filter(
|
||||
pk__in=id_list.split(',')
|
||||
@@ -118,6 +123,7 @@ class DocumentVersionDownloadFormView(DocumentDownloadFormView):
|
||||
class DocumentVersionDownloadView(DocumentDownloadView):
|
||||
model = DocumentVersion
|
||||
object_permission = permission_document_download
|
||||
pk_url_kwarg = 'document_version_pk'
|
||||
|
||||
@staticmethod
|
||||
def get_item_file(item):
|
||||
|
||||
@@ -66,7 +66,7 @@ class DocumentListView(SingleObjectListView):
|
||||
return super(DocumentListView, self).get_context_data(**kwargs)
|
||||
except Exception as exception:
|
||||
messages.error(
|
||||
self.request, _(
|
||||
request=self.request, message=_(
|
||||
'Error retrieving document list: %(exception)s.'
|
||||
) % {
|
||||
'exception': exception
|
||||
@@ -105,10 +105,11 @@ class DeletedDocumentDeleteView(ConfirmView):
|
||||
extra_context = {
|
||||
'title': _('Delete the selected document?')
|
||||
}
|
||||
pk_url_kwarg = 'document_pk'
|
||||
|
||||
def object_action(self, instance):
|
||||
source_document = get_object_or_404(
|
||||
Document.passthrough, pk=instance.pk
|
||||
klass=Document.passthrough, pk=instance.pk
|
||||
)
|
||||
|
||||
AccessControlList.objects.check_access(
|
||||
@@ -121,10 +122,14 @@ class DeletedDocumentDeleteView(ConfirmView):
|
||||
)
|
||||
|
||||
def view_action(self):
|
||||
instance = get_object_or_404(DeletedDocument, pk=self.kwargs['pk'])
|
||||
instance = get_object_or_404(
|
||||
klass=DeletedDocument, pk=self.kwargs['document_pk']
|
||||
)
|
||||
self.object_action(instance=instance)
|
||||
messages.success(
|
||||
self.request, _('Document: %(document)s deleted.') % {
|
||||
request=self.request, message=_(
|
||||
'Document: %(document)s deleted.'
|
||||
) % {
|
||||
'document': instance
|
||||
}
|
||||
)
|
||||
@@ -144,8 +149,8 @@ class DeletedDocumentListView(DocumentListView):
|
||||
|
||||
def get_document_queryset(self):
|
||||
return AccessControlList.objects.filter_by_access(
|
||||
permission_document_view, self.request.user,
|
||||
queryset=DeletedDocument.trash.all()
|
||||
permission=permission_document_view,
|
||||
queryset=DeletedDocument.trash.all(), user=self.request.user
|
||||
)
|
||||
|
||||
def get_extra_context(self):
|
||||
@@ -172,6 +177,7 @@ class DocumentDocumentTypeEditView(MultipleObjectFormActionView):
|
||||
form_class = DocumentTypeFilteredSelectForm
|
||||
model = Document
|
||||
object_permission = permission_document_properties_edit
|
||||
pk_url_kwarg = 'document_pk'
|
||||
success_message = _(
|
||||
'Document type change request performed on %(count)d document'
|
||||
)
|
||||
@@ -216,7 +222,7 @@ class DocumentDocumentTypeEditView(MultipleObjectFormActionView):
|
||||
)
|
||||
|
||||
messages.success(
|
||||
self.request, _(
|
||||
request=self.request, message=_(
|
||||
'Document type for "%s" changed successfully.'
|
||||
) % instance
|
||||
)
|
||||
@@ -225,8 +231,8 @@ class DocumentDocumentTypeEditView(MultipleObjectFormActionView):
|
||||
class DocumentDuplicatesListView(DocumentListView):
|
||||
def dispatch(self, request, *args, **kwargs):
|
||||
AccessControlList.objects.check_access(
|
||||
permissions=permission_document_view, user=self.request.user,
|
||||
obj=self.get_document()
|
||||
obj=self.get_document(), permissions=permission_document_view,
|
||||
user=self.request.user
|
||||
)
|
||||
|
||||
return super(
|
||||
@@ -234,7 +240,7 @@ class DocumentDuplicatesListView(DocumentListView):
|
||||
).dispatch(request, *args, **kwargs)
|
||||
|
||||
def get_document(self):
|
||||
return get_object_or_404(klass=Document, pk=self.kwargs['pk'])
|
||||
return get_object_or_404(klass=Document, pk=self.kwargs['document_pk'])
|
||||
|
||||
def get_extra_context(self):
|
||||
context = super(DocumentDuplicatesListView, self).get_extra_context()
|
||||
@@ -262,6 +268,7 @@ class DocumentEditView(SingleObjectEditView):
|
||||
form_class = DocumentForm
|
||||
model = Document
|
||||
object_permission = permission_document_properties_edit
|
||||
pk_url_kwarg = 'document_pk'
|
||||
|
||||
def dispatch(self, request, *args, **kwargs):
|
||||
result = super(
|
||||
@@ -283,7 +290,8 @@ class DocumentEditView(SingleObjectEditView):
|
||||
|
||||
def get_post_action_redirect(self):
|
||||
return reverse(
|
||||
'documents:document_properties', args=(self.get_object().pk,)
|
||||
viewname='documents:document_properties',
|
||||
kwargs={'document_pk': self.get_object().pk}
|
||||
)
|
||||
|
||||
|
||||
@@ -291,6 +299,7 @@ class DocumentPreviewView(SingleObjectDetailView):
|
||||
form_class = DocumentPreviewForm
|
||||
model = Document
|
||||
object_permission = permission_document_view
|
||||
pk_url_kwarg = 'document_pk'
|
||||
|
||||
def dispatch(self, request, *args, **kwargs):
|
||||
result = super(
|
||||
@@ -322,19 +331,23 @@ class DocumentRestoreView(ConfirmView):
|
||||
)
|
||||
|
||||
AccessControlList.objects.check_access(
|
||||
permissions=permission_document_restore, user=self.request.user,
|
||||
obj=source_document
|
||||
obj=source_document, permissions=permission_document_restore,
|
||||
user=self.request.user
|
||||
)
|
||||
|
||||
instance.restore()
|
||||
|
||||
def view_action(self):
|
||||
instance = get_object_or_404(klass=DeletedDocument, pk=self.kwargs['pk'])
|
||||
instance = get_object_or_404(
|
||||
klass=DeletedDocument, pk=self.kwargs['document_pk']
|
||||
)
|
||||
|
||||
self.object_action(instance=instance)
|
||||
|
||||
messages.success(
|
||||
self.request, _('Document: %(document)s restored.') % {
|
||||
request=self.request, message=_(
|
||||
'Document: %(document)s restored.'
|
||||
) % {
|
||||
'document': instance
|
||||
}
|
||||
)
|
||||
@@ -357,15 +370,15 @@ class DocumentTrashView(ConfirmView):
|
||||
}
|
||||
|
||||
def get_object(self):
|
||||
return get_object_or_404(klass=Document, pk=self.kwargs['pk'])
|
||||
return get_object_or_404(klass=Document, pk=self.kwargs['document_pk'])
|
||||
|
||||
def get_post_action_redirect(self):
|
||||
return reverse('documents:document_list_recent_access')
|
||||
return reverse(viewname='documents:document_list_recent_access')
|
||||
|
||||
def object_action(self, instance):
|
||||
AccessControlList.objects.check_access(
|
||||
permissions=permission_document_trash, user=self.request.user,
|
||||
obj=instance
|
||||
obj=instance, permissions=permission_document_trash,
|
||||
user=self.request.user
|
||||
)
|
||||
|
||||
instance.delete()
|
||||
@@ -376,7 +389,9 @@ class DocumentTrashView(ConfirmView):
|
||||
self.object_action(instance=instance)
|
||||
|
||||
messages.success(
|
||||
self.request, _('Document: %(document)s moved to trash successfully.') % {
|
||||
request=self.request, message=_(
|
||||
'Document: %(document)s moved to trash successfully.'
|
||||
) % {
|
||||
'document': instance
|
||||
}
|
||||
)
|
||||
@@ -397,6 +412,7 @@ class DocumentView(SingleObjectDetailView):
|
||||
form_class = DocumentPropertiesForm
|
||||
model = Document
|
||||
object_permission = permission_document_view
|
||||
pk_url_kwarg = 'document_pk'
|
||||
|
||||
def dispatch(self, request, *args, **kwargs):
|
||||
result = super(DocumentView, self).dispatch(request, *args, **kwargs)
|
||||
@@ -417,7 +433,7 @@ class EmptyTrashCanView(ConfirmView):
|
||||
}
|
||||
view_permission = permission_empty_trash
|
||||
action_cancel_redirect = post_action_redirect = reverse_lazy(
|
||||
'documents:document_list_deleted'
|
||||
viewname='documents:document_list_deleted'
|
||||
)
|
||||
|
||||
def view_action(self):
|
||||
@@ -426,7 +442,9 @@ class EmptyTrashCanView(ConfirmView):
|
||||
kwargs={'deleted_document_id': deleted_document.pk}
|
||||
)
|
||||
|
||||
messages.success(self.request, _('Trash emptied successfully'))
|
||||
messages.success(
|
||||
request=self.request, message=_('Trash emptied successfully')
|
||||
)
|
||||
|
||||
|
||||
class DocumentDownloadFormView(FormView):
|
||||
@@ -458,7 +476,8 @@ class DocumentDownloadFormView(FormView):
|
||||
url = reverse(self.multiple_download_view)
|
||||
else:
|
||||
url = reverse(
|
||||
self.single_download_view, args=(self.queryset.first().pk,)
|
||||
viewname=self.single_download_view,
|
||||
kwargs={'document_pk': self.queryset.first().pk}
|
||||
)
|
||||
|
||||
return HttpResponseRedirect('{}?{}'.format(url, querystring))
|
||||
@@ -469,7 +488,7 @@ class DocumentDownloadFormView(FormView):
|
||||
)
|
||||
|
||||
if not id_list:
|
||||
id_list = self.kwargs['pk']
|
||||
id_list = self.kwargs['document_pk']
|
||||
|
||||
return self.model.objects.filter(
|
||||
pk__in=id_list.split(',')
|
||||
@@ -480,10 +499,10 @@ class DocumentDownloadFormView(FormView):
|
||||
{
|
||||
'name': 'appearance/generic_list_items_subtemplate.html',
|
||||
'context': {
|
||||
'object_list': self.queryset,
|
||||
'hide_link': True,
|
||||
'hide_links': True,
|
||||
'hide_multi_item_actions': True,
|
||||
'object_list': self.queryset
|
||||
}
|
||||
}
|
||||
]
|
||||
@@ -507,8 +526,8 @@ class DocumentDownloadFormView(FormView):
|
||||
|
||||
def get_queryset(self):
|
||||
return AccessControlList.objects.filter_by_access(
|
||||
permission_document_download, self.request.user,
|
||||
queryset=self.get_document_queryset()
|
||||
permission=permission_document_download,
|
||||
queryset=self.get_document_queryset(), user=self.request.user
|
||||
)
|
||||
|
||||
|
||||
@@ -516,6 +535,7 @@ class DocumentDownloadView(SingleObjectDownloadView):
|
||||
model = Document
|
||||
# Set to None to disable the .get_object call
|
||||
object_permission = None
|
||||
pk_url_kwarg = 'document_pk'
|
||||
|
||||
@staticmethod
|
||||
def commit_event(item, request):
|
||||
@@ -541,7 +561,7 @@ class DocumentDownloadView(SingleObjectDownloadView):
|
||||
)
|
||||
|
||||
if not id_list:
|
||||
id_list = self.kwargs['pk']
|
||||
id_list = self.kwargs[self.pk_url_kwarg]
|
||||
|
||||
queryset = self.model.objects.filter(pk__in=id_list.split(','))
|
||||
|
||||
@@ -594,6 +614,8 @@ class DocumentDownloadView(SingleObjectDownloadView):
|
||||
class DocumentUpdatePageCountView(MultipleObjectConfirmActionView):
|
||||
model = Document
|
||||
object_permission = permission_document_tools
|
||||
pk_url_kwarg = 'document_pk'
|
||||
|
||||
success_message = _(
|
||||
'%(count)d document queued for page count recalculation'
|
||||
)
|
||||
@@ -632,7 +654,7 @@ class DocumentUpdatePageCountView(MultipleObjectConfirmActionView):
|
||||
)
|
||||
else:
|
||||
messages.error(
|
||||
self.request, _(
|
||||
request=self.request, message=_(
|
||||
'Document "%(document)s" is empty. Upload at least one '
|
||||
'document version before attempting to detect the '
|
||||
'page count.'
|
||||
@@ -645,6 +667,7 @@ class DocumentUpdatePageCountView(MultipleObjectConfirmActionView):
|
||||
class DocumentTransformationsClearView(MultipleObjectConfirmActionView):
|
||||
model = Document
|
||||
object_permission = permission_transformation_delete
|
||||
pk_url_kwarg = 'document_pk'
|
||||
success_message = _(
|
||||
'Transformation clear request processed for %(count)d document'
|
||||
)
|
||||
@@ -682,7 +705,7 @@ class DocumentTransformationsClearView(MultipleObjectConfirmActionView):
|
||||
Transformation.objects.get_for_model(page).delete()
|
||||
except Exception as exception:
|
||||
messages.error(
|
||||
self.request, _(
|
||||
request=self.request, message=_(
|
||||
'Error deleting the page transformations for '
|
||||
'document: %(document)s; %(error)s.'
|
||||
) % {
|
||||
@@ -710,7 +733,7 @@ class DocumentTransformationsCloneView(FormView):
|
||||
)
|
||||
except Exception as exception:
|
||||
messages.error(
|
||||
self.request, _(
|
||||
request=self.request, message=_(
|
||||
'Error deleting the page transformations for '
|
||||
'document: %(document)s; %(error)s.'
|
||||
) % {
|
||||
@@ -719,7 +742,9 @@ class DocumentTransformationsCloneView(FormView):
|
||||
)
|
||||
else:
|
||||
messages.success(
|
||||
self.request, _('Transformations cloned successfully.')
|
||||
request=self.request, message=_(
|
||||
'Transformations cloned successfully.'
|
||||
)
|
||||
)
|
||||
|
||||
return super(DocumentTransformationsCloneView, self).form_valid(form=form)
|
||||
@@ -743,14 +768,16 @@ class DocumentTransformationsCloneView(FormView):
|
||||
return context
|
||||
|
||||
def get_object(self):
|
||||
instance = get_object_or_404(klass=Document, pk=self.kwargs['pk'])
|
||||
|
||||
AccessControlList.objects.check_access(
|
||||
permissions=permission_transformation_edit,
|
||||
user=self.request.user, obj=instance
|
||||
instance = get_object_or_404(
|
||||
klass=Document, pk=self.kwargs['document_pk']
|
||||
)
|
||||
|
||||
instance.add_as_recent_document_for_user(self.request.user)
|
||||
AccessControlList.objects.check_access(
|
||||
obj=instance, permissions=permission_transformation_edit,
|
||||
user=self.request.user
|
||||
)
|
||||
|
||||
instance.add_as_recent_document_for_user(user=self.request.user)
|
||||
|
||||
return instance
|
||||
|
||||
@@ -761,11 +788,11 @@ class DocumentPrint(FormView):
|
||||
def dispatch(self, request, *args, **kwargs):
|
||||
instance = self.get_object()
|
||||
AccessControlList.objects.check_access(
|
||||
permissions=permission_document_print, user=self.request.user,
|
||||
obj=instance
|
||||
obj=instance, permissions=permission_document_print,
|
||||
user=self.request.user
|
||||
)
|
||||
|
||||
instance.add_as_recent_document_for_user(self.request.user)
|
||||
instance.add_as_recent_document_for_user(user=self.request.user)
|
||||
|
||||
self.page_group = self.request.GET.get('page_group')
|
||||
self.page_range = self.request.GET.get('page_range')
|
||||
@@ -792,8 +819,8 @@ class DocumentPrint(FormView):
|
||||
{
|
||||
'appearance_type': 'plain',
|
||||
'pages': pages,
|
||||
'width': setting_print_width.value,
|
||||
'height': setting_print_height.value,
|
||||
'width': setting_print_width.value
|
||||
}
|
||||
)
|
||||
|
||||
@@ -804,7 +831,8 @@ class DocumentPrint(FormView):
|
||||
|
||||
context = {
|
||||
'form_action': reverse(
|
||||
'documents:document_print', args=(instance.pk,)
|
||||
viewname='documents:document_print',
|
||||
kwargs={'document_pk': instance.pk}
|
||||
),
|
||||
'object': instance,
|
||||
'submit_label': _('Submit'),
|
||||
@@ -816,7 +844,7 @@ class DocumentPrint(FormView):
|
||||
return context
|
||||
|
||||
def get_object(self):
|
||||
return get_object_or_404(klass=Document, pk=self.kwargs['pk'])
|
||||
return get_object_or_404(klass=Document, pk=self.kwargs['document_pk'])
|
||||
|
||||
def get_template_names(self):
|
||||
if self.page_group or self.page_range:
|
||||
|
||||
Reference in New Issue
Block a user