Source code for dash.contrib.plugins.dummy.forms

import logging

from six import PY2

from django import forms
from django.utils.text import Truncator
from django.utils.translation import ugettext_lazy as _

from transliterate.contrib.apps.translipsum import TranslipsumGenerator

from ....base import DashboardPluginFormBase
from ....widgets import BooleanRadioSelect
from .defaults import (
    DEFAULT_MAX_CHARS,
    LANGUAGE_CHOICES,
    LANGUAGE_CHOICES_KEYS,
)

if PY2:
    from lipsum import Generator
else:
    from transliterate.contrib.apps.translipsum.utils import Generator


__title__ = 'dash.contrib.plugins.dummy.forms'
__author__ = 'Artur Barseghyan <artur.barseghyan@gmail.com>'
__copyright__ = '2013-2018 Artur Barseghyan'
__license__ = 'GPL 2.0/LGPL 2.1'
__all__ = ('DummyForm', 'DummyShortcutsForm')

logger = logging.getLogger(__name__)


[docs]class DummyForm(forms.Form, DashboardPluginFormBase): """Dummy form (for main `placeholder`).""" plugin_data_fields = [ ("show_title", False), ("generate_lipsum", False), ("lipsum_language", ""), ("lipsum_max_chars", DEFAULT_MAX_CHARS), ("text", "") ] show_title = forms.BooleanField(label=_("Show title?"), required=False, initial=False, widget=BooleanRadioSelect) generate_lipsum = forms.BooleanField(label=_("Generate lorem ipsum?"), required=False, initial=False, widget=BooleanRadioSelect) lipsum_language = forms.ChoiceField(label=_("Language"), required=False, choices=LANGUAGE_CHOICES) lipsum_max_chars = forms.IntegerField(label=_("Max number of chars for " "generated text"), required=True, initial=DEFAULT_MAX_CHARS) text = forms.CharField(label=_("Generated lorem ipsum text"), required=False, widget=forms.widgets.HiddenInput)
[docs] def save_plugin_data(self, request=None): """Save plugin data. We want to save the generated lorem ipsum text for later use. Thus, although we don't show it to the user, in case when ``generate_lipsum`` field is set to True, we silently generate the text and save it into the plugin data. """ if self.cleaned_data.get('generate_lipsum', None): lipsum_language = self.cleaned_data.get('lipsum_language', None) try: if lipsum_language in LANGUAGE_CHOICES_KEYS: if lipsum_language == 'en': gen = Generator() else: gen = TranslipsumGenerator( language_code=lipsum_language ) text = gen.generate_paragraph() truncator = Truncator(text) self.cleaned_data['text'] = truncator.chars( self.cleaned_data.get('lipsum_max_chars', DEFAULT_MAX_CHARS) ) except Exception as err: if DEBUG: logger.debug(err)
[docs]class DummyShortcutsForm(DummyForm): """Dummy form for `shortucts` placeholder."""