File diff 5c57512b04ee → 6d0e5bc50884
symposion/schedule/views.py
Show inline comments
 
import json
 

	
 
from django.core.urlresolvers import reverse
 
from django.http import Http404, HttpResponse
 
from django.shortcuts import render, get_object_or_404, redirect
 
from django.template import loader, Context
 

	
 
from django.contrib.auth.decorators import login_required
 
from django.contrib import messages
 
from django.contrib.sites.models import Site
 

	
 
from symposion.schedule.forms import SlotEditForm
 
from symposion.schedule.forms import SlotEditForm, ScheduleSectionForm
 
from symposion.schedule.models import Schedule, Day, Slot, Presentation
 
from symposion.schedule.timetable import TimeTable
 

	
 

	
 
def fetch_schedule(slug):
 
    qs = Schedule.objects.all()
 

	
 
    if slug is None:
 
        if qs.count() > 1:
 
            raise Http404()
 
        schedule = next(iter(qs), None)
 
        if schedule is None:
...
 
@@ -72,52 +73,65 @@ def schedule_list(request, slug=None):
 
    ctx = {
 
        "schedule": schedule,
 
        "presentations": presentations,
 
    }
 
    return render(request, "schedule/schedule_list.html", ctx)
 

	
 

	
 
def schedule_list_csv(request, slug=None):
 
    schedule = fetch_schedule(slug)
 

	
 
    presentations = Presentation.objects.filter(section=schedule.section)
 
    presentations = presentations.exclude(cancelled=True).order_by("id")
 
    response = HttpResponse(content_type="text/csv")
 

	
 
    response = HttpResponse(mimetype="text/csv")
 
    if slug:
 
        file_slug = slug
 
    else:
 
        file_slug = "presentations"
 
    response["Content-Disposition"] = 'attachment; filename="%s.csv"' % file_slug
 

	
 
    response.write(loader.get_template("schedule/schedule_list.csv").render(Context({
 
        "presentations": presentations,
 

	
 
    })))
 
    return response
 

	
 

	
 
@login_required
 
def schedule_edit(request, slug=None):
 

	
 
    if not request.user.is_staff:
 
        raise Http404()
 

	
 
    schedule = fetch_schedule(slug)
 

	
 
    if request.method == "POST":
 
        form = ScheduleSectionForm(
 
            request.POST, request.FILES, schedule=schedule
 
        )
 
        if form.is_valid():
 
            if 'submit' in form.data:
 
                msg = form.build_schedule()
 
            elif 'delete' in form.data:
 
                msg = form.delete_schedule()
 
            messages.add_message(request, msg[0], msg[1])
 
    else:
 
        form = ScheduleSectionForm(schedule=schedule)
 
    days_qs = Day.objects.filter(schedule=schedule)
 
    days = [TimeTable(day) for day in days_qs]
 
    ctx = {
 
        "schedule": schedule,
 
        "days": days,
 
        "form": form
 
    }
 
    return render(request, "schedule/schedule_edit.html", ctx)
 

	
 

	
 
@login_required
 
def schedule_slot_edit(request, slug, slot_pk):
 

	
 
    if not request.user.is_staff:
 
        raise Http404()
 

	
 
    slot = get_object_or_404(Slot, day__schedule__section__slug=slug, pk=slot_pk)