Ajout et utilisation de summernote
This commit is contained in:
@@ -11,6 +11,7 @@ https://docs.djangoproject.com/en/4.0/ref/settings/
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
|
import os
|
||||||
|
|
||||||
# Build paths inside the project like this: BASE_DIR / 'subdir'.
|
# Build paths inside the project like this: BASE_DIR / 'subdir'.
|
||||||
BASE_DIR = Path(__file__).resolve().parent.parent
|
BASE_DIR = Path(__file__).resolve().parent.parent
|
||||||
@@ -25,6 +26,8 @@ SECRET_KEY = 'django-insecure-j4jd&+4j^t_=@zr(#q@n!8e*58vkql6&_6w-t14ju8pw%ei%^s
|
|||||||
# SECURITY WARNING: don't run with debug turned on in production!
|
# SECURITY WARNING: don't run with debug turned on in production!
|
||||||
DEBUG = True
|
DEBUG = True
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
cfg_dev_mode = True
|
cfg_dev_mode = True
|
||||||
|
|
||||||
ALLOWED_HOSTS = ["rh.ambulance-clerc.ch"]
|
ALLOWED_HOSTS = ["rh.ambulance-clerc.ch"]
|
||||||
@@ -50,10 +53,54 @@ INSTALLED_APPS = [
|
|||||||
'django.contrib.admin',
|
'django.contrib.admin',
|
||||||
'carnet_rouge.apps.CarnetRougeConfig',
|
'carnet_rouge.apps.CarnetRougeConfig',
|
||||||
#'nextcloud.apps.NextcloudConfig',
|
#'nextcloud.apps.NextcloudConfig',
|
||||||
'tinymce',
|
'django_quill',
|
||||||
|
'django_summernote',
|
||||||
|
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
|
MEDIA_URL = '/media/'
|
||||||
|
MEDIA_ROOT = os.path.join(BASE_DIR, 'media/')
|
||||||
|
X_FRAME_OPTIONS = 'SAMEORIGIN'
|
||||||
|
|
||||||
|
MAX_IMAGE_PIXELS = int(1024 * 1024 * 1024 // 4 // 3)
|
||||||
|
SUMMERNOTE_THEME = 'bs4'
|
||||||
|
SUMMERNOTE_CONFIG = {
|
||||||
|
# Using SummernoteWidget - iframe mode, default
|
||||||
|
'iframe': True,
|
||||||
|
'attachment_filesize_limit': 2621440 ,
|
||||||
|
|
||||||
|
|
||||||
|
'summernote': {
|
||||||
|
# As an example, using Summernote Air-mode
|
||||||
|
'airMode': False,
|
||||||
|
|
||||||
|
|
||||||
|
# Change editor size
|
||||||
|
'width': '100%',
|
||||||
|
'height': '480',
|
||||||
|
|
||||||
|
# Use proper language setting automatically (default)
|
||||||
|
'lang': "fr-FR",
|
||||||
|
|
||||||
|
# Toolbar customization
|
||||||
|
# https://summernote.org/deep-dive/#custom-toolbar-popover
|
||||||
|
'toolbar': [
|
||||||
|
['view', ['undo','redo','fullscreen', 'codeview', 'help']],
|
||||||
|
['fontfamily',['fontsize']],
|
||||||
|
['font', ['bold', 'italic', 'underline', 'superscript', 'subscript', 'clear']],
|
||||||
|
['color', ['forecolor','backcolor']],
|
||||||
|
['para', ['ul', 'ol', 'paragraph']],
|
||||||
|
['table', ['table']],
|
||||||
|
['insert', ['link', 'picture', 'video', 'hr']],
|
||||||
|
['style', ['style']],
|
||||||
|
],
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
DATA_UPLOAD_MAX_NUMBER_FIELDS = 2500
|
||||||
|
|
||||||
|
|
||||||
MIDDLEWARE = [
|
MIDDLEWARE = [
|
||||||
'django.middleware.security.SecurityMiddleware',
|
'django.middleware.security.SecurityMiddleware',
|
||||||
'django.contrib.sessions.middleware.SessionMiddleware',
|
'django.contrib.sessions.middleware.SessionMiddleware',
|
||||||
@@ -293,9 +340,10 @@ JAZZMIN_SETTINGS = {
|
|||||||
"language_chooser": False,
|
"language_chooser": False,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
if cfg_dev_mode:
|
if cfg_dev_mode:
|
||||||
NEXTCLOUD_HOST = "cloud.ambulance-clerc.ch"
|
NEXTCLOUD_HOST = "cloud.ambulance-clerc.ch"
|
||||||
else:
|
else:
|
||||||
NEXTCLOUD_HOST = "cloud.ambulance-clerc.ch"
|
NEXTCLOUD_HOST = "cloud.ambulance-clerc.ch"
|
||||||
NEXTCLOUD_USER_DEFAULT_PASSWORD = "Mc144*1870"
|
NEXTCLOUD_USER_DEFAULT_PASSWORD = "Mc144*1870"
|
||||||
|
|
||||||
|
|
||||||
|
@@ -7,6 +7,7 @@ from django.contrib.admin import SimpleListFilter
|
|||||||
from django.utils.encoding import force_str
|
from django.utils.encoding import force_str
|
||||||
from django.utils.translation import gettext_lazy as _
|
from django.utils.translation import gettext_lazy as _
|
||||||
|
|
||||||
|
from django_summernote.admin import SummernoteModelAdmin
|
||||||
|
|
||||||
class DefaultListFilter(SimpleListFilter):
|
class DefaultListFilter(SimpleListFilter):
|
||||||
all_value = '_all'
|
all_value = '_all'
|
||||||
@@ -49,7 +50,8 @@ class StatusFilter(DefaultListFilter):
|
|||||||
return 1
|
return 1
|
||||||
|
|
||||||
@admin.register(cr_Message)
|
@admin.register(cr_Message)
|
||||||
class cr_Message_Admin(admin.ModelAdmin):
|
class cr_Message_Admin(SummernoteModelAdmin):
|
||||||
|
summernote_fields = ('sText',)
|
||||||
class Meta:
|
class Meta:
|
||||||
verbose_name = 'Message carnet rouge'
|
verbose_name = 'Message carnet rouge'
|
||||||
verbose_name_plural = 'Messages carnet rouge'
|
verbose_name_plural = 'Messages carnet rouge'
|
||||||
|
@@ -30,7 +30,7 @@ class cr_Message(models.Model):
|
|||||||
sReadedUsers = models.TextField("Liste des utilisateurs ayant lu", blank=True)
|
sReadedUsers = models.TextField("Liste des utilisateurs ayant lu", blank=True)
|
||||||
DestGroup = models.ForeignKey(Group, on_delete=models.DO_NOTHING)
|
DestGroup = models.ForeignKey(Group, on_delete=models.DO_NOTHING)
|
||||||
sTitle = models.CharField("Titre", max_length=120)
|
sTitle = models.CharField("Titre", max_length=120)
|
||||||
sText = QuillField ("Corps de texte")
|
sText = models.TextField ("Corps de texte")
|
||||||
dtValidityFrom = models.DateField("Validité depuis",default=timezone.now)
|
dtValidityFrom = models.DateField("Validité depuis",default=timezone.now)
|
||||||
dtValidityTo = models.DateField("Validité jusqu'à", blank=True, null=True)
|
dtValidityTo = models.DateField("Validité jusqu'à", blank=True, null=True)
|
||||||
bEnabled = models.BooleanField("Actif", default=True)
|
bEnabled = models.BooleanField("Actif", default=True)
|
||||||
|
@@ -1,7 +1,7 @@
|
|||||||
<div class="card">
|
<div class="card">
|
||||||
<div class="card-body">
|
<div class="card-body">
|
||||||
<div>
|
<div>
|
||||||
{{ obj.sText.html|safe }}
|
{{ obj.sText|safe }}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
@@ -1,5 +1,7 @@
|
|||||||
from django.urls import path
|
from django.urls import path, include
|
||||||
|
|
||||||
|
from django.conf import settings
|
||||||
|
from django.conf.urls.static import static
|
||||||
|
|
||||||
|
|
||||||
from carnet_rouge import views
|
from carnet_rouge import views
|
||||||
@@ -9,12 +11,9 @@ urlpatterns = [
|
|||||||
path('cr', views.model_form_view, name='model_form_view'),
|
path('cr', views.model_form_view, name='model_form_view'),
|
||||||
path('view/<int:pk>', views.CrDetailView.as_view(), name='cr_view'),
|
path('view/<int:pk>', views.CrDetailView.as_view(), name='cr_view'),
|
||||||
path('notread', views.CrNotReadView.as_view(), name='cr_not_read_list'),
|
path('notread', views.CrNotReadView.as_view(), name='cr_not_read_list'),
|
||||||
|
path('summernote/', include('django_summernote.urls')),
|
||||||
|
path('editor/', include('django_summernote.urls')),
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
]
|
]
|
||||||
|
if settings.DEBUG:
|
||||||
|
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
|
||||||
|
@@ -56,4 +56,4 @@ x-wr-timezone==0.0.5
|
|||||||
xhtml2pdf==0.2.7
|
xhtml2pdf==0.2.7
|
||||||
zopfli==0.1.9
|
zopfli==0.1.9
|
||||||
django-autologin
|
django-autologin
|
||||||
django-quill-editor
|
django-summernote
|
Reference in New Issue
Block a user