Added method to list all talks in eventos/views.py
[cascardo/ema.git] / eventos / views.py
index f8b8240..18bc5e6 100644 (file)
@@ -146,6 +146,10 @@ def speaker_talks(request, lid):
 def talk_details(request, tid):
     """Shows a form to edit a talk
     """
+    # If the user is not a speaker we should not try to show anything.
+    if not hasattr(request.user, 'palestrante_set'):
+        return forbidden
+
     # Selected in settings.py (SITE_ID) variable, because an event can
     # be linked with only one site.
     event = Evento.objects.get(site__id__exact=settings.SITE_ID)
@@ -174,6 +178,12 @@ def talk_details(request, tid):
         form.fields['outros_palestrantes'].initial = ''
         form.fields['outros_palestrantes'].widget = HiddenInput()
 
+    # avoiding smart people trying to se talks of other speakers.
+    speaker = request.user.palestrante_set.get()
+    if speaker.id != entity.palestrante.id \
+            and speaker not in entity.outros_palestrantes.all():
+        return forbidden
+
     if request.POST and form.is_valid():
         form.save()
 
@@ -242,3 +252,17 @@ def talk_add(request):
     c = {'form': form}
     return render_to_response('eventos/talk-add.html', Context(c),
                               context_instance=RequestContext(request))
+
+def list_all_talks(request):
+    event = Evento.objects.get(site__id__exact=settings.SITE_ID)
+    trilhas = Trilha.objects.filter(evento=event)
+
+    improve = []
+    for t in trilhas:
+        talks = Trabalho.objects.filter(trilha=t)
+        aux = {'trilha':t.nome, 'talks':talks}
+        improve.append(aux)
+
+    c = {'improve': improve,}
+    return render_to_response('eventos/improve.html', Context(c),
+                              context_instance=RequestContext(request))