add basic views to create/edit/delete notes
[chloro.git] / chloro / phyll / fields.py
1 # chloro - personal space
2 # Copyright (C) 2019  Frederic Peters
3 #
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.
8 #
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.
13 #
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/>.
16
17 from django.conf import settings
18
19 import ckeditor.fields
20
21
22 class RichTextField(ckeditor.fields.RichTextField):
23     def formfield(self, **kwargs):
24         defaults = {
25             'form_class': RichTextFormField,
26             'config_name': self.config_name,
27             'extra_plugins': self.extra_plugins,
28             'external_plugin_resources': self.external_plugin_resources,
29         }
30         defaults.update(kwargs)
31         return super(RichTextField, self).formfield(**defaults)
32
33
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('&laquo; ', '«\u202f')
40             value = value.replace('« ', '«\u202f')
41             value = value.replace(' &raquo;', '\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?')
47         return value