adding a new field to maintain which is the owner of
authorLincoln de Sousa <lincoln@minaslivre.org>
Tue, 1 Jul 2008 19:36:37 +0000 (16:36 -0300)
committerLincoln de Sousa <lincoln@minaslivre.org>
Tue, 1 Jul 2008 19:36:37 +0000 (16:36 -0300)
a lecture and another to hold other possible lecturers. Talk deletion was fixed too.

eventos/models.py
eventos/views.py

index 73aacea..f1378f4 100644 (file)
@@ -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'
index 755d091..98a1f92 100644 (file)
@@ -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}