1 # chloro - personal space
2 # Copyright (C) 2019 Frederic Peters
4 # This program is free software: you can redistribute it and/or modify it
5 # under the terms of the GNU Affero General Public License as published
6 # by the Free Software Foundation, either version 3 of the License, or
7 # (at your option) any later version.
9 # This program is distributed in the hope that it will be useful,
10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 # GNU Affero General Public License for more details.
14 # You should have received a copy of the GNU Affero General Public License
15 # along with this program. If not, see <http://www.gnu.org/licenses/>.
17 from django.conf import settings
19 import ckeditor.fields
22 class RichTextField(ckeditor.fields.RichTextField):
23 def formfield(self, **kwargs):
25 'form_class': RichTextFormField,
26 'config_name': self.config_name,
27 'extra_plugins': self.extra_plugins,
28 'external_plugin_resources': self.external_plugin_resources,
30 defaults.update(kwargs)
31 return super(RichTextField, self).formfield(**defaults)
34 class RichTextFormField(ckeditor.fields.RichTextFormField):
35 def clean(self, value):
36 value = super(RichTextFormField, self).clean(value)
37 if settings.LANGUAGE_CODE.startswith('fr-'):
38 # apply some basic typographic rules
39 value = value.replace('« ', '«\u202f')
40 value = value.replace('« ', '«\u202f')
41 value = value.replace(' »', '\u202f»')
42 value = value.replace(' »', '\u202f»')
43 value = value.replace(' :', '\u00a0:')
44 value = value.replace(' ;', '\u202f;')
45 value = value.replace(' !', '\u202f!')
46 value = value.replace(' ?', '\u202f?')