diff --git a/mayan/apps/sources/links.py b/mayan/apps/sources/links.py index 66b71d2ac8..bf206ec3b4 100644 --- a/mayan/apps/sources/links.py +++ b/mayan/apps/sources/links.py @@ -19,7 +19,8 @@ from .literals import ( ) from .permissions import ( permission_sources_create, permission_sources_delete, - permission_sources_edit, permission_sources_view + permission_sources_edit, permission_sources_view, + permission_staging_file_delete ) @@ -113,9 +114,9 @@ link_source_logs = Link( ) link_staging_file_delete = Link( keep_query=True, kwargs={ - 'staging_file_pk': 'source.pk', + 'staging_folder_id': 'source.pk', 'encoded_filename': 'object.encoded_filename' - }, permissions=(permission_document_new_version, permission_document_create), + }, permissions=(permission_staging_file_delete,), tags='dangerous', text=_('Delete'), view='sources:staging_file_delete' ) link_upload_version = Link( diff --git a/mayan/apps/sources/tests/test_views.py b/mayan/apps/sources/tests/test_views.py index fbaa09fc21..7d02866212 100644 --- a/mayan/apps/sources/tests/test_views.py +++ b/mayan/apps/sources/tests/test_views.py @@ -200,7 +200,6 @@ class StagingFolderViewTestCase(GenericViewTestCase): self.temporary_directory = mkdtemp() shutil.copy(TEST_SMALL_DOCUMENT_PATH, self.temporary_directory) self.filename = os.path.basename(TEST_SMALL_DOCUMENT_PATH) - self.login_user() def tearDown(self): fs_cleanup(self.temporary_directory) @@ -233,7 +232,7 @@ class StagingFolderViewTestCase(GenericViewTestCase): response = self._request_staging_file_delete_view( staging_file=staging_file ) - self.assertEqual(response.status_code, 403) + self.assertEqual(response.status_code, 404) self.assertEqual(len(list(self.staging_folder.get_files())), 1) def test_staging_folder_delete_with_permission(self): @@ -252,10 +251,6 @@ class StagingFolderViewTestCase(GenericViewTestCase): class SourcesViewsTestCase(GenericViewTestCase): - def setUp(self): - super(SourcesViewsTestCase, self).setUp() - self.login_user() - def _create_web_source(self): self.source = WebFormSource.objects.create( enabled=True, label=TEST_SOURCE_LABEL, diff --git a/mayan/apps/sources/views.py b/mayan/apps/sources/views.py index a77ca7f398..96778a0dbe 100644 --- a/mayan/apps/sources/views.py +++ b/mayan/apps/sources/views.py @@ -210,9 +210,10 @@ class SourceLogView(SingleObjectListView): ) -class StagingFileDeleteView(SingleObjectDeleteView): - object_permission = permission_staging_file_delete - object_permission_related = 'staging_folder' +class StagingFileDeleteView(ExternalObjectMixin, SingleObjectDeleteView): + external_object_class = StagingFolderSource + external_object_pk_url_kwarg = 'staging_folder_id' + external_object_permission = permission_staging_file_delete def get_extra_context(self): return { @@ -228,9 +229,7 @@ class StagingFileDeleteView(SingleObjectDeleteView): ) def get_source(self): - return get_object_or_404( - klass=StagingFolderSource, pk=self.kwargs['staging_folder_id'] - ) + return self.get_external_object() class UploadBaseView(ListModeMixin, MultiFormView):