2015-09-06 07:41:45 +00:00
|
|
|
from django import forms
|
|
|
|
|
|
2017-04-23 18:14:08 +00:00
|
|
|
from .widgets import MarkdownxWidget
|
2015-09-06 07:41:45 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
class MarkdownxFormField(forms.CharField):
|
2017-03-19 17:19:28 +00:00
|
|
|
"""
|
2017-04-25 00:17:10 +00:00
|
|
|
Used in FormFields as a Markdown enabled replacement for ``CharField``.
|
2017-03-19 17:19:28 +00:00
|
|
|
"""
|
2015-09-06 07:41:45 +00:00
|
|
|
|
|
|
|
|
def __init__(self, *args, **kwargs):
|
2017-03-19 17:19:28 +00:00
|
|
|
"""
|
2017-04-25 00:17:10 +00:00
|
|
|
Arguments are similar to Django's default ``CharField``.
|
|
|
|
|
|
|
|
|
|
See Django's `documentations on CharField`_ for additional information.
|
|
|
|
|
|
|
|
|
|
.. _docs on Charfield: https://docs.djangoproject.com/en/dev/ref/models/fields/#django.db.models.CharField
|
2017-03-19 17:19:28 +00:00
|
|
|
"""
|
2015-09-06 07:41:45 +00:00
|
|
|
super(MarkdownxFormField, self).__init__(*args, **kwargs)
|
|
|
|
|
|
2017-01-07 16:18:07 +00:00
|
|
|
if issubclass(self.widget.__class__, forms.widgets.MultiWidget):
|
2017-04-23 18:14:08 +00:00
|
|
|
is_markdownx_widget = any(
|
|
|
|
|
issubclass(item.__class__, MarkdownxWidget)
|
|
|
|
|
for item in getattr(self.widget, 'widgets', list())
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
if not is_markdownx_widget:
|
2017-01-07 16:18:07 +00:00
|
|
|
self.widget = MarkdownxWidget()
|
2017-04-23 18:14:08 +00:00
|
|
|
|
2017-01-07 16:18:07 +00:00
|
|
|
elif not issubclass(self.widget.__class__, MarkdownxWidget):
|
2015-09-06 07:41:45 +00:00
|
|
|
self.widget = MarkdownxWidget()
|