]> git.0d.be Git - chloro.git/blobdiff - chloro/phyll/fields.py
add initial model
[chloro.git] / chloro / phyll / fields.py
diff --git a/chloro/phyll/fields.py b/chloro/phyll/fields.py
new file mode 100644 (file)
index 0000000..8440e4b
--- /dev/null
@@ -0,0 +1,46 @@
+# chloro - personal space
+# Copyright (C) 2019  Frederic Peters
+#
+# This program is free software: you can redistribute it and/or modify it
+# under the terms of the GNU Affero General Public License as published
+# by the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+
+import ckeditor.fields
+
+
+class RichTextField(ckeditor.fields.RichTextField):
+    def formfield(self, **kwargs):
+        defaults = {
+            'form_class': RichTextFormField,
+            'config_name': self.config_name,
+            'extra_plugins': self.extra_plugins,
+            'external_plugin_resources': self.external_plugin_resources,
+        }
+        defaults.update(kwargs)
+        return super(RichTextField, self).formfield(**defaults)
+
+
+class RichTextFormField(ckeditor.fields.RichTextFormField):
+    def clean(self, value):
+        value = super(RichTextFormField, self).clean(value)
+        if settings.LANGUAGE_CODE.startswith('fr-'):
+            # apply some basic typographic rules
+            value = value.replace('&laquo; ', '«\u202f')
+            value = value.replace('« ', '«\u202f')
+            value = value.replace(' &raquo;', '\u202f»')
+            value = value.replace(' »', '\u202f»')
+            value = value.replace(' :', '\u00a0:')
+            value = value.replace(' ;', '\u202f;')
+            value = value.replace(' !', '\u202f!')
+            value = value.replace(' ?', '\u202f?')
+        return value