diff --git a/doc/requirements.txt b/doc/requirements.txt
index ef14b62..9e6c41d 100644
--- a/doc/requirements.txt
+++ b/doc/requirements.txt
@@ -32,5 +32,10 @@ exemple) et sur une proposition de conférence
- Profil des intervenenants: nom, prénom, mail, date et heure d'arrivée,
date et heure de départ, moyen de transport, type de connectique,
hébergement,
+- Possibilité aux intervenants de récupérer leur billet d’avion
+électronique
+- Aide au planning : affichage des contraintes des intervenants, qui est
+disponible pour un time slot donnée, …
+- Stand ?
Le code de l'annéed ernière est là : https://github.com/toulibre/cdl-site
diff --git a/ponyconf/templates/base.html b/ponyconf/templates/base.html
index 4b24c01..70b12c2 100644
--- a/ponyconf/templates/base.html
+++ b/ponyconf/templates/base.html
@@ -43,8 +43,11 @@
- Home
+ {% if request.user.is_authenticated %}
- Talks
- Topics
+ - Speakers
+ {% endif %}
{% block navbar-left %}{% endblock %}
diff --git a/proposals/migrations/0003_auto_20160608_2002.py b/proposals/migrations/0003_auto_20160608_2002.py
new file mode 100644
index 0000000..9485778
--- /dev/null
+++ b/proposals/migrations/0003_auto_20160608_2002.py
@@ -0,0 +1,31 @@
+# -*- coding: utf-8 -*-
+# Generated by Django 1.9.6 on 2016-06-08 20:02
+from __future__ import unicode_literals
+
+import django.contrib.sites.managers
+from django.db import migrations
+import django.db.models.manager
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('proposals', '0002_topic_slug'),
+ ]
+
+ operations = [
+ migrations.AlterModelManagers(
+ name='talk',
+ managers=[
+ ('objects', django.db.models.manager.Manager()),
+ ('on_site', django.contrib.sites.managers.CurrentSiteManager()),
+ ],
+ ),
+ migrations.AlterModelManagers(
+ name='topic',
+ managers=[
+ ('objects', django.db.models.manager.Manager()),
+ ('on_site', django.contrib.sites.managers.CurrentSiteManager()),
+ ],
+ ),
+ ]
diff --git a/proposals/models.py b/proposals/models.py
index 9aa0836..3f06e88 100644
--- a/proposals/models.py
+++ b/proposals/models.py
@@ -1,5 +1,6 @@
from django.db import models
from django.contrib.sites.models import Site
+from django.contrib.sites.managers import CurrentSiteManager
from autoslug import AutoSlugField
@@ -12,6 +13,9 @@ __all__ = [ 'Topic', 'Talk', 'Speach' ]
class Topic(models.Model):
site = models.ForeignKey(Site, on_delete=models.CASCADE)
+
+ objects = models.Manager()
+ on_site = CurrentSiteManager()
name = models.CharField(max_length=128, verbose_name='Name', unique=True)
slug = AutoSlugField(populate_from='name', unique=True)
@@ -24,6 +28,9 @@ class Talk(models.Model):
site = models.ForeignKey(Site, on_delete=models.CASCADE)
+ objects = models.Manager()
+ on_site = CurrentSiteManager()
+
speakers = models.ManyToManyField(User, through='Speach')
title = models.CharField(max_length=128, verbose_name='Title')
slug = AutoSlugField(populate_from='title', unique=True)
diff --git a/proposals/templates/proposals/speaker_list.html b/proposals/templates/proposals/speaker_list.html
new file mode 100644
index 0000000..70c923b
--- /dev/null
+++ b/proposals/templates/proposals/speaker_list.html
@@ -0,0 +1,19 @@
+{% extends 'base.html' %}
+
+{% block speakertab %} class="active"{% endblock %}
+
+{% block content %}
+
+Speakers:
+
+
+
+{% endblock %}
diff --git a/proposals/urls.py b/proposals/urls.py
index 3668145..20d2124 100644
--- a/proposals/urls.py
+++ b/proposals/urls.py
@@ -12,5 +12,6 @@ urlpatterns = [
url(r'^talk/by-topic/(?P[-\w]+)$', views.talk_list_by_topic, name='list-talks-by-topic'),
url(r'^talk/by-speaker/(?P[\w.@+-]+)$', views.talk_list_by_speaker, name='list-talks-by-speaker'),
url(r'^topic/$', views.topic_list, name='list-topics'),
+ url(r'^speakers/$', views.speaker_list, name='list-speakers'),
url(r'^user/(?P[\w.@+-]+)$', views.user_details, name='show-user'),
]
diff --git a/proposals/views.py b/proposals/views.py
index 898275a..e0bc2f8 100644
--- a/proposals/views.py
+++ b/proposals/views.py
@@ -14,7 +14,7 @@ def home(request):
@login_required
def talk_list(request):
- talks = Talk.objects.filter(site=get_current_site(request))
+ talks = Talk.on_site.all()
mine = talks.filter(speakers=request.user)
others = talks.exclude(speakers=request.user)
return render(request, 'proposals/talks.html', {
@@ -34,7 +34,7 @@ def talk_list_by_topic(request, topic):
@login_required
def talk_list_by_speaker(request, speaker):
speaker = get_object_or_404(User, username=speaker)
- talks = Talk.objects.filter(site=get_current_site(request), speakers=speaker)
+ talks = Talk.on_site.filter(speakers=speaker)
return render(request, 'proposals/talk_list.html', {
'title': 'Talks with %s:' % (speaker.get_full_name() or speaker.username),
'talks': talks,
@@ -74,11 +74,19 @@ def talk_details(request, talk):
@login_required
def topic_list(request):
- topics = Topic.objects.filter(site=get_current_site(request))
+ topics = Topic.on_site.all()
return render(request, 'proposals/topic_list.html', {
'topics': topics,
})
+@login_required
+def speaker_list(request):
+ talks = Talk.on_site.all()
+ speakers = User.objects.filter(talks__in=talks) # FIXME
+ return render(request, 'proposals/speaker_list.html', {
+ 'speaker': speakers,
+ })
+
@login_required
def user_details(request, username):
user = get_object_or_404(User, username=username)