from taggit.forms import TagWidget
import datetimewidget.widgets
-from .models import Emission, Episode, Diffusion, Schedule, SoundFile, NewsItem, Absence
+from .models import (Emission, Episode, Diffusion, Schedule, SoundFile,
+ NewsItem, Absence, PlaylistElement)
DATETIME_OPTIONS = {
rerun_absence.datetime = rerun_date
rerun_absence.save()
return t
+
+
+class PlaylistElementForm(forms.ModelForm):
+ class Meta:
+ model = PlaylistElement
+ exclude = ('title', 'notes', 'order')
+ widgets = {
+ 'episode': forms.HiddenInput(),
+ 'sound': JqueryFileUploadInput(),
+ }
<h3>Ajouter à la playlist</h3>
<form id="add-playlist-elements-form" method="POST" action="." enctype="multipart/form-data">
{% csrf_token %}
-<input type="file" name="playlist-element" multiple>
+{{upload_file_form}}
</form>
{% endif %}
{% endblock %}
{% block page-end %}
+<style>
+#add-playlist-elements-form > label { display: none; }
+</style>
<script>
$(function() {
function update_start_end() {
return false;
});
- $('#add-playlist-elements-form input[type=file]').on('change', function() {
- $('body').addClass('submitting');
- $(this).parent().submit();
+ $('#add-playlist-elements-form').on('panik:file-upload-complete', function() {
+ $(this).submit();
});
+
$('#playlist tbody').sortable({
handle: '.handle',
update: function(event, ui) {
PlaylistElement
from .forms import EmissionForm, EpisodeForm, EpisodeNewForm, ScheduleForm, \
DiffusionForm, SoundFileForm, NewsItemForm, \
- SoundFileEditForm, AbsenceForm
+ SoundFileEditForm, AbsenceForm, PlaylistElementForm
__all__ = ['EmissionListView', 'EmissionDetailView', 'EmissionCreateView',
def post(self, request, *args, **kwargs):
episode = self.get_object()
+ form = PlaylistElementForm(request.POST, request.FILES)
+ if not form.is_valid():
+ messages.error(request, _('Error adding file'))
+ return HttpResponseRedirect('.')
i = PlaylistElement.objects.filter(episode=episode).count()
- for upload in request.FILES.getlist('playlist-element'):
- playlist_element = PlaylistElement(
- episode=episode,
- title=upload.name,
- sound=upload,
- order=i+1)
- playlist_element.save()
- i += 1
- messages.info(request, _('%d files uploaded successfully.') %
- len(request.FILES.getlist('playlist-element')))
+ playlist_element = PlaylistElement(
+ episode=episode,
+ title=os.path.basename(form.cleaned_data['sound'].name),
+ sound=form.cleaned_data['sound'],
+ order=i+1)
+ playlist_element.save()
+ messages.info(request, _('File uploaded successfully.'))
return HttpResponseRedirect('.')
def get_context_data(self, **kwargs):
context['can_manage'] = self.request.user.can_manage(self.object)
except AttributeError:
pass
+
+ context['upload_file_form'] = PlaylistElementForm(initial={'episode': self.object})
+
return context
class EpisodeRegieUpdateOrderView(View):