Skip to content

Commit eeb8072

Browse files
authored
djangocms-versioning compatibility - Initial Model and cms_config implementation (#75)
1 parent a589748 commit eeb8072

File tree

8 files changed

+79
-20
lines changed

8 files changed

+79
-20
lines changed

.github/workflows/test.yml

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,10 @@ jobs:
88
strategy:
99
fail-fast: false
1010
matrix:
11-
python-version: [ 3.7, 3.8, 3.9, ] # latest release minus two
11+
python-version: [ 3.6, 3.7, ]
1212
requirements-file: [
13-
dj22_cms37.txt,
14-
dj22_cms38.txt,
15-
dj30_cms37.txt,
16-
dj30_cms38.txt,
17-
dj31_cms38.txt,
13+
dj11_cms40.txt,
14+
dj22_cms40.txt,
1815
]
1916
os: [
2017
ubuntu-20.04,

djangocms_snippet/cms_config.py

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
from django.conf import settings
2+
3+
from cms.app_base import CMSAppConfig
4+
5+
from .models import Snippet
6+
7+
8+
class SnippetCMSAppConfig(CMSAppConfig):
9+
djangocms_versioning_enabled = getattr(
10+
settings, 'DJANGOCMS_SNIPPET_VERSIONING_ENABLED', False
11+
)
12+
13+
if djangocms_versioning_enabled:
14+
from djangocms_versioning.datastructures import (
15+
VersionableItem, default_copy,
16+
)
17+
18+
versioning = [
19+
VersionableItem(
20+
content_model=Snippet,
21+
grouper_field_name="snippet_grouper",
22+
copy_function=default_copy,
23+
)
24+
]
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
# Generated by Django 2.2.24 on 2021-08-11 09:42
2+
3+
import django.db.models.deletion
4+
from django.db import migrations, models
5+
6+
7+
class Migration(migrations.Migration):
8+
9+
dependencies = [
10+
('djangocms_snippet', '0008_auto_change_name'),
11+
]
12+
13+
operations = [
14+
migrations.CreateModel(
15+
name='SnippetGrouper',
16+
fields=[
17+
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
18+
],
19+
),
20+
migrations.AddField(
21+
model_name='snippet',
22+
name='snippet_grouper',
23+
field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.PROTECT, to='djangocms_snippet.SnippetGrouper'),
24+
),
25+
]

djangocms_snippet/models.py

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,10 @@
99
SEARCH_ENABLED = getattr(settings, 'DJANGOCMS_SNIPPET_SEARCH', False)
1010

1111

12+
class SnippetGrouper(models.Model):
13+
pass
14+
15+
1216
# Stores the actual data
1317
class Snippet(models.Model):
1418
"""
@@ -19,6 +23,11 @@ class Snippet(models.Model):
1923
unique=True,
2024
max_length=255,
2125
)
26+
snippet_grouper = models.ForeignKey(
27+
SnippetGrouper,
28+
on_delete=models.PROTECT,
29+
null=True,
30+
)
2231
html = models.TextField(
2332
verbose_name=_('HTML'),
2433
blank=True,
@@ -62,8 +71,7 @@ class SnippetPtr(CMSPlugin):
6271
parent_link=True,
6372
on_delete=models.CASCADE,
6473
)
65-
66-
snippet = models.ForeignKey(Snippet, on_delete=models.CASCADE,)
74+
snippet = models.ForeignKey(Snippet, on_delete=models.CASCADE)
6775

6876
search_fields = ['snippet__html'] if SEARCH_ENABLED else []
6977

setup.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55

66

77
REQUIREMENTS = [
8-
'django-cms>=3.7',
8+
'django-cms',
99
'django-treebeard>=4.3,<4.5',
1010
]
1111

tests/requirements/dj11_cms40.txt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
-r base.txt
2+
3+
https://github.com/django-cms/django-cms/tarball/release/4.0.x#egg=django-cms
4+
https://github.com/divio/djangocms-versioning/tarball/master/#egg=djangocms-versioning

tests/requirements/dj22_cms40.txt

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
-r base.txt
2+
3+
Django>=2.2,<3.0
4+
https://github.com/django-cms/django-cms/tarball/release/4.0.x#egg=django-cms
5+
https://github.com/divio/djangocms-versioning/tarball/master/#egg=djangocms-versioning

tests/test_plugins.py

Lines changed: 7 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -13,14 +13,13 @@ def setUp(self):
1313
template="page.html",
1414
language=self.language,
1515
)
16-
self.home.publish(self.language)
1716
self.page = create_page(
1817
title="help",
1918
template="page.html",
2019
language=self.language,
2120
)
22-
self.page.publish(self.language)
23-
self.placeholder = self.page.placeholders.get(slot="content")
21+
self.pagecontent = self.page.pagecontent_set.first()
22+
self.placeholder = self.pagecontent.placeholders.get(slot="content")
2423
self.superuser = self.get_superuser()
2524

2625
def tearDown(self):
@@ -36,12 +35,12 @@ def test_html_rendering(self):
3635
slug="plugin_snippet",
3736
)
3837
plugin = add_plugin(
39-
self.page.placeholders.get(slot="content"),
38+
self.pagecontent.placeholders.get(slot="content"),
4039
"SnippetPlugin",
4140
self.language,
4241
snippet=snippet,
4342
)
44-
self.page.publish(self.language)
43+
4544
self.assertEqual(plugin.snippet.name, "plugin_snippet")
4645
self.assertEqual(plugin.snippet.html, "<p>Hello World</p>")
4746
self.assertEqual(plugin.snippet.slug, "plugin_snippet")
@@ -59,12 +58,11 @@ def test_failing_html_rendering(self):
5958
slug="plugin_snippet",
6059
)
6160
add_plugin(
62-
self.page.placeholders.get(slot="content"),
61+
self.pagecontent.placeholders.get(slot="content"),
6362
"SnippetPlugin",
6463
self.language,
6564
snippet=snippet,
6665
)
67-
self.page.publish(self.language)
6866

6967
with self.login_user_context(self.superuser):
7068
response = self.client.get(request_url)
@@ -82,12 +80,11 @@ def test_template_rendering(self):
8280
)
8381
snippet.save()
8482
plugin = add_plugin(
85-
self.page.placeholders.get(slot="content"),
83+
self.pagecontent.placeholders.get(slot="content"),
8684
"SnippetPlugin",
8785
self.language,
8886
snippet=snippet,
8987
)
90-
self.page.publish(self.language)
9188
self.assertEqual(plugin.snippet.name, "plugin_snippet")
9289
self.assertEqual(plugin.snippet.slug, "plugin_snippet")
9390

@@ -109,12 +106,11 @@ def test_failing_template_rendering(self):
109106
)
110107
snippet.save()
111108
add_plugin(
112-
self.page.placeholders.get(slot="content"),
109+
self.pagecontent.placeholders.get(slot="content"),
113110
"SnippetPlugin",
114111
self.language,
115112
snippet=snippet,
116113
)
117-
self.page.publish(self.language)
118114

119115
with self.login_user_context(self.superuser):
120116
response = self.client.get(request_url)

0 commit comments

Comments
 (0)