From: Lincoln de Sousa Date: Tue, 1 Jul 2008 19:36:37 +0000 (-0300) Subject: adding a new field to maintain which is the owner of X-Git-Tag: 200807081126~5 X-Git-Url: http://git.cascardo.info/?p=cascardo%2Fema.git;a=commitdiff_plain;h=dba30d749f678328c1aded3e7d2813bf27646152 adding a new field to maintain which is the owner of a lecture and another to hold other possible lecturers. Talk deletion was fixed too. --- diff --git a/eventos/models.py b/eventos/models.py index 73aacea..f1378f4 100644 --- a/eventos/models.py +++ b/eventos/models.py @@ -107,10 +107,15 @@ class Trabalho(models.Model): titulo = models.CharField(max_length=100) evento = models.ForeignKey(Evento) tipo = models.ForeignKey(TipoTrabalho) - palestrante = models.ManyToManyField(Palestrante) + palestrante = models.ForeignKey(Palestrante) descricao_curta = models.TextField(u'Descrição curta') descricao_longa = models.TextField(u'Descrição longa') recursos = models.TextField(blank=True) + outros_palestrantes = \ + models.ManyToManyField(Palestrante, + related_name='outros_palestrantes', + blank=True, + null=True) class Admin: list_filter = 'evento', 'tipo' diff --git a/eventos/views.py b/eventos/views.py index 755d091..98a1f92 100644 --- a/eventos/views.py +++ b/eventos/views.py @@ -18,7 +18,7 @@ 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.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 @@ -117,14 +117,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 +132,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}