From b7f1d28d81cd464fe88e5e51f63a16466e5a355c Mon Sep 17 00:00:00 2001 From: Gunther Weissenbaeck Date: Sun, 8 Oct 2023 11:20:02 +0200 Subject: [PATCH] Fix CKEditor in Production Fixes #60 --- .../0002_alter_birdstatus_description.py | 19 +++++++++++++++++ app/bird/models.py | 6 +++--- app/core/settings.py | 21 ++++++++++++++----- app/requirements.txt | 2 +- 4 files changed, 39 insertions(+), 9 deletions(-) create mode 100644 app/bird/migrations/0002_alter_birdstatus_description.py diff --git a/app/bird/migrations/0002_alter_birdstatus_description.py b/app/bird/migrations/0002_alter_birdstatus_description.py new file mode 100644 index 0000000..72a671d --- /dev/null +++ b/app/bird/migrations/0002_alter_birdstatus_description.py @@ -0,0 +1,19 @@ +# Generated by Django 4.2.6 on 2023-10-08 09:07 + +import ckeditor.fields +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('bird', '0001_initial'), + ] + + operations = [ + migrations.AlterField( + model_name='birdstatus', + name='description', + field=ckeditor.fields.RichTextField(verbose_name='Erläuterungen'), + ), + ] diff --git a/app/bird/models.py b/app/bird/models.py index 6d49b24..e3c7622 100644 --- a/app/bird/models.py +++ b/app/bird/models.py @@ -5,6 +5,8 @@ from django.conf import settings from django.db import models from django.utils.translation import gettext_lazy as _ +from ckeditor.fields import RichTextField + from aviary.models import Aviary from rescuer.models import Rescuer @@ -83,9 +85,7 @@ class FallenBird(models.Model): class Bird(models.Model): id = models.BigAutoField(primary_key=True) name = models.CharField(max_length=256, unique=True, verbose_name=_("Bezeichnung")) - description = models.CharField( - max_length=256, blank=True, null=True, verbose_name=_("Beschreibung") - ) + description = RichTextField(verbose_name=_("Erläuterungen")) class Meta: verbose_name = _("Vogel") diff --git a/app/core/settings.py b/app/core/settings.py index e9bea9a..ffc8731 100644 --- a/app/core/settings.py +++ b/app/core/settings.py @@ -65,8 +65,8 @@ INSTALLED_APPS = [ # ----------------------------------- # CKEditor # ----------------------------------- - # "ckeditor", - # "ckeditor_uploader", + "ckeditor", + "ckeditor_uploader", # ----------------------------------- # My Apps # ----------------------------------- @@ -93,6 +93,7 @@ MIDDLEWARE = [ CSP_DEFAULT_SRC = ( "'self'", "https://cdn.datatables.net", + "https://cke4.ckeditor.com", ) CSP_STYLE_SRC = ( "'self'", @@ -103,7 +104,8 @@ CSP_STYLE_SRC = ( "https://fonts.googleapis.com", ) CSP_SCRIPT_SRC = ( - "'self'", + "'self'", + "'unsafe-inline'", "https://cdn.datatables.net", "https://cdn.jsdelivr.net", "https://code.jquery.com", @@ -215,8 +217,8 @@ ACCOUNT_UNIQUE_EMAIL = True LOGIN_REDIRECT_URL = "/bird/all" # CKEditor -# CKEDITOR_BASEPATH = "/static/ckeditor/ckeditor/" -# CKEDITOR_UPLOAD_PATH = "media" +CKEDITOR_BASEPATH = "/static/ckeditor/ckeditor/" +CKEDITOR_UPLOAD_PATH = "media" # Static files (CSS, JavaScript, Images) # https://docs.djangoproject.com/en/4.2/howto/static-files/ @@ -246,3 +248,12 @@ if EMAIL_BACKEND == "django.core.mail.backends.smtp.EmailBackend": EMAIL_HOST = env("EMAIL_HOST") EMAIL_PORT = env("EMAIL_PORT") EMAIL_USE_TLS = True + +CKEDITOR_CONFIGS = { + 'default': { + "removePlugins": "exportpdf", + "height": 300, + "width": '100%', + "allowedContent": True, + } +} diff --git a/app/requirements.txt b/app/requirements.txt index 03777f5..a675b9c 100644 --- a/app/requirements.txt +++ b/app/requirements.txt @@ -2,7 +2,7 @@ crispy-bootstrap5>=0.6 django-allauth==0.55 django-bootstrap-datepicker-plus>=4.0 django-bootstrap-modal-forms>=2 -# django-ckeditor>=6.6 +django-ckeditor>=6.6 django-crispy-forms>=1 django-csp>=3.7 django-environ>=0.9