Update generic view and check access interfaces
Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
This commit is contained in:
@@ -14,12 +14,7 @@ from ..permissions import permission_acl_edit, permission_acl_view
|
||||
|
||||
class ACLsLinksTestCase(GenericDocumentViewTestCase):
|
||||
def test_document_acl_create_link(self):
|
||||
acl = AccessControlList.objects.create(
|
||||
content_object=self.document, role=self.role
|
||||
)
|
||||
|
||||
acl.permissions.add(permission_acl_edit.stored_permission)
|
||||
self.login_user()
|
||||
self.grant_access(obj=self.document, permission=permission_acl_edit)
|
||||
|
||||
self.add_test_view(test_object=self.document)
|
||||
context = self.get_test_view()
|
||||
@@ -39,12 +34,7 @@ class ACLsLinksTestCase(GenericDocumentViewTestCase):
|
||||
)
|
||||
|
||||
def test_document_acl_delete_link(self):
|
||||
acl = AccessControlList.objects.create(
|
||||
content_object=self.document, role=self.role
|
||||
)
|
||||
|
||||
acl.permissions.add(permission_acl_edit.stored_permission)
|
||||
self.login_user()
|
||||
self.grant_access(obj=self.document, permission=permission_acl_edit)
|
||||
|
||||
self.add_test_view(test_object=acl)
|
||||
context = self.get_test_view()
|
||||
@@ -53,16 +43,13 @@ class ACLsLinksTestCase(GenericDocumentViewTestCase):
|
||||
self.assertNotEqual(resolved_link, None)
|
||||
|
||||
self.assertEqual(
|
||||
resolved_link.url, reverse(viewname='acls:acl_delete', kwargs={'acl_pk': acl.pk})
|
||||
resolved_link.url, reverse(
|
||||
viewname='acls:acl_delete', kwargs={'acl_id': acl.pk}
|
||||
)
|
||||
)
|
||||
|
||||
def test_document_acl_edit_link(self):
|
||||
acl = AccessControlList.objects.create(
|
||||
content_object=self.document, role=self.role
|
||||
)
|
||||
|
||||
acl.permissions.add(permission_acl_edit.stored_permission)
|
||||
self.login_user()
|
||||
self.grant_access(obj=self.document, permission=permission_acl_edit)
|
||||
|
||||
self.add_test_view(test_object=acl)
|
||||
context = self.get_test_view()
|
||||
@@ -71,16 +58,13 @@ class ACLsLinksTestCase(GenericDocumentViewTestCase):
|
||||
self.assertNotEqual(resolved_link, None)
|
||||
|
||||
self.assertEqual(
|
||||
resolved_link.url, reverse(viewname='acls:acl_permissions', kwargs={'acl_pk': acl.pk})
|
||||
resolved_link.url, reverse(
|
||||
viewname='acls:acl_permissions', kwargs={'acl_id': acl.pk}
|
||||
)
|
||||
)
|
||||
|
||||
def test_document_acl_list_link(self):
|
||||
acl = AccessControlList.objects.create(
|
||||
content_object=self.document, role=self.role
|
||||
)
|
||||
|
||||
acl.permissions.add(permission_acl_view.stored_permission)
|
||||
self.login_user()
|
||||
self.grant_access(obj=self.document, permission=permission_acl_view)
|
||||
|
||||
self.add_test_view(test_object=self.document)
|
||||
context = self.get_test_view()
|
||||
|
||||
@@ -132,7 +132,7 @@ class ACLListView(ContentTypeViewMixin, ExternalObjectMixin, SingleObjectListVie
|
||||
),
|
||||
}
|
||||
|
||||
def get_object_list(self):
|
||||
def get_source_queryset(self):
|
||||
return self.get_external_object().acls.all()
|
||||
|
||||
|
||||
|
||||
@@ -75,9 +75,9 @@ class CabinetsApp(MayanAppConfig):
|
||||
permission_cabinet_remove_document
|
||||
)
|
||||
)
|
||||
ModelPermission.register_inheritance(
|
||||
model=Cabinet, related='get_root',
|
||||
)
|
||||
#ModelPermission.register_inheritance(
|
||||
# model=Cabinet, related='get_root',
|
||||
#)
|
||||
|
||||
SourceColumn(
|
||||
func=lambda context: widget_document_cabinets(
|
||||
|
||||
@@ -64,7 +64,7 @@ class CabinetChildAddView(SingleObjectCreateView):
|
||||
cabinet = super(CabinetChildAddView, self).get_object(*args, **kwargs)
|
||||
|
||||
AccessControlList.objects.check_access(
|
||||
permissions=permission_cabinet_edit, obj=cabinet.get_root(),
|
||||
obj=cabinet.get_root(), permission=permission_cabinet_edit,
|
||||
user=self.request.user, raise_404=True
|
||||
)
|
||||
|
||||
@@ -146,7 +146,7 @@ class CabinetDetailView(DocumentListView):
|
||||
permission_object = cabinet.get_root()
|
||||
|
||||
AccessControlList.objects.check_access(
|
||||
permissions=permission_cabinet_view, obj=permission_object,
|
||||
obj=permission_object, permission=permission_cabinet_view,
|
||||
user=self.request.user, raise_404=True
|
||||
)
|
||||
|
||||
@@ -187,7 +187,7 @@ class CabinetListView(SingleObjectListView):
|
||||
'no_results_title': _('No cabinets available'),
|
||||
}
|
||||
|
||||
def get_object_list(self):
|
||||
def get_source_queryset(self):
|
||||
# Add explicit ordering of root nodes since the queryset returned
|
||||
# is not affected by the model's order Meta option.
|
||||
return Cabinet.objects.root_nodes().order_by('label')
|
||||
@@ -200,8 +200,8 @@ class DocumentCabinetListView(CabinetListView):
|
||||
)
|
||||
|
||||
AccessControlList.objects.check_access(
|
||||
permissions=permission_document_view, user=request.user,
|
||||
obj=self.document, raise_404=True
|
||||
obj=self.document, permission=permission_document_view,
|
||||
user=request.user, raise_404=True
|
||||
)
|
||||
|
||||
return super(DocumentCabinetListView, self).dispatch(
|
||||
@@ -227,7 +227,7 @@ class DocumentCabinetListView(CabinetListView):
|
||||
'title': _('Cabinets containing document: %s') % self.document,
|
||||
}
|
||||
|
||||
def get_object_list(self):
|
||||
def get_source_queryset(self):
|
||||
return self.document.get_cabinets().all()
|
||||
|
||||
|
||||
@@ -295,7 +295,7 @@ class DocumentAddToCabinetView(MultipleObjectFormActionView):
|
||||
|
||||
for cabinet in form.cleaned_data['cabinets']:
|
||||
AccessControlList.objects.check_access(
|
||||
obj=cabinet, permissions=permission_cabinet_add_document,
|
||||
obj=cabinet, permission=permission_cabinet_add_document,
|
||||
user=self.request.user, raise_404=True
|
||||
)
|
||||
if cabinet in cabinet_membership:
|
||||
@@ -383,7 +383,7 @@ class DocumentRemoveFromCabinetView(MultipleObjectFormActionView):
|
||||
|
||||
for cabinet in form.cleaned_data['cabinets']:
|
||||
AccessControlList.objects.check_access(
|
||||
obj=cabinet, permissions=permission_cabinet_remove_document,
|
||||
obj=cabinet, permission=permission_cabinet_remove_document,
|
||||
user=self.request.user, raise_404=True
|
||||
)
|
||||
|
||||
|
||||
@@ -37,8 +37,8 @@ class TransformationDeleteView(SingleObjectDeleteView):
|
||||
)
|
||||
|
||||
AccessControlList.objects.check_access(
|
||||
permissions=permission_transformation_delete,
|
||||
obj=self.transformation.content_object, user=request.user
|
||||
obj=self.transformation.content_object,
|
||||
permission=permission_transformation_delete, user=request.user
|
||||
)
|
||||
|
||||
return super(TransformationDeleteView, self).dispatch(
|
||||
@@ -93,8 +93,8 @@ class TransformationCreateView(SingleObjectCreateView):
|
||||
raise Http404
|
||||
|
||||
AccessControlList.objects.check_access(
|
||||
permissions=permission_transformation_create,
|
||||
obj=self.content_object, user=request.user
|
||||
obj=self.content_object, permission=permission_transformation_create,
|
||||
user=request.user
|
||||
)
|
||||
|
||||
return super(TransformationCreateView, self).dispatch(
|
||||
@@ -149,7 +149,7 @@ class TransformationEditView(SingleObjectEditView):
|
||||
|
||||
AccessControlList.objects.check_access(
|
||||
obj=self.transformation.content_object,
|
||||
permissions=permission_transformation_edit, user=request.user
|
||||
permission=permission_transformation_edit, user=request.user
|
||||
)
|
||||
|
||||
return super(TransformationEditView, self).dispatch(
|
||||
@@ -206,7 +206,7 @@ class TransformationListView(SingleObjectListView):
|
||||
|
||||
AccessControlList.objects.check_access(
|
||||
obj=self.content_object,
|
||||
permissions=permission_transformation_view,
|
||||
permission=permission_transformation_view,
|
||||
user=request.user
|
||||
)
|
||||
|
||||
@@ -235,5 +235,5 @@ class TransformationListView(SingleObjectListView):
|
||||
'title': _('Transformations for: %s') % self.content_object,
|
||||
}
|
||||
|
||||
def get_object_list(self):
|
||||
def get_source_queryset(self):
|
||||
return Transformation.objects.get_for_model(obj=self.content_object)
|
||||
|
||||
@@ -19,7 +19,7 @@ class CommentAPITestCase(CommentsTestMixin, DocumentTestMixin, BaseAPITestCase):
|
||||
def _request_api_comment_create_view(self):
|
||||
return self.post(
|
||||
viewname='rest_api:comment-list',
|
||||
kwargs={'document_pk': self.document.pk}, data={
|
||||
kwargs={'document_id': self.document.pk}, data={
|
||||
'comment': TEST_COMMENT_TEXT
|
||||
}
|
||||
)
|
||||
@@ -40,8 +40,8 @@ class CommentAPITestCase(CommentsTestMixin, DocumentTestMixin, BaseAPITestCase):
|
||||
def _request_api_comment_delete_view(self):
|
||||
return self.delete(
|
||||
viewname='rest_api:comment-detail', kwargs={
|
||||
'document_pk': self.document.pk,
|
||||
'comment_pk': self.test_comment.pk
|
||||
'document_id': self.document.pk,
|
||||
'comment_id': self.test_comment.pk
|
||||
}
|
||||
)
|
||||
|
||||
@@ -63,8 +63,8 @@ class CommentAPITestCase(CommentsTestMixin, DocumentTestMixin, BaseAPITestCase):
|
||||
def _request_api_comment_detail_view(self):
|
||||
return self.get(
|
||||
viewname='rest_api:comment-detail', kwargs={
|
||||
'document_pk': self.document.pk,
|
||||
'comment_pk': self.test_comment.pk
|
||||
'document_id': self.document.pk,
|
||||
'comment_id': self.test_comment.pk
|
||||
}
|
||||
)
|
||||
|
||||
@@ -85,7 +85,7 @@ class CommentAPITestCase(CommentsTestMixin, DocumentTestMixin, BaseAPITestCase):
|
||||
def _request_api_comment_list_view(self):
|
||||
return self.get(
|
||||
viewname='rest_api:comment-list',
|
||||
kwargs={'document_pk': self.document.pk}
|
||||
kwargs={'document_id': self.document.pk}
|
||||
)
|
||||
|
||||
def test_comment_list_view_no_access(self):
|
||||
|
||||
@@ -100,5 +100,5 @@ class DocumentCommentListView(ExternalObjectMixin, SingleObjectListView):
|
||||
'title': _('Comments for document: %s') % self.get_document(),
|
||||
}
|
||||
|
||||
def get_object_list(self):
|
||||
def get_source_queryset(self):
|
||||
return self.get_document().comments.all()
|
||||
|
||||
@@ -56,7 +56,7 @@ class IndexViewTestCase(GenericDocumentViewTestCase):
|
||||
)
|
||||
|
||||
response = self._request_index_delete_view(index=index)
|
||||
self.assertEqual(response.status_code, 403)
|
||||
self.assertEqual(response.status_code, 404)
|
||||
self.assertEqual(Index.objects.count(), 1)
|
||||
|
||||
def test_index_delete_view_with_permission(self):
|
||||
@@ -88,7 +88,7 @@ class IndexViewTestCase(GenericDocumentViewTestCase):
|
||||
)
|
||||
|
||||
response = self._request_index_edit_view(index=index)
|
||||
self.assertEqual(response.status_code, 403)
|
||||
self.assertEqual(response.status_code, 404)
|
||||
index = Index.objects.get(pk=index.pk)
|
||||
self.assertEqual(index.label, TEST_INDEX_LABEL)
|
||||
|
||||
|
||||
@@ -103,8 +103,8 @@ class SetupIndexDocumentTypesView(AssignRemoveView):
|
||||
|
||||
def get_document_queryset(self):
|
||||
return AccessControlList.objects.restrict_queryset(
|
||||
permission_document_view, queryset=DocumentType.objects.all(),
|
||||
user=self.request.user
|
||||
permission=permission_document_view,
|
||||
queryset=DocumentType.objects.all(), user=self.request.user
|
||||
)
|
||||
|
||||
def get_extra_context(self):
|
||||
@@ -153,7 +153,7 @@ class SetupIndexTreeTemplateListView(SingleObjectListView):
|
||||
def get_index(self):
|
||||
return get_object_or_404(klass=Index, pk=self.kwargs['index_pk'])
|
||||
|
||||
def get_object_list(self):
|
||||
def get_source_queryset(self):
|
||||
return self.get_index().template_root.get_descendants(
|
||||
include_self=True
|
||||
)
|
||||
@@ -166,7 +166,7 @@ class TemplateNodeCreateView(SingleObjectCreateView):
|
||||
def dispatch(self, request, *args, **kwargs):
|
||||
AccessControlList.objects.check_access(
|
||||
obj=self.get_parent_node().index,
|
||||
permissions=permission_document_indexing_edit, user=request.user
|
||||
permission=permission_document_indexing_edit, user=request.user
|
||||
)
|
||||
|
||||
return super(
|
||||
@@ -254,7 +254,7 @@ class IndexListView(SingleObjectListView):
|
||||
'title': _('Indexes'),
|
||||
}
|
||||
|
||||
def get_object_list(self):
|
||||
def get_source_queryset(self):
|
||||
queryset = IndexInstance.objects.filter(enabled=True)
|
||||
return queryset.filter(
|
||||
node_templates__index_instance_nodes__isnull=False
|
||||
@@ -271,7 +271,7 @@ class IndexInstanceNodeView(DocumentListView):
|
||||
|
||||
AccessControlList.objects.check_access(
|
||||
obj=self.index_instance_node.index(),
|
||||
permissions=permission_document_indexing_instance_view,
|
||||
permission=permission_document_indexing_instance_view,
|
||||
user=request.user
|
||||
)
|
||||
|
||||
@@ -317,10 +317,10 @@ class IndexInstanceNodeView(DocumentListView):
|
||||
|
||||
return context
|
||||
|
||||
def get_object_list(self):
|
||||
def get_source_queryset(self):
|
||||
if self.index_instance_node:
|
||||
if self.index_instance_node.index_template_node.link_documents:
|
||||
return super(IndexInstanceNodeView, self).get_object_list()
|
||||
return super(IndexInstanceNodeView, self).get_source_queryset()
|
||||
else:
|
||||
self.object_permission = None
|
||||
return self.index_instance_node.get_children().order_by(
|
||||
@@ -339,7 +339,7 @@ class DocumentIndexNodeListView(SingleObjectListView):
|
||||
|
||||
def dispatch(self, request, *args, **kwargs):
|
||||
AccessControlList.objects.check_access(
|
||||
obj=self.get_document(), permissions=permission_document_view,
|
||||
obj=self.get_document(), permission=permission_document_view,
|
||||
user=request.user
|
||||
)
|
||||
|
||||
@@ -370,7 +370,7 @@ class DocumentIndexNodeListView(SingleObjectListView):
|
||||
) % self.get_document(),
|
||||
}
|
||||
|
||||
def get_object_list(self):
|
||||
def get_source_queryset(self):
|
||||
return DocumentIndexInstanceNode.objects.get_for(
|
||||
document=self.get_document()
|
||||
)
|
||||
|
||||
@@ -217,7 +217,7 @@ class DocumentVersionSignatureDeleteView(SingleObjectDeleteView):
|
||||
kwargs={'document_version_id': self.get_object().document_version.pk}
|
||||
)
|
||||
|
||||
def get_object_list(self):
|
||||
def get_source_queryset(self):
|
||||
return SignatureBaseModel.objects.select_subclasses()
|
||||
|
||||
|
||||
@@ -236,7 +236,7 @@ class DocumentVersionSignatureDetailView(SingleObjectDetailView):
|
||||
) % self.get_object(),
|
||||
}
|
||||
|
||||
def get_object_list(self):
|
||||
def get_source_queryset(self):
|
||||
return SignatureBaseModel.objects.select_subclasses()
|
||||
|
||||
|
||||
@@ -251,7 +251,7 @@ class DocumentVersionSignatureDownloadView(SingleObjectDownloadView):
|
||||
signature.signature_file, name=force_text(signature)
|
||||
)
|
||||
|
||||
def get_object_list(self):
|
||||
def get_source_queryset(self):
|
||||
return SignatureBaseModel.objects.select_subclasses()
|
||||
|
||||
|
||||
@@ -297,7 +297,7 @@ class DocumentVersionSignatureListView(ExternalObjectMixin, SingleObjectListView
|
||||
) % self.get_document_version(),
|
||||
}
|
||||
|
||||
def get_object_list(self):
|
||||
def get_source_queryset(self):
|
||||
return self.get_document_version().signatures.all()
|
||||
|
||||
|
||||
|
||||
@@ -26,8 +26,8 @@ __all__ = (
|
||||
class DocumentWorkflowInstanceListView(SingleObjectListView):
|
||||
def dispatch(self, request, *args, **kwargs):
|
||||
AccessControlList.objects.check_access(
|
||||
permissions=permission_workflow_view, user=request.user,
|
||||
obj=self.get_document()
|
||||
obj=self.get_document(), permission=permission_workflow_view,
|
||||
user=request.user,
|
||||
)
|
||||
|
||||
return super(
|
||||
@@ -63,8 +63,8 @@ class DocumentWorkflowInstanceListView(SingleObjectListView):
|
||||
class WorkflowInstanceDetailView(SingleObjectListView):
|
||||
def dispatch(self, request, *args, **kwargs):
|
||||
AccessControlList.objects.check_access(
|
||||
permissions=permission_workflow_view, user=request.user,
|
||||
obj=self.get_workflow_instance().document
|
||||
obj=self.get_workflow_instance().document,
|
||||
permission=permission_workflow_view, user=request.user
|
||||
)
|
||||
|
||||
return super(
|
||||
|
||||
@@ -80,7 +80,7 @@ class DocumentsViewsTestCase(GenericDocumentViewTestCase):
|
||||
document_type=document_type_2
|
||||
)
|
||||
|
||||
self.assertEqual(response.status_code, 302)
|
||||
self.assertEqual(response.status_code, 404)
|
||||
|
||||
self.assertEqual(
|
||||
Document.objects.get(pk=self.document.pk).document_type,
|
||||
@@ -136,7 +136,7 @@ class DocumentsViewsTestCase(GenericDocumentViewTestCase):
|
||||
document_type=document_type_2
|
||||
)
|
||||
|
||||
self.assertEqual(response.status_code, 302)
|
||||
self.assertEqual(response.status_code, 404)
|
||||
|
||||
self.assertEqual(
|
||||
Document.objects.first().document_type, self.document_type
|
||||
@@ -300,7 +300,7 @@ class DocumentsViewsTestCase(GenericDocumentViewTestCase):
|
||||
self.assertEqual(self.document.pages.count(), 0)
|
||||
|
||||
response = self._request_document_multiple_update_page_count_view()
|
||||
self.assertEqual(response.status_code, 302)
|
||||
self.assertEqual(response.status_code, 404)
|
||||
self.assertEqual(self.document.pages.count(), 0)
|
||||
|
||||
def test_document_multiple_update_page_count_view_with_permission(self):
|
||||
@@ -394,7 +394,7 @@ class DocumentsViewsTestCase(GenericDocumentViewTestCase):
|
||||
self.grant_permission(permission=permission_document_view)
|
||||
|
||||
response = self._request_document_multiple_transformations_clear()
|
||||
self.assertEqual(response.status_code, 302)
|
||||
self.assertEqual(response.status_code, 404)
|
||||
self.assertQuerysetEqual(
|
||||
Transformation.objects.get_for_model(document_page),
|
||||
(repr(transformation),)
|
||||
|
||||
@@ -51,7 +51,7 @@ class ResultsView(SearchModelMixin, SingleObjectListView):
|
||||
query_string=self.request.GET
|
||||
)
|
||||
|
||||
def get_object_list(self):
|
||||
def get_source_queryset(self):
|
||||
self.search_model = self.get_search_model()
|
||||
|
||||
if self.request.GET:
|
||||
|
||||
@@ -54,7 +54,7 @@ class DocumentDriverListView(SingleObjectListView):
|
||||
)
|
||||
return document
|
||||
|
||||
def get_object_list(self):
|
||||
def get_source_queryset(self):
|
||||
return self.get_object().latest_version.file_metadata_drivers.all()
|
||||
|
||||
|
||||
@@ -84,7 +84,7 @@ class DocumentVersionDriverEntryFileMetadataListView(SingleObjectListView):
|
||||
)
|
||||
return document_version_driver_entry
|
||||
|
||||
def get_object_list(self):
|
||||
def get_source_queryset(self):
|
||||
return self.get_object().entries.all()
|
||||
|
||||
|
||||
|
||||
@@ -44,9 +44,9 @@ class LinkingApp(MayanAppConfig):
|
||||
app_label='documents', model_name='Document'
|
||||
)
|
||||
|
||||
ResolvedSmartLink = self.get_model('ResolvedSmartLink')
|
||||
SmartLink = self.get_model('SmartLink')
|
||||
SmartLinkCondition = self.get_model('SmartLinkCondition')
|
||||
ResolvedSmartLink = self.get_model(model_name='ResolvedSmartLink')
|
||||
SmartLink = self.get_model(model_name='SmartLink')
|
||||
SmartLinkCondition = self.get_model(model_name='SmartLinkCondition')
|
||||
|
||||
ModelPermission.register(
|
||||
model=SmartLink, permissions=(
|
||||
|
||||
@@ -40,12 +40,12 @@ class ResolvedSmartLinkView(DocumentListView):
|
||||
)
|
||||
|
||||
AccessControlList.objects.check_access(
|
||||
obj=self.document, permissions=permission_document_view,
|
||||
obj=self.document, permission=permission_document_view,
|
||||
user=request.user
|
||||
)
|
||||
|
||||
AccessControlList.objects.check_access(
|
||||
obj=self.smart_link, permissions=permission_smart_link_view,
|
||||
obj=self.smart_link, permission=permission_smart_link_view,
|
||||
user=request.user
|
||||
)
|
||||
|
||||
@@ -63,7 +63,7 @@ class ResolvedSmartLinkView(DocumentListView):
|
||||
|
||||
try:
|
||||
AccessControlList.objects.check_access(
|
||||
obj=self.smart_link, permissions=permission_smart_link_edit,
|
||||
obj=self.smart_link, permission=permission_smart_link_edit,
|
||||
user=self.request.user
|
||||
)
|
||||
except PermissionDenied:
|
||||
@@ -163,12 +163,12 @@ class SmartLinkListView(SingleObjectListView):
|
||||
'title': _('Smart links'),
|
||||
}
|
||||
|
||||
def get_object_list(self):
|
||||
return self.get_smart_link_queryset()
|
||||
|
||||
def get_smart_link_queryset(self):
|
||||
return SmartLink.objects.all()
|
||||
|
||||
def get_source_queryset(self):
|
||||
return self.get_smart_link_queryset()
|
||||
|
||||
|
||||
class DocumentSmartLinkListView(SmartLinkListView):
|
||||
def dispatch(self, request, *args, **kwargs):
|
||||
@@ -177,7 +177,7 @@ class DocumentSmartLinkListView(SmartLinkListView):
|
||||
)
|
||||
|
||||
AccessControlList.objects.check_access(
|
||||
obj=self.document, permissions=permission_document_view,
|
||||
obj=self.document, permission=permission_document_view,
|
||||
user=request.user
|
||||
)
|
||||
|
||||
@@ -268,21 +268,21 @@ class SmartLinkConditionListView(SingleObjectListView):
|
||||
) % self.get_smart_link(),
|
||||
}
|
||||
|
||||
def get_object_list(self):
|
||||
return self.get_smart_link().conditions.all()
|
||||
|
||||
def get_smart_link(self):
|
||||
return get_object_or_404(
|
||||
klass=SmartLink, pk=self.kwargs['smart_link_id']
|
||||
)
|
||||
|
||||
def get_source_queryset(self):
|
||||
return self.get_smart_link().conditions.all()
|
||||
|
||||
|
||||
class SmartLinkConditionCreateView(SingleObjectCreateView):
|
||||
form_class = SmartLinkConditionForm
|
||||
|
||||
def dispatch(self, request, *args, **kwargs):
|
||||
AccessControlList.objects.check_access(
|
||||
obj=self.get_smart_link(), permissions=permission_smart_link_edit,
|
||||
obj=self.get_smart_link(), permission=permission_smart_link_edit,
|
||||
user=request.user
|
||||
)
|
||||
|
||||
@@ -323,7 +323,7 @@ class SmartLinkConditionEditView(SingleObjectEditView):
|
||||
def dispatch(self, request, *args, **kwargs):
|
||||
AccessControlList.objects.check_access(
|
||||
obj=self.get_object().smart_link,
|
||||
permissions=permission_smart_link_edit, user=request.user
|
||||
permission=permission_smart_link_edit, user=request.user
|
||||
)
|
||||
|
||||
return super(
|
||||
@@ -351,7 +351,7 @@ class SmartLinkConditionDeleteView(SingleObjectDeleteView):
|
||||
def dispatch(self, request, *args, **kwargs):
|
||||
AccessControlList.objects.check_access(
|
||||
obj=self.get_object().smart_link,
|
||||
permissions=permission_smart_link_edit, user=request.user
|
||||
permission=permission_smart_link_edit, user=request.user
|
||||
)
|
||||
|
||||
return super(
|
||||
|
||||
@@ -18,12 +18,13 @@ from .permissions import (
|
||||
)
|
||||
|
||||
link_document_send = Link(
|
||||
args='resolved_object.pk', icon_class=icon_document_send,
|
||||
icon_class=icon_document_send, kwargs={'document_id': 'resolved_object.pk'},
|
||||
permission=permission_mailing_send_document, text=_('Email document'),
|
||||
view='mailer:document_send'
|
||||
)
|
||||
link_document_send_link = Link(
|
||||
args='resolved_object.pk', icon_class=icon_document_send_link,
|
||||
icon_class=icon_document_send_link,
|
||||
kwargs={'document_id': 'resolved_object.pk'},
|
||||
permission=permission_mailing_link, text=_('Email link'),
|
||||
view='mailer:document_send_link'
|
||||
)
|
||||
@@ -46,17 +47,18 @@ link_user_mailer_create = Link(
|
||||
view='mailer:user_mailer_backend_selection'
|
||||
)
|
||||
link_user_mailer_delete = Link(
|
||||
args='resolved_object.pk', icon_class=icon_user_mailer_delete,
|
||||
icon_class=icon_user_mailer_delete,
|
||||
kwargs={'mailer_id': 'resolved_object.pk'},
|
||||
permission=permission_user_mailer_delete, tags='dangerous',
|
||||
text=_('Delete'), view='mailer:user_mailer_delete'
|
||||
)
|
||||
link_user_mailer_edit = Link(
|
||||
args='object.pk', icon_class=icon_user_mailer_edit,
|
||||
icon_class=icon_user_mailer_edit, kwargs={'mailer_id': 'object.pk'},
|
||||
permission=permission_user_mailer_edit, text=_('Edit'),
|
||||
view='mailer:user_mailer_edit'
|
||||
)
|
||||
link_user_mailer_log_list = Link(
|
||||
args='object.pk', permission=permission_user_mailer_view,
|
||||
permission=permission_user_mailer_view, kwargs={'mailer_id': 'object.pk'},
|
||||
text=_('Log'), view='mailer:user_mailer_log'
|
||||
)
|
||||
link_user_mailer_list = Link(
|
||||
@@ -70,7 +72,7 @@ link_user_mailer_setup = Link(
|
||||
text=_('Mailing profiles'), view='mailer:user_mailer_list'
|
||||
)
|
||||
link_user_mailer_test = Link(
|
||||
args='object.pk', icon_class=icon_user_mailer_test,
|
||||
icon_class=icon_user_mailer_test, kwargs={'mailer_id': 'object.pk'},
|
||||
permission=permission_user_mailer_use, text=_('Test'),
|
||||
view='mailer:user_mailer_test'
|
||||
)
|
||||
|
||||
@@ -37,13 +37,13 @@ class MailerTestMixin(object):
|
||||
def _request_user_mailer_delete(self):
|
||||
return self.post(
|
||||
viewname='mailer:user_mailer_delete',
|
||||
kwargs={'mailer_pk': self.user_mailer.pk}
|
||||
kwargs={'mailer_id': self.user_mailer.pk}
|
||||
)
|
||||
|
||||
def _request_user_mailer_edit(self):
|
||||
return self.post(
|
||||
viewname='mailer:user_mailer_edit',
|
||||
kwargs={'mailer_pk': self.user_mailer.pk},
|
||||
kwargs={'mailer_id': self.user_mailer.pk},
|
||||
data={
|
||||
'label': TEST_USER_MAILER_LABEL_EDITED
|
||||
}
|
||||
@@ -55,7 +55,7 @@ class MailerTestMixin(object):
|
||||
def _request_user_mailer_test(self):
|
||||
return self.post(
|
||||
viewname='mailer:user_mailer_test',
|
||||
kwargs={'mailer_pk': self.user_mailer.pk},
|
||||
kwargs={'mailer_id': self.user_mailer.pk},
|
||||
data={
|
||||
'email': getattr(
|
||||
self, 'test_email_address', TEST_EMAIL_ADDRESS
|
||||
|
||||
@@ -190,7 +190,7 @@ class DocumentViewsTestCase(MailerTestMixin, GenericDocumentViewTestCase):
|
||||
def _request_document_link_send(self):
|
||||
return self.post(
|
||||
viewname='mailer:document_send_link',
|
||||
kwargs={'document_pk': self.document.pk},
|
||||
kwargs={'document_id': self.document.pk},
|
||||
data={
|
||||
'email': getattr(
|
||||
self, 'test_email_address', TEST_EMAIL_ADDRESS
|
||||
@@ -202,7 +202,7 @@ class DocumentViewsTestCase(MailerTestMixin, GenericDocumentViewTestCase):
|
||||
def _request_document_send(self):
|
||||
return self.post(
|
||||
viewname='mailer:document_send',
|
||||
kwargs={'document_pk': self.document.pk},
|
||||
kwargs={'document_id': self.document.pk},
|
||||
data={
|
||||
'email': getattr(
|
||||
self, 'test_email_address', TEST_EMAIL_ADDRESS
|
||||
|
||||
@@ -11,7 +11,7 @@ from .views import (
|
||||
|
||||
urlpatterns = [
|
||||
url(
|
||||
regex=r'^documents/(?P<document_pk>\d+)/send/link/$',
|
||||
regex=r'^documents/(?P<document_id>\d+)/send/link/$',
|
||||
name='document_send_link', view=MailDocumentLinkView.as_view()
|
||||
),
|
||||
url(
|
||||
@@ -20,7 +20,7 @@ urlpatterns = [
|
||||
view=MailDocumentLinkView.as_view()
|
||||
),
|
||||
url(
|
||||
regex=r'^documents/(?P<document_pk>\d+)/send/$', name='document_send',
|
||||
regex=r'^documents/(?P<document_id>\d+)/send/$', name='document_send',
|
||||
view=MailDocumentView.as_view()
|
||||
),
|
||||
url(
|
||||
@@ -41,19 +41,19 @@ urlpatterns = [
|
||||
name='user_mailer_create', view=UserMailingCreateView.as_view()
|
||||
),
|
||||
url(
|
||||
regex=r'^user_mailers/(?P<mailer_pk>\d+)/delete/$',
|
||||
regex=r'^user_mailers/(?P<mailer_id>\d+)/delete/$',
|
||||
name='user_mailer_delete', view=UserMailingDeleteView.as_view()
|
||||
),
|
||||
url(
|
||||
regex=r'^user_mailers/(?P<mailer_pk>\d+)/edit/$',
|
||||
regex=r'^user_mailers/(?P<mailer_id>\d+)/edit/$',
|
||||
name='user_mailer_edit', view=UserMailingEditView.as_view()
|
||||
),
|
||||
url(
|
||||
regex=r'^user_mailers/(?P<mailer_pk>\d+)/log/$',
|
||||
regex=r'^user_mailers/(?P<mailer_id>\d+)/log/$',
|
||||
name='user_mailer_log', view=UserMailerLogEntryListView.as_view()
|
||||
),
|
||||
url(
|
||||
regex=r'^user_mailers/(?P<mailer_pk>\d+)/test/$',
|
||||
regex=r'^user_mailers/(?P<mailer_id>\d+)/test/$',
|
||||
name='user_mailer_test', view=UserMailerTestView.as_view()
|
||||
),
|
||||
url(
|
||||
|
||||
@@ -47,7 +47,7 @@ class MailDocumentView(MultipleObjectFormActionView):
|
||||
form_class = DocumentMailForm
|
||||
model = Document
|
||||
object_permission = permission_mailing_send_document
|
||||
pk_url_kwarg = 'document_pk'
|
||||
pk_url_kwarg = 'document_id'
|
||||
success_message = _('%(count)d document queued for email delivery')
|
||||
success_message_plural = _(
|
||||
'%(count)d documents queued for email delivery'
|
||||
@@ -63,9 +63,9 @@ class MailDocumentView(MultipleObjectFormActionView):
|
||||
'submit_icon_class': icon_mail_document_submit,
|
||||
'submit_label': _('Send'),
|
||||
'title': ungettext(
|
||||
self.title,
|
||||
self.title_plural,
|
||||
queryset.count()
|
||||
singular=self.title,
|
||||
plural=self.title_plural,
|
||||
number=queryset.count()
|
||||
)
|
||||
}
|
||||
|
||||
@@ -87,8 +87,8 @@ class MailDocumentView(MultipleObjectFormActionView):
|
||||
|
||||
def object_action(self, form, instance):
|
||||
AccessControlList.objects.check_access(
|
||||
permissions=permission_user_mailer_use, user=self.request.user,
|
||||
obj=form.cleaned_data['user_mailer']
|
||||
obj=form.cleaned_data['user_mailer'],
|
||||
permission=permission_user_mailer_use, user=self.request.user
|
||||
)
|
||||
|
||||
task_send_document.apply_async(
|
||||
@@ -126,7 +126,7 @@ class UserMailerBackendSelectionView(FormView):
|
||||
def form_valid(self, form):
|
||||
backend = form.cleaned_data['backend']
|
||||
return HttpResponseRedirect(
|
||||
reverse(
|
||||
redirect_to=reverse(
|
||||
viewname='mailer:user_mailer_create', kwargs={
|
||||
'class_path': backend
|
||||
}
|
||||
@@ -172,7 +172,7 @@ class UserMailingCreateView(SingleObjectDynamicFormCreateView):
|
||||
class UserMailingDeleteView(SingleObjectDeleteView):
|
||||
model = UserMailer
|
||||
object_permission = permission_user_mailer_delete
|
||||
pk_url_kwarg = 'mailer_pk'
|
||||
pk_url_kwarg = 'mailer_id'
|
||||
post_action_redirect = reverse_lazy(viewname='mailer:user_mailer_list')
|
||||
|
||||
def get_extra_context(self):
|
||||
@@ -185,7 +185,7 @@ class UserMailingEditView(SingleObjectDynamicFormEditView):
|
||||
form_class = UserMailerDynamicForm
|
||||
model = UserMailer
|
||||
object_permission = permission_user_mailer_edit
|
||||
pk_url_kwarg = 'mailer_pk'
|
||||
pk_url_kwarg = 'mailer_id'
|
||||
|
||||
def get_extra_context(self):
|
||||
return {
|
||||
@@ -217,11 +217,11 @@ class UserMailerLogEntryListView(SingleObjectListView):
|
||||
) % self.get_user_mailer(),
|
||||
}
|
||||
|
||||
def get_object_list(self):
|
||||
def get_source_queryset(self):
|
||||
return self.get_user_mailer().error_log.all()
|
||||
|
||||
def get_user_mailer(self):
|
||||
return get_object_or_404(klass=UserMailer, pk=self.kwargs['mailer_pk'])
|
||||
return get_object_or_404(klass=UserMailer, pk=self.kwargs['mailer_id'])
|
||||
|
||||
|
||||
class UserMailerListView(SingleObjectListView):
|
||||
@@ -260,15 +260,15 @@ class UserMailerTestView(FormView):
|
||||
obj.test(to=form.cleaned_data['email'])
|
||||
except Exception as exception:
|
||||
messages.error(
|
||||
request=self.request, message=_(
|
||||
message=_(
|
||||
'Error sending test message; %s.'
|
||||
) % exception
|
||||
) % exception, request=self.request
|
||||
)
|
||||
else:
|
||||
messages.success(
|
||||
request=self.request, message=_(
|
||||
message=_(
|
||||
'Successfully sent test message.'
|
||||
)
|
||||
), request=self.request
|
||||
)
|
||||
|
||||
return super(UserMailerTestView, self).form_valid(form=form)
|
||||
@@ -283,7 +283,7 @@ class UserMailerTestView(FormView):
|
||||
|
||||
def get_object(self):
|
||||
return get_object_or_404(
|
||||
klass=self.get_queryset(), pk=self.kwargs['mailer_pk']
|
||||
klass=self.get_queryset(), pk=self.kwargs['mailer_id']
|
||||
)
|
||||
|
||||
def get_queryset(self):
|
||||
|
||||
@@ -17,8 +17,6 @@ from .mixins import MetadataTestsMixin
|
||||
|
||||
class MetadataTypeEventsTestCase(MetadataTestsMixin, GenericDocumentViewTestCase):
|
||||
def test_metadata_type_create_event_no_permissions(self):
|
||||
self.login_user()
|
||||
|
||||
Action.objects.all().delete()
|
||||
|
||||
response = self._request_metadata_type_create_view()
|
||||
@@ -26,8 +24,6 @@ class MetadataTypeEventsTestCase(MetadataTestsMixin, GenericDocumentViewTestCase
|
||||
self.assertEqual(Action.objects.count(), 0)
|
||||
|
||||
def test_metadata_type_create_event_with_permissions(self):
|
||||
self.login_user()
|
||||
|
||||
Action.objects.all().delete()
|
||||
|
||||
self.grant_permission(permission=permission_metadata_type_create)
|
||||
@@ -47,19 +43,15 @@ class MetadataTypeEventsTestCase(MetadataTestsMixin, GenericDocumentViewTestCase
|
||||
def test_metadata_type_edit_event_no_permissions(self):
|
||||
self._create_metadata_type()
|
||||
|
||||
self.login_user()
|
||||
|
||||
Action.objects.all().delete()
|
||||
|
||||
response = self._request_metadata_type_edit_view()
|
||||
self.assertEqual(response.status_code, 403)
|
||||
self.assertEqual(response.status_code, 404)
|
||||
self.assertEqual(Action.objects.count(), 0)
|
||||
|
||||
def test_metadata_type_edit_event_with_access(self):
|
||||
self._create_metadata_type()
|
||||
|
||||
self.login_user()
|
||||
|
||||
Action.objects.all().delete()
|
||||
|
||||
self.grant_access(
|
||||
|
||||
@@ -163,7 +163,7 @@ class DocumentMetadataTestCase(MetadataTestsMixin, GenericDocumentViewTestCase):
|
||||
)
|
||||
|
||||
response = self._request_post_document_document_metadata_remove_view()
|
||||
self.assertEqual(response.status_code, 302)
|
||||
self.assertEqual(response.status_code, 404)
|
||||
|
||||
self.assertEqual(len(self.document.metadata.all()), 1)
|
||||
|
||||
|
||||
@@ -49,10 +49,10 @@ class PermissionsViewsTestCase(GroupTestMixin, RoleTestMixin, GenericViewTestCas
|
||||
kwargs={'role_id': self.test_role.pk}
|
||||
)
|
||||
|
||||
def test_role_delete_view_no_access(self):
|
||||
def test_role_delete_view_no_permission(self):
|
||||
self._create_test_role()
|
||||
response = self._request_role_delete_view()
|
||||
self.assertEqual(response.status_code, 403)
|
||||
self.assertEqual(response.status_code, 404)
|
||||
self.assertEqual(Role.objects.count(), 2)
|
||||
self.assertTrue(
|
||||
TEST_ROLE_LABEL in Role.objects.values_list('label', flat=True)
|
||||
@@ -76,11 +76,11 @@ class PermissionsViewsTestCase(GroupTestMixin, RoleTestMixin, GenericViewTestCas
|
||||
}
|
||||
)
|
||||
|
||||
def test_role_edit_view_no_access(self):
|
||||
def test_role_edit_view_no_permission(self):
|
||||
self._create_test_role()
|
||||
response = self._request_role_edit_view()
|
||||
|
||||
self.assertEqual(response.status_code, 403)
|
||||
self.assertEqual(response.status_code, 404)
|
||||
|
||||
self.test_role.refresh_from_db()
|
||||
self.assertEqual(Role.objects.count(), 2)
|
||||
@@ -100,7 +100,7 @@ class PermissionsViewsTestCase(GroupTestMixin, RoleTestMixin, GenericViewTestCas
|
||||
def _request_role_list_view(self):
|
||||
return self.get(viewname='permissions:role_list')
|
||||
|
||||
def test_role_list_view_no_access(self):
|
||||
def test_role_list_view_no_permission(self):
|
||||
self._create_test_role()
|
||||
response = self._request_role_list_view()
|
||||
self.assertEqual(response.status_code, 200)
|
||||
@@ -141,7 +141,7 @@ class PermissionsViewsTestCase(GroupTestMixin, RoleTestMixin, GenericViewTestCas
|
||||
kwargs={'role_id': self.test_role.pk}
|
||||
)
|
||||
|
||||
def test_role_groups_view_no_access(self):
|
||||
def test_role_groups_view_no_permission(self):
|
||||
self._create_test_role()
|
||||
response = self._request_role_groups_view()
|
||||
self.assertEqual(response.status_code, 403)
|
||||
@@ -158,7 +158,7 @@ class PermissionsViewsTestCase(GroupTestMixin, RoleTestMixin, GenericViewTestCas
|
||||
kwargs={'group_id': self.test_group.pk}
|
||||
)
|
||||
|
||||
def test_group_roles_view_no_access(self):
|
||||
def test_group_roles_view_no_permission(self):
|
||||
self._create_test_group()
|
||||
response = self._request_group_roles_view()
|
||||
self.assertEqual(response.status_code, 403)
|
||||
|
||||
@@ -146,7 +146,7 @@ class SourceEditView(SingleObjectEditView):
|
||||
|
||||
|
||||
class SourceListView(SingleObjectListView):
|
||||
queryset = Source.objects.select_subclasses()
|
||||
source_queryset = Source.objects.select_subclasses()
|
||||
view_permission = permission_sources_view
|
||||
|
||||
def get_extra_context(self):
|
||||
@@ -201,14 +201,14 @@ class SourceLogView(SingleObjectListView):
|
||||
'title': _('Log entries for source: %s') % self.get_source(),
|
||||
}
|
||||
|
||||
def get_object_list(self):
|
||||
return self.get_source().logs.all()
|
||||
|
||||
def get_source(self):
|
||||
return get_object_or_404(
|
||||
klass=Source.objects.select_subclasses(), pk=self.kwargs['source_id']
|
||||
)
|
||||
|
||||
def get_source_queryset(self):
|
||||
return self.get_source().logs.all()
|
||||
|
||||
|
||||
class StagingFileDeleteView(ExternalObjectMixin, SingleObjectDeleteView):
|
||||
external_object_class = StagingFolderSource
|
||||
|
||||
@@ -55,7 +55,7 @@ class Tag(models.Model):
|
||||
|
||||
def get_absolute_url(self):
|
||||
return reverse(
|
||||
viewname='tags:tag_tagged_item_list', kwargs={
|
||||
viewname='tags:tag_document_list', kwargs={
|
||||
'tag_id': self.pk
|
||||
}
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user