diff --git a/djangocms_snippet/cms_config.py b/djangocms_snippet/cms_config.py index cf87874d..c23f2cd1 100644 --- a/djangocms_snippet/cms_config.py +++ b/djangocms_snippet/cms_config.py @@ -2,13 +2,27 @@ from cms.app_base import CMSAppConfig -from .models import Snippet +from djangocms_snippet.models import Snippet + + +try: + from djangocms_moderation import __version__ # NOQA + + djangocms_moderation_installed = True +except ImportError: + djangocms_moderation_installed = False class SnippetCMSAppConfig(CMSAppConfig): djangocms_versioning_enabled = getattr( settings, 'DJANGOCMS_SNIPPET_VERSIONING_ENABLED', False ) + djangocms_moderation_enabled = getattr( + settings, 'DJANGOCMS_SNIPPET_MODERATION_ENABLED', False + ) + + if djangocms_moderation_enabled and djangocms_moderation_installed: + moderated_models = [Snippet] if djangocms_versioning_enabled: from djangocms_versioning.datastructures import ( diff --git a/djangocms_snippet/migrations/0013_auto_20210915_0751.py b/djangocms_snippet/migrations/0013_auto_20210915_0751.py new file mode 100644 index 00000000..de813001 --- /dev/null +++ b/djangocms_snippet/migrations/0013_auto_20210915_0751.py @@ -0,0 +1,23 @@ +# Generated by Django 2.2.24 on 2021-09-15 07:51 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('djangocms_snippet', '0012_auto_20210915_0721'), + ] + + operations = [ + migrations.AlterField( + model_name='snippet', + name='name', + field=models.CharField(max_length=255, verbose_name='Name'), + ), + migrations.AlterField( + model_name='snippet', + name='slug', + field=models.SlugField(default='', max_length=255, verbose_name='Slug'), + ), + ] diff --git a/djangocms_snippet/models.py b/djangocms_snippet/models.py index d7094b10..c5b0a34e 100644 --- a/djangocms_snippet/models.py +++ b/djangocms_snippet/models.py @@ -21,7 +21,6 @@ class Snippet(models.Model): name = models.CharField( verbose_name=_('Name'), max_length=255, - unique=True, ) snippet_grouper = models.ForeignKey( SnippetGrouper, @@ -46,7 +45,6 @@ class Snippet(models.Model): blank=False, default='', max_length=255, - unique=True, ) def __str__(self): diff --git a/tests/settings.py b/tests/settings.py index 23c4edd3..67f86952 100644 --- a/tests/settings.py +++ b/tests/settings.py @@ -14,6 +14,7 @@ 'LANGUAGE_CODE': 'en', 'ALLOWED_HOSTS': ['localhost'], 'DJANGOCMS_SNIPPET_VERSIONING_ENABLED': True, + 'DJANGOCMS_SNIPPET_MODERATION_ENABLED': True, } diff --git a/tests/test_config.py b/tests/test_config.py new file mode 100644 index 00000000..9f93e773 --- /dev/null +++ b/tests/test_config.py @@ -0,0 +1,30 @@ +from django.apps import apps + +from cms.test_utils.testcases import CMSTestCase + +from djangocms_snippet.models import Snippet, SnippetGrouper + +from .utils.factories import SnippetWithVersionFactory + + +class VersioningConfigTestCase(CMSTestCase): + + def test_snippet_copy_method(self): + """ + App should use the default copy method, and return an identical model (apart from PK) + """ + snippet_cms_config = apps.get_app_config("djangocms_snippet").cms_config + old_snippet = SnippetWithVersionFactory( + name="snippet", + html="

Hello World

", + slug="snippet", + ) + + new_snippet = snippet_cms_config.versioning[0].copy_function(old_snippet) + + self.assertNotEqual(old_snippet, new_snippet) + self.assertEqual(old_snippet.name, new_snippet.name) + self.assertEqual(old_snippet.html, new_snippet.html) + self.assertEqual(old_snippet.snippet_grouper, new_snippet.snippet_grouper) + self.assertEqual(1, SnippetGrouper.objects.count()) + self.assertEqual(2, Snippet._base_manager.count())