AudioFile Forms¶
Forms Definition¶
This form aims to be used in the django admin, support all the features for convertion per default:
class AdminAudioFileForm(ModelForm):
class Meta:
model = AudioFile
fields = ['name', 'audio_file']
The following form aims to be used on frontend to power simple upload of audio files without convertion:
class CustomerAudioFileForm(ModelForm):
audio_file = forms.FileField(widget=CustomerAudioFileWidget)
class Meta:
model = AudioFile
fields = ['name', 'audio_file']
exclude = ('user',)
Forms Usage¶
We provide you a simple example of using the forms to list and upload audio file on the frontend.
In url.py:
...
(r'^$', 'frontend.views.add_audio'),
In view.py:
...
@login_required
def add_audio(request):
template = 'frontend/add_audio.html'
form = CustomerAudioFileForm()
# Add audio
if request.method == 'POST':
form = CustomerAudioFileForm(request.POST, request.FILES)
if form.is_valid():
obj = form.save(commit=False)
obj.user = User.objects.get(username=request.user)
obj.save()
return HttpResponseRedirect('/')
# To retain frontend widget, if form.is_valid() == False
form.fields['audio_file'].widget = CustomerAudioFileWidget()
data = {
'audio_form': form,
}
return render_to_response(template, data,
context_instance=RequestContext(request))
This is an other example how to edit the audiofield on the frontend.
In url.py:
...
(r'^edit/(.+)/$', 'frontend.views.edit_audio'),
In view.py:
...
@login_required
def edit_audio(request, object_id):
obj = AudioFile.objects.get(pk=object_id)
form = CustomerAudioFileForm(instance=obj)
if request.GET.get('delete'):
# perform delete
if obj.audio_file:
if os.path.exists(obj.audio_file.path):
os.remove(obj.audio_file.path)
obj.delete()
return HttpResponseRedirect('/')
if request.method == 'POST':
form = CustomerAudioFileForm(request.POST, request.FILES, instance=obj)
if form.is_valid():
form.save()
return HttpResponseRedirect('/')
template = 'frontend/edit_audio.html'
data = {
'audio_form': form,
}
return render_to_response(template, data,
context_instance=RequestContext(request))