Source code for evileg_core.widgets

# -*- coding: utf-8 -*-

from django import forms
from django.conf import settings
from django.contrib.admin.widgets import AdminDateWidget
from django.forms.utils import flatatt
from django.template.loader import render_to_string
from django.utils.encoding import force_text


[docs]class ELesserAdminDateWidget(AdminDateWidget): """ ELesserAdminDateWidget is using for filters in admin panels. From media of this class were removed some js files because it invoked reinitialization of fields. This field is using in Django administration panel """ @property def media(self): """ Method will return needed js files for this field :return: django.forms.Media """ extra = '' if settings.DEBUG else '.min' js = [ 'vendor/jquery/jquery%s.js' % extra, 'jquery.init.js', ] return forms.Media(js=["admin/js/%s" % path for path in js])
[docs]class EMarkdownWidget(forms.Widget): """ Markdown widget for rendering in the templates """ def __init__(self, attrs=None, documentation_link=None, placeholder=None, upload_link=None, upload_file_link=None, extended_mode=True, fullscreen=True): self.documentation_link = documentation_link self.placeholder = placeholder self.upload_link = upload_link self.upload_file_link = upload_file_link self.codemirror_theme = 'idea' self.markdown_codemirror_theme = 'markdown_idea' self.extended_mode = extended_mode self.fullscreen = fullscreen super().__init__(attrs=attrs)
[docs] def render(self, name, value, attrs=None, renderer=None): return render_to_string( template_name='evileg_core/markdown_widget.html', context={ 'widget_id': attrs['id'], 'documentation_link': self.documentation_link, 'placeholer': self.placeholder, 'upload_link': self.upload_link, 'upload_file_link': self.upload_file_link, 'final_attrs': flatatt(self.build_attrs(self.attrs, attrs, name=name)), 'text': force_text(value or ''), 'codemirror_theme': self.codemirror_theme, 'markdown_codemirror_theme': self.markdown_codemirror_theme, 'extended_mode': self.extended_mode, 'fullscreen': self.fullscreen } )
[docs] def build_attrs(self, base_attrs, extra_attrs=None, **kwargs): """ Helper function for building an attribute dictionary. This is combination of the same method from Django<=1.10 and Django1.11+ """ attrs = dict(base_attrs, **kwargs) if extra_attrs: attrs.update(extra_attrs) return attrs