+import json
+
from django import forms
-from django_select2.widgets import HeavySelect2Widget, convert_to_js_string_arr
+from django_select2.widgets import HeavySelect2Widget
+from taggit.forms import TagWidget
-from emissions.models import SoundFile
+from emissions.models import SoundFile, Episode
-from .models import SoundCell
-from .views import soundfiles
+from .models import (SoundCell, EpisodeCell, EpisodeAutoSelectionCell,
+ NewsItemAutoSelectionCell, Topik)
+from .views import soundfiles, episodes
class SoundFileWidget(HeavySelect2Widget):
def render_texts(self, selected_choices, choices):
soundfile.episode.title,
soundfile.title or soundfile.id)
texts = [fmt(soundfile) for soundfile in queryset.select_related()]
- return convert_to_js_string_arr(texts)
+ return json.dumps(texts)
class SoundCellForm(forms.ModelForm):
def __init__(self, *args, **kwargs):
super(SoundCellForm, self).__init__(*args, **kwargs)
self.fields['soundfile'].widget = SoundFileWidget(data_view=soundfiles)
+
+
+class EpisodeWidget(HeavySelect2Widget):
+ def render_texts(self, selected_choices, choices):
+ queryset = Episode.objects.filter(id__in=selected_choices)
+ def fmt(episode):
+ return '%s - %s' % (episode.emission.title, episode.title)
+ texts = [fmt(episode) for episode in queryset.select_related()]
+ return json.dumps(texts)
+
+
+class EpisodeCellForm(forms.ModelForm):
+ class Meta:
+ model = EpisodeCell
+ fields = ('episode', )
+
+ def __init__(self, *args, **kwargs):
+ super(EpisodeCellForm, self).__init__(*args, **kwargs)
+ self.fields['episode'].widget = EpisodeWidget(data_view=episodes)
+
+
+class EpisodeAutoSelectionCellForm(forms.ModelForm):
+ class Meta:
+ model = EpisodeAutoSelectionCell
+ fields = ('title', 'tags', 'and_tags', 'category', 'period')
+ widgets = {'tags': TagWidget()}
+
+
+class NewsItemAutoSelectionCellForm(forms.ModelForm):
+ class Meta:
+ model = NewsItemAutoSelectionCell
+ fields = ('title', 'tags', 'and_tags', 'category', 'future')
+ widgets = {'tags': TagWidget()}
+
+
+class TopikEditForm(forms.ModelForm):
+ class Meta:
+ model = Topik
+ fields = ('image',)