public program

This commit is contained in:
Élie Bouttier 2016-10-24 22:59:44 +02:00
parent df5e986fef
commit 726f20df71
4 changed files with 29 additions and 15 deletions

View File

@ -8,5 +8,6 @@ urlpatterns = [
url(r'^room/add/$', views.RoomCreate.as_view(), name='add-room'), url(r'^room/add/$', views.RoomCreate.as_view(), name='add-room'),
url(r'^room/(?P<slug>[-\w]+)/$', views.RoomDetail.as_view(), name='show-room'), url(r'^room/(?P<slug>[-\w]+)/$', views.RoomDetail.as_view(), name='show-room'),
url(r'^room/(?P<slug>[-\w]+)/edit/$', views.RoomUpdate.as_view(), name='edit-room'), url(r'^room/(?P<slug>[-\w]+)/edit/$', views.RoomUpdate.as_view(), name='edit-room'),
url(r'^program/$', views.program, name='program'), url(r'^program/$', views.program_pending, name='pending-program'),
url(r'^program/public/$', views.program_public, name='public-program'),
] ]

View File

@ -17,13 +17,18 @@ Event = namedtuple('Event', ['talk', 'row', 'rowcount'])
class Program: class Program:
def __init__(self, site, empty_rooms=False, talk_filter=None): def __init__(self, site, pending=False, empty_rooms=False, talk_filter=None):
self.site = site self.site = site
self.talks = Talk.objects.\ self.talks = Talk.objects.\
filter(site=site, room__isnull=False, start_date__isnull=False).\ filter(site=site, room__isnull=False, start_date__isnull=False).\
filter(Q(duration__gt=0) | Q(event__duration__gt=0)).\ filter(Q(duration__gt=0) | Q(event__duration__gt=0))
exclude(accepted=False).\
order_by('start_date') if pending:
self.talks = self.talks.exclude(accepted=False)
else:
self.talks = self.talks.filter(accepted=True)
self.talks = self.talks.order_by('start_date')
if talk_filter: if talk_filter:
self.talks = self.talks.filter(talk_filter) self.talks = self.talks.filter(talk_filter)

View File

@ -1,11 +1,11 @@
from django.shortcuts import render from django.shortcuts import render
from django.contrib.sites.shortcuts import get_current_site from django.contrib.sites.shortcuts import get_current_site
from django.views.generic import CreateView, DetailView, ListView, UpdateView from django.views.generic import CreateView, DetailView, ListView, UpdateView
from django.http import HttpResponse from django.http import HttpResponse, Http404
from ponyconf.mixins import OnSiteFormMixin from ponyconf.mixins import OnSiteFormMixin
from accounts.decorators import staff_required from accounts.decorators import orga_required, staff_required
from accounts.mixins import OrgaRequiredMixin, StaffRequiredMixin from accounts.mixins import OrgaRequiredMixin, StaffRequiredMixin
from proposals.models import Talk from proposals.models import Talk
@ -39,12 +39,20 @@ class RoomDetail(StaffRequiredMixin, RoomMixin, DetailView):
@staff_required @staff_required
def program(request): def program_pending(request):
program = Program(site=get_current_site(request)) output = request.GET.get('format', 'html')
f = request.GET.get('format') return program(request, pending=True, output=output)
if f == 'xml':
def program_public(request):
output = request.GET.get('format', 'html')
return program(request, pending=False, output=output)
def program(request, pending, output):
program = Program(site=get_current_site(request), pending=pending)
if output == 'html':
return render(request, 'planning/program.html', {'program': program})
elif output == 'xml':
return HttpResponse(program.as_xml(), content_type="application/xml") return HttpResponse(program.as_xml(), content_type="application/xml")
else: else:
return render(request, 'planning/program.html', { raise Http404("Format not available")
'program': program,
})

View File

@ -85,7 +85,7 @@
<a role="menuitem" tabindex="-1" href="{% url 'list-rooms' %}"><span class="glyphicon glyphicon-tent"></span>&nbsp;{% trans "Rooms" %}</a> <a role="menuitem" tabindex="-1" href="{% url 'list-rooms' %}"><span class="glyphicon glyphicon-tent"></span>&nbsp;{% trans "Rooms" %}</a>
</li> </li>
<li role="presentation"> <li role="presentation">
<a role="menuitem" tabindex="-1" href="{% url 'program' %}"><span class="glyphicon glyphicon-list-alt"></span>&nbsp;{% trans "Program" %}</a> <a role="menuitem" tabindex="-1" href="{% url 'pending-program' %}"><span class="glyphicon glyphicon-list-alt"></span>&nbsp;{% trans "Program" %}</a>
</li> </li>
</ul> </ul>
</li> </li>