From bd8d82d4e715421a2dee3f8b930085ae7f8d8bb5 Mon Sep 17 00:00:00 2001 From: Jaap Joris Vens Date: Sun, 16 Feb 2020 15:32:38 +0100 Subject: [PATCH] Another try at making both the Page and Section models be swappable (damn migrations!) --- cms/migrations/0001_initial.py | 5 ++- example/app/migrations/0001_initial.py | 59 ++++++++++++++++++++++++++ example/app/models.py | 1 - example/project/settings.py | 9 +--- 4 files changed, 63 insertions(+), 11 deletions(-) create mode 100644 example/app/migrations/0001_initial.py diff --git a/cms/migrations/0001_initial.py b/cms/migrations/0001_initial.py index f43c5e4..9fb712c 100644 --- a/cms/migrations/0001_initial.py +++ b/cms/migrations/0001_initial.py @@ -1,4 +1,4 @@ -# Generated by Django 3.0.2 on 2020-01-05 11:43 +# Generated by Django 3.0.2 on 2020-02-16 14:27 import cms.models from django.conf import settings @@ -12,6 +12,7 @@ class Migration(migrations.Migration): initial = True dependencies = [ + migrations.swappable_dependency(settings.CMS_PAGE_MODEL), ('contenttypes', '0002_remove_content_type_name'), ] @@ -21,8 +22,8 @@ class Migration(migrations.Migration): fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('number', models.PositiveIntegerField(blank=True, verbose_name='number')), - ('slug', models.SlugField(blank=True, unique=True, verbose_name='slug')), ('title', cms.models.VarCharField(verbose_name='title')), + ('slug', models.SlugField(blank=True, unique=True, verbose_name='slug')), ('menu', models.BooleanField(default=True, verbose_name='visible in menu')), ], options={ diff --git a/example/app/migrations/0001_initial.py b/example/app/migrations/0001_initial.py new file mode 100644 index 0000000..53fe120 --- /dev/null +++ b/example/app/migrations/0001_initial.py @@ -0,0 +1,59 @@ +# Generated by Django 3.0.2 on 2020-02-16 14:27 + +import cms.models +from django.conf import settings +from django.db import migrations, models +import django.db.models.deletion +import embed_video.fields + + +class Migration(migrations.Migration): + + initial = True + + dependencies = [ + ('contenttypes', '0002_remove_content_type_name'), + ] + + operations = [ + migrations.CreateModel( + name='Page', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('number', models.PositiveIntegerField(blank=True, verbose_name='number')), + ('title', cms.models.VarCharField(verbose_name='title')), + ('slug', models.SlugField(blank=True, unique=True, verbose_name='slug')), + ('menu', models.BooleanField(default=True, verbose_name='visible in menu')), + ], + options={ + 'verbose_name': 'Page', + 'verbose_name_plural': 'Pages', + 'ordering': ['number'], + 'abstract': False, + }, + bases=(cms.models.Numbered, models.Model), + ), + migrations.CreateModel( + name='Section', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('type', cms.models.VarCharField(blank=True, verbose_name='type')), + ('number', models.PositiveIntegerField(blank=True, verbose_name='number')), + ('title', cms.models.VarCharField(blank=True, verbose_name='title')), + ('content', models.TextField(blank=True, verbose_name='content')), + ('image', models.ImageField(blank=True, upload_to='', verbose_name='image')), + ('video', embed_video.fields.EmbedVideoField(blank=True, help_text='Paste a YouTube, Vimeo, or SoundCloud link', verbose_name='video')), + ('button_text', cms.models.VarCharField(blank=True, verbose_name='button text')), + ('button_link', cms.models.VarCharField(blank=True, verbose_name='button link')), + ('page', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='sections', to=settings.CMS_PAGE_MODEL, verbose_name='page')), + ('polymorphic_ctype', models.ForeignKey(editable=False, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='polymorphic_app.section_set+', to='contenttypes.ContentType')), + ], + options={ + 'verbose_name': 'section', + 'verbose_name_plural': 'sections', + 'ordering': ['number'], + 'abstract': False, + }, + bases=(cms.models.Numbered, models.Model), + ), + ] diff --git a/example/app/models.py b/example/app/models.py index 1841c3f..276d4e1 100644 --- a/example/app/models.py +++ b/example/app/models.py @@ -14,7 +14,6 @@ class Section(BaseSection): title, content, image, video, button_text, button_link ''' - color = models.PositiveIntegerField('kleur', default=1, choices=settings.SECTION_COLORS) @register_model('Tekst') class TextSection(Section): diff --git a/example/project/settings.py b/example/project/settings.py index d0d2704..b4885f0 100644 --- a/example/project/settings.py +++ b/example/project/settings.py @@ -22,10 +22,8 @@ STATIC_ROOT = '/srv/' + PROJECT_NAME + '/static' MEDIA_URL = '/media/' MEDIA_ROOT = '/srv/' + PROJECT_NAME + '/media' LOGIN_REDIRECT_URL = '/' - CMS_SECTION_MODEL = 'app.Section' -# CMS_PAGE_MODEL = 'app.Page' # https://github.com/wq/django-swappable-models/issues/18#issuecomment-514039164 - +CMS_PAGE_MODEL = 'app.Page' # https://github.com/wq/django-swappable-models/issues/18#issuecomment-514039164 MARKDOWN_EXTENSIONS = ['extra', 'smarty'] def read(file): @@ -40,11 +38,6 @@ except IOError: SECRET_KEY = ''.join(random.choice(string.printable) for x in range(50)) write(KEYFILE, SECRET_KEY) -SECTION_COLORS = [ - (1, 'Licht'), - (2, 'Donker'), -] - INSTALLED_APPS = [ 'app', 'django.contrib.admin',