Browse Source

Renames/cleanup.

master
Erik Stein 7 years ago
parent
commit
ece4a92ea7
  1. 2
      content_plugins/admin.py
  2. 4
      content_plugins/apps.py
  3. 5
      content_plugins/base.py
  4. 97
      content_plugins/mixins.py

2
content_plugins/admin.py

@ -13,6 +13,8 @@ class ContentInlineBase(ContentEditorInline):
""" """
# TODO Use feincms3.plugins.richtext.RichText/RichTextInline instead
class RichTextarea(forms.Textarea): class RichTextarea(forms.Textarea):
def __init__(self, attrs=None): def __init__(self, attrs=None):
# Provide class so that the code in plugin_ckeditor.js knows # Provide class so that the code in plugin_ckeditor.js knows

4
content_plugins/apps.py

@ -1,5 +1,5 @@
from django.apps import AppConfig from django.apps import AppConfig
class ContentConfig(AppConfig): class ContentPluginsConfig(AppConfig):
name = 'content' name = 'content_plugins'

5
content_plugins/abstract_plugins.py → content_plugins/base.py

@ -1,8 +1,4 @@
# TODO Always use Django templates for rendering, replace .format() class
import os
import re import re
from django.conf import settings
from django.db import models from django.db import models
from django.template import Template from django.template import Template
from django.utils.html import format_html, mark_safe from django.utils.html import format_html, mark_safe
@ -275,6 +271,7 @@ class FootnoteBase(BasePlugin):
return mark_safe(template.format(**context)) return mark_safe(template.format(**context))
# FIXME Currently doesn't do anything
class RichTextFootnoteMixin: class RichTextFootnoteMixin:
MATCH_FOOTNOTES = re.compile("<sup>(\w+)</sup>") MATCH_FOOTNOTES = re.compile("<sup>(\w+)</sup>")

97
content_plugins/mixins.py

@ -1,97 +0,0 @@
from functools import reduce, partial
from django.conf import settings
from django.db import models
from django.utils.html import strip_tags
from django.utils.text import normalize_newlines
from django.utils.translation import ugettext_lazy as _
from shared.utils.fields import AutoSlugField
from shared.utils.functional import firstof
from shared.utils.text import slimdown
from . import USE_TRANSLATABLE_FIELDS
if USE_TRANSLATABLE_FIELDS:
from shared.multilingual.utils.fields import TranslatableCharField, TranslatableTextField
class PageTitlesMixin(models.Model):
"""
A model mixin containg title and slug field for models serving as website
pages with an URL.
"""
# FIXME signals are not sent from abstract models, therefore AutoSlugField doesn't work
if USE_TRANSLATABLE_FIELDS:
short_title = TranslatableCharField(_("Name"), max_length=50)
title = TranslatableTextField(_("Titel (Langform)"), null=True, blank=True, max_length=300)
window_title = TranslatableCharField(_("Fenster-/Suchmaschinentitel"), null=True, blank=True, max_length=300)
# FIXME populate_from should use settings.LANGUAGE
slug = AutoSlugField(_("URL-Name"), max_length=200, populate_from='short_title_de', unique_slug=True, blank=True)
else:
short_title = models.CharField(_("Name"), max_length=50)
title = models.TextField(_("Titel (Langform)"), null=True, blank=True, max_length=300)
window_title = models.CharField(_("Fenster-/Suchmaschinentitel"), null=True, blank=True, max_length=300)
slug = AutoSlugField(_("URL-Name"), max_length=200, populate_from='short_title', unique_slug=True, blank=True)
class Meta:
abstract = True
def __str__(self):
return strip_tags(slimdown(self.short_title))
def get_title(self):
return slimdown(firstof(
self.title,
self.short_title
))
def get_window_title(self):
return strip_tags(slimdown(
firstof(
self.window_title,
self.short_title,
self.get_first_title_line(),
)
))
def get_first_title_line(self):
"""
First line of title field.
"""
return slimdown(
normalize_newlines(self.get_title()).partition("\n")[0]
)
def get_subtitle_lines(self):
"""
All but first line of the long title field.
"""
return slimdown(
normalize_newlines(self.title).partition("\n")[2]
)
# TODO Move to shared.multilingual or shared.utils.translation
def language_variations_for_field(language_codes, fields):
# TODO Check if field is translatable
return ["{}_{}".format(fields, s) for s in language_codes]
# TODO Move to shared.multilingual or shared.utils.translation
def language_variations_for_fields(fields, language_codes=None):
if not language_codes:
language_codes = [t[0] for t in settings.LANGUAGES]
f = partial(language_variations_for_field, language_codes)
return reduce(lambda x, y: x + y, map(f, fields))
class PageTitleAdminMixin(object):
search_fields = ['short_title', 'title', 'window_title']
if USE_TRANSLATABLE_FIELDS:
search_fields = language_variations_for_fields(search_fields)
list_display = ['short_title', 'slug']
prepopulated_fields = {
'slug': ('short_title_en',),
}
Loading…
Cancel
Save