PonyConf/planning/views.py

60 lines
1.8 KiB
Python
Raw Normal View History

2016-10-05 21:12:13 +00:00
from django.shortcuts import render
from django.contrib.sites.shortcuts import get_current_site
from django.views.generic import CreateView, DetailView, ListView, UpdateView
2016-10-24 20:59:44 +00:00
from django.http import HttpResponse, Http404
2016-10-05 21:12:13 +00:00
2016-10-19 21:36:15 +00:00
from ponyconf.mixins import OnSiteFormMixin
2016-10-24 20:59:44 +00:00
from accounts.decorators import orga_required, staff_required
2016-10-11 19:43:31 +00:00
from accounts.mixins import OrgaRequiredMixin, StaffRequiredMixin
2016-10-05 21:12:13 +00:00
2016-10-16 21:36:03 +00:00
from proposals.models import Talk
2016-10-05 21:12:13 +00:00
from .models import Room
from .forms import RoomForm
2016-10-16 21:36:03 +00:00
from .utils import Program
2016-10-05 21:12:13 +00:00
2016-10-05 21:12:13 +00:00
class RoomMixin(object):
def get_queryset(self):
return Room.objects.filter(site=get_current_site(self.request)).all()
class RoomFormMixin(OnSiteFormMixin):
form_class = RoomForm
2016-10-11 19:43:31 +00:00
class RoomList(StaffRequiredMixin, RoomMixin, ListView):
2016-10-05 21:12:13 +00:00
pass
class RoomCreate(OrgaRequiredMixin, RoomMixin, RoomFormMixin, CreateView):
model = Room
class RoomUpdate(OrgaRequiredMixin, RoomMixin, RoomFormMixin, UpdateView):
pass
2016-10-11 19:43:31 +00:00
class RoomDetail(StaffRequiredMixin, RoomMixin, DetailView):
pass
2016-10-16 21:36:03 +00:00
2016-10-16 21:56:51 +00:00
@staff_required
2016-10-24 20:59:44 +00:00
def program_pending(request):
output = request.GET.get('format', 'html')
2016-11-12 12:56:21 +00:00
return program(request, pending=True, output=output, html_template='schedule.html', cache=False)
2016-10-31 22:42:07 +00:00
2016-10-24 20:59:44 +00:00
def program_public(request):
output = request.GET.get('format', 'html')
return program(request, pending=False, output=output)
2016-10-31 22:42:07 +00:00
def program(request, pending=False, output='html', html_template='public-program.html', cache=True):
program = Program(site=get_current_site(request), pending=pending, cache=cache)
2016-10-24 20:59:44 +00:00
if output == 'html':
2016-11-12 12:56:21 +00:00
return render(request, 'planning/' + html_template, {'program': program.render('html')})
2016-10-24 20:59:44 +00:00
elif output == 'xml':
2016-10-31 22:42:07 +00:00
return HttpResponse(program.render('xml'), content_type="application/xml")
2016-10-24 20:35:56 +00:00
else:
2016-10-24 20:59:44 +00:00
raise Http404("Format not available")