class Edittalkform(forms.Form):
def __init__(self, *args, **kwargs):
self.fields['speaker'].choices = [(chld.id,
chld.username) for chld in Delegate.objects.all()]
title = forms.CharField(max_length=250,
label=_("Talk Title")
)
speaker = forms.MultipleChoiceField(label=_("Speaker(s)"),
choices=()
)
@user_passes_test(lambda u: u.is_anonymous()==False ,login_url="/web/login/")
@transaction.commit_on_success
def edittalk(request,id):
if request.POST:
form = Edittalkform(request.POST)
if form.is_valid():
fm = form.cleaned_data
delgid = Delegate.objects.get(username=request.user).id
if str(delgid) not in fm['speaker']:
form.errors['speaker'] = [_("Your own username\
is missing from the list of speakers")]
if not form.errors:
newtalk.title = fm['title']
newtalk.save()
# remove all the previous speakers
newtalk.speaker.clear()
for spk in fm['speaker']:
newtalk.speaker.add(Delegate.objects.get(pk=int(spk)))
return HttpResponseRedirect("/web/talks/" )
else:
tlk = Talk.objects.get(pk=id)
data = {
'title': tlk.title,
'speaker': [p.id for p in tlk.speaker.all()],
}
form = Edittalkform(data)
return render_to_response("web/edittalk.html",
{'form':form,
'request':request
})
Comments