Generated: Wed 2012-04-11 05:19 CDT
Source file: /home/buechler/Sites/django-markupmirror/markupmirror/widgets.py
Stats: 11 executed, 18 missed, 4 excluded, 37 ignored
from django import formsfrom django.contrib.admin.widgets import AdminTextareaWidgetfrom markupmirror import settingsfrom markupmirror.markup.base import markup_poolclass MarkupMirrorTextarea(forms.Textarea): css_class = 'item-markupmirror' def __init__(self, attrs=None): """Adds the ``item-markupmirror`` class to the textarea to make sure it can be identified through JS. """ css_class = self.css_class if attrs and 'class' in attrs: css_class += ' %s' % attrs.pop('class') default_attrs = { 'class': css_class, } if attrs: default_attrs.update(attrs) super(MarkupMirrorTextarea, self).__init__(attrs=default_attrs) def render(self, name, value, attrs=None): if value is not None and not isinstance(value, unicode): value = value.raw return super(MarkupMirrorTextarea, self).render(name, value, attrs) class Media: css = { 'all': settings.MARKUPMIRROR_CSS } js = settings.MARKUPMIRROR_JSclass AdminMarkupMirrorTextareaWidget( MarkupMirrorTextarea, AdminTextareaWidget): css_class = 'vLargeTextField item-markupmirror' def render(self, name, value, attrs=None): """Adds attributes necessary to load CodeMirror for each textarea in the admin. """ default_attrs = {} if value and hasattr(value, 'markup_type'): # get markup converter by type. # ``value`` is ``markupmirror.fields.Markup``. markup_type = value.markup_type markup = markup_pool.get_markup(markup_type) default_attrs = { 'data-mode': markup.codemirror_mode, 'data-markuptype': markup_type, } if attrs: default_attrs.update(attrs) return super(AdminMarkupMirrorTextareaWidget, self).render( name, value, default_attrs)__all__ = ('MarkupMirrorTextarea', 'AdminMarkupMirrorTextareaWidget')