From 286f66f31d6e6036c916b640a4ac7a36bc0a9986 Mon Sep 17 00:00:00 2001 From: Julian Dehm Date: Wed, 13 Mar 2024 15:32:34 +0100 Subject: [PATCH] add ckeditor iframe migrations for plans and offlineevents --- changelog/_1111.md | 4 +++ .../migrations/0011_ckeditor_iframes.py | 35 +++++++++++++++++++ .../plans/migrations/0064_ckeditor_iframes.py | 35 +++++++++++++++++++ 3 files changed, 74 insertions(+) create mode 100644 changelog/_1111.md create mode 100644 meinberlin/apps/offlineevents/migrations/0011_ckeditor_iframes.py create mode 100644 meinberlin/apps/plans/migrations/0064_ckeditor_iframes.py diff --git a/changelog/_1111.md b/changelog/_1111.md new file mode 100644 index 0000000000..f515a80a9e --- /dev/null +++ b/changelog/_1111.md @@ -0,0 +1,4 @@ +### Fixed + +- add migrations for offlineevents and plans to make existing iframes appear in + the new ckeditor5 diff --git a/meinberlin/apps/offlineevents/migrations/0011_ckeditor_iframes.py b/meinberlin/apps/offlineevents/migrations/0011_ckeditor_iframes.py new file mode 100644 index 0000000000..91ba124bc4 --- /dev/null +++ b/meinberlin/apps/offlineevents/migrations/0011_ckeditor_iframes.py @@ -0,0 +1,35 @@ +# Generated by Django 3.2.20 on 2023-11-16 11:35 + +from bs4 import BeautifulSoup +from django.db import migrations + + +def replace_iframe_with_figur(apps, schema_editor): + template = ( + '
' + ) + OfflineEvent = apps.get_model("meinberlin_offlineevents", "OfflineEvent") + for offline_event in OfflineEvent.objects.all(): + soup = BeautifulSoup(offline_event.description, "html.parser") + iframes = soup.findAll("iframe") + for iframe in iframes: + figure = BeautifulSoup( + template.format(url=iframe.attrs["src"]), "html.parser" + ) + iframe.replaceWith(figure) + if iframes: + offline_event.description = soup.prettify(formatter="html") + offline_event.save() + + +class Migration(migrations.Migration): + dependencies = [ + ("meinberlin_offlineevents", "0010_alter_offlineevent_description"), + ] + + operations = [ + migrations.RunPython( + replace_iframe_with_figur, + ), + ] diff --git a/meinberlin/apps/plans/migrations/0064_ckeditor_iframes.py b/meinberlin/apps/plans/migrations/0064_ckeditor_iframes.py new file mode 100644 index 0000000000..8027ba0385 --- /dev/null +++ b/meinberlin/apps/plans/migrations/0064_ckeditor_iframes.py @@ -0,0 +1,35 @@ +# Generated by Django 3.2.20 on 2023-11-16 11:35 + +from bs4 import BeautifulSoup +from django.db import migrations + + +def replace_iframe_with_figur(apps, schema_editor): + template = ( + '
' + ) + Plan = apps.get_model("meinberlin_plans", "Plan") + for plan in Plan.objects.all(): + soup = BeautifulSoup(plan.description, "html.parser") + iframes = soup.findAll("iframe") + for iframe in iframes: + figure = BeautifulSoup( + template.format(url=iframe.attrs["src"]), "html.parser" + ) + iframe.replaceWith(figure) + if iframes: + plan.description = soup.prettify(formatter="html") + plan.save() + + +class Migration(migrations.Migration): + dependencies = [ + ("meinberlin_plans", "0063_alter_plan_description"), + ] + + operations = [ + migrations.RunPython( + replace_iframe_with_figur, + ), + ]