X-Git-Url: http://git.cascardo.info/?a=blobdiff_plain;f=eventos%2Fviews.py;h=d222c16790b82af38d78e25cec96cd86715712d6;hb=78c975853ce26b799e053a2c00be3d918ef06427;hp=755d091fe53822ee3f140be4336e79def911a3d4;hpb=79952cb192823de33542fe2f950474e3882ae9c4;p=cascardo%2Fema.git diff --git a/eventos/views.py b/eventos/views.py index 755d091..d222c16 100644 --- a/eventos/views.py +++ b/eventos/views.py @@ -18,10 +18,12 @@ from django.http import HttpResponseRedirect, HttpResponseForbidden from django.contrib import auth from django.contrib.auth.forms import AuthenticationForm -from django.newforms import form_for_instance, form_for_model +from django.contrib.auth.models import User, Group +from django.newforms import form_for_instance, form_for_model, HiddenInput from django.shortcuts import render_to_response, get_object_or_404 from django.template import RequestContext, Context, loader from eventos.models import Palestrante, Trabalho +from eventos.forms import RegisterLecturer forbidden = \ HttpResponseForbidden('

You are not allowed to do this action.

') @@ -59,6 +61,39 @@ def logout(request): auth.logout(request) return HttpResponseRedirect('/') +def lecturer_add(request): + """Adds a new lecturer to the system. + """ + uform = RegisterLecturer(request.POST or None) + + FormKlass = form_for_model(Palestrante) + form = FormKlass(request.POST or None) + del form.fields['usuario'] + + if request.POST and form.is_valid() and uform.is_valid(): + cd = uform.cleaned_data + group = Group.objects.get_or_create(name='palestrantes')[0] + + # creating the user that will be set as the user of the + # lecturer. + user = User(username=cd['username']) + user.set_password(cd['password1']) + user.is_active = True + user.save() + user.groups.add(group) + + # this commit=False is to avoid IntegritErrors, because at + # this point, the lecturer doesn't have an user associated + # with it. + instance = form.save(commit=False) + instance.usuario = user + instance.save() + return HttpResponseRedirect('/') + + c = {'form': form, 'uform': uform} + return render_to_response('eventos/lecturer-add.html', Context(c), + context_instance=RequestContext(request)) + def lecturer_details(request, lid): """Shows a simple form containing all editable fields of a lecturer and gives the lecturer the possibility to save them =) @@ -117,14 +152,11 @@ def talk_delete(request, tid): return forbidden entity = request.user.palestrante_set.get() - if entity.id != int(lid): - return forbidden - - owner = Trabalho.objects.filter(pk=tid, palestrante=entity) - if not owner: + talk = Trabalho.objects.filter(pk=tid, palestrante=entity) + if not talk: return forbidden - entity.delete() + talk.delete() return HttpResponseRedirect('/lecturer/%d/talks/' % entity.id) def talk_add(request): @@ -135,16 +167,18 @@ def talk_add(request): entity = request.user.palestrante_set.get() FormKlass = form_for_model(Trabalho) - form = FormKlass(request.POST or None) + form = FormKlass(request.POST or None, + initial={'palestrante': entity.id}) + + # This field should not be shown to the user. + form.fields['palestrante'].widget = HiddenInput() + # hidding the owner in the other lecturers list other = Palestrante.objects.exclude(pk=entity.id) - form.fields['palestrante'].label = u'Outros Palestrantes' - form.fields['palestrante'].required = False - form.fields['palestrante']._set_queryset(other) + form.fields['outros_palestrantes']._set_queryset(other) if request.POST and form.is_valid(): instance = form.save() - instance.palestrante.add(entity) return HttpResponseRedirect('/lecturer/%d/talks/' % entity.id) c = {'form': form}