1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 | 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
})
|
More like this
- nested transactions context manager and decorator by demanzano 1 year, 9 months ago
- Nested commit_on_success by rfk 4 years, 2 months ago
- Clone model mixin by zakj 4 years, 4 months ago
- Commit on success unless managed decorator by Kronuz 3 years, 8 months ago
- Limit queryset to objects related to parent in ManyToMany fields within admin inlines by DrMeers 2 years, 12 months ago
Comments