-
Notifications
You must be signed in to change notification settings - Fork 34
feat: Setting to block deletion of public versions #501
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: master
Are you sure you want to change the base?
Changes from 6 commits
b8b48e5
b086d4c
f1fd556
1a77ee5
a5a03c3
5c5c907
7c3416a
e552e8e
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -8,7 +8,7 @@ | |
|
|
||
|
|
||
| class DeletionTestCase(CMSTestCase): | ||
| @override_settings(DJANGOCMS_VERSIONING_ALLOW_DELETING_VERSIONS=False) | ||
| @override_settings(DJANGOCMS_VERSIONING_ALLOW_DELETING_VERSIONS=constants.DELETE_NONE) | ||
| def test_deletion_not_possible(self): | ||
| # Since djangocms_versionings.models stores the setting, we need to update that copy | ||
| versioning_models.ALLOW_DELETING_VERSIONS = settings.DJANGOCMS_VERSIONING_ALLOW_DELETING_VERSIONS | ||
|
|
@@ -32,7 +32,7 @@ def test_deletion_not_possible(self): | |
| self.assertRaises(models.deletion.ProtectedError, | ||
| versioning_models.Version.objects.get(pk=pk1).content.delete) | ||
|
|
||
| @override_settings(DJANGOCMS_VERSIONING_ALLOW_DELETING_VERSIONS=True) | ||
| @override_settings(DJANGOCMS_VERSIONING_ALLOW_DELETING_VERSIONS=constants.DELETE_ANY) | ||
| def test_deletion_possible(self): | ||
| # Since djangocms_versionings.models stores the setting, we need to update that copy | ||
| versioning_models.ALLOW_DELETING_VERSIONS = settings.DJANGOCMS_VERSIONING_ALLOW_DELETING_VERSIONS | ||
|
|
@@ -55,3 +55,52 @@ def test_deletion_possible(self): | |
| # try deleting and see if error is raised | ||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. issue (testing): This test deletes a published version while the setting name and PR description suggest only non-public deletions should be allowed. In |
||
| versioning_models.Version.objects.get(pk=pk1).content.delete() | ||
| self.assertIsNone(versioning_models.Version.objects.get(pk=version2.pk).source) | ||
|
|
||
| @override_settings(DJANGOCMS_VERSIONING_ALLOW_DELETING_VERSIONS=constants.DELETE_NON_PUBLIC_ONLY) | ||
| def test_deletion_non_public_possible(self): | ||
| # Since djangocms_versionings.models stores the setting, we need to update that copy | ||
| versioning_models.ALLOW_DELETING_VERSIONS = settings.DJANGOCMS_VERSIONING_ALLOW_DELETING_VERSIONS | ||
| poll = factories.PollFactory() | ||
| version1 = factories.PollVersionFactory( | ||
| content__poll=poll, | ||
| content__language="en", | ||
| ) | ||
| pk1 = version1.pk | ||
| # Now publish and then edit redirect to create a draft on top of published version | ||
| version1.publish(user=self.get_superuser()) | ||
| self.assertEqual(versioning_models.Version.objects.get(pk=pk1).state, constants.PUBLISHED) | ||
|
|
||
| version2 = version1.copy(created_by=self.get_superuser()) | ||
| version2.save() | ||
|
|
||
| # Check of source field is set | ||
| self.assertIsNotNone(version2.source) | ||
|
|
||
| # try deleting and see if error is raised | ||
| versioning_models.Version.objects.get(pk=pk1).content.delete() | ||
| self.assertIsNone(versioning_models.Version.objects.get(pk=version2.pk).source) | ||
|
|
||
| @override_settings(DJANGOCMS_VERSIONING_ALLOW_DELETING_VERSIONS=constants.DELETE_NON_PUBLIC_ONLY) | ||
| def test_deletion_public_not_possible(self): | ||
| # Since djangocms_versionings.models stores the setting, we need to update that copy | ||
| versioning_models.ALLOW_DELETING_VERSIONS = settings.DJANGOCMS_VERSIONING_ALLOW_DELETING_VERSIONS | ||
| poll = factories.PollFactory() | ||
| version1 = factories.PollVersionFactory( | ||
| content__poll=poll, | ||
| content__language="en", | ||
| ) | ||
| pk1 = version1.pk | ||
| # Now publish and then edit redirect to create a draft on top of published version | ||
| version1.publish(user=self.get_superuser()) | ||
| self.assertEqual(versioning_models.Version.objects.get(pk=pk1).state, constants.PUBLISHED) | ||
|
|
||
| version2 = version1.copy(created_by=self.get_superuser()) | ||
| version2.save() | ||
| version2.publish(user=self.get_superuser()) | ||
|
|
||
| # Check of source field is set | ||
| self.assertIsNotNone(version2.source) | ||
|
|
||
| # try deleting and see if error is raised | ||
| self.assertRaises(models.deletion.ProtectedError, | ||
| versioning_models.Version.objects.get(pk=pk1).content.delete) | ||
Uh oh!
There was an error while loading. Please reload this page.