# Copyright The IETF Trust 2007, All Rights Reserved # Create your views here. #import models from django.shortcuts import render_to_response as render, get_object_or_404 from ietf.proceedings.models import Meeting, MeetingTime, WgMeetingSession, NonSession, MeetingVenue, IESGHistory, Proceeding, Switches from django.views.generic.list_detail import object_list from django.http import HttpResponseRedirect, HttpResponsePermanentRedirect, Http404, HttpResponse from django.core.urlresolvers import reverse from django.db.models import Q from django.template import RequestContext from django.template.loader import render_to_string from django.conf import settings import datetime def show_html_materials(request, meeting_num=None): proceeding = get_object_or_404(Proceeding, meeting_num=meeting_num) begin_date = proceeding.sub_begin_date cut_off_date = proceeding.sub_cut_off_date cor_cut_off_date = proceeding.c_sub_cut_off_date now = datetime.date.today() if now > cor_cut_off_date: return render("meeting/list_closed.html",{'meeting_num':meeting_num,'begin_date':begin_date, 'cut_off_date':cut_off_date, 'cor_cut_off_date':cor_cut_off_date}) sub_began = 0 if now > begin_date: sub_began = 1 # List of WG sessions and Plenary sessions queryset_list = WgMeetingSession.objects.filter(Q(meeting=meeting_num, group_acronym_id__gte = -2, status_id=4), Q(irtf__isnull=True) | Q(irtf=0)) queryset_irtf = WgMeetingSession.objects.filter(meeting=meeting_num, group_acronym_id__gte = -2, status_id=4, irtf__gt=0) queryset_interim = [] queryset_training = [] for item in list(WgMeetingSession.objects.filter(meeting=meeting_num)): if item.interim_meeting(): item.interim=1 queryset_interim.append(item) if item.group_acronym_id < -2: if item.slides(): queryset_training.append(item) return object_list(request,queryset=queryset_list, template_name="meeting/list.html",allow_empty=True, extra_context={'meeting_num':meeting_num,'irtf_list':queryset_irtf, 'interim_list':queryset_interim, 'training_list':queryset_training, 'begin_date':begin_date, 'cut_off_date':cut_off_date, 'cor_cut_off_date':cor_cut_off_date,'sub_began':sub_began}) def current_materials(request): meeting = Meeting.objects.order_by('-meeting_num')[0] return HttpResponseRedirect( reverse(show_html_materials, args=[meeting.meeting_num]) ) def get_plenary_agenda(meeting_num, id): try: plenary_agenda_file = settings.AGENDA_PATH + WgMeetingSession.objects.get(meeting=meeting_num,group_acronym_id=id).agenda_file() try: f = open(plenary_agenda_file) plenary_agenda = f.read() f.close() return plenary_agenda except IOError: return "THE AGENDA HAS NOT BEEN UPLOADED YET" except WgMeetingSession.DoesNotExist: return "The Plenary has not been scheduled" def agenda_info(num=None): if not num: num = list(Meeting.objects.all())[-1].meeting_num timeslots = MeetingTime.objects.select_related().filter(meeting=num).order_by("day_id", "time_desc") update = get_object_or_404(Switches,id=1) meeting=get_object_or_404(Meeting, meeting_num=num) venue = get_object_or_404(MeetingVenue, meeting_num=num) ads = list(IESGHistory.objects.select_related().filter(meeting=num)) if not ads: ads = list(IESGHistory.objects.select_related().filter(meeting=str(int(num)-1))) ads.sort(key=(lambda item: item.area.area_acronym.acronym)) plenaryw_agenda = get_plenary_agenda(num, -1) plenaryt_agenda = get_plenary_agenda(num, -2) return timeslots, update, meeting, venue, ads, plenaryw_agenda, plenaryt_agenda def html_agenda(request, num=None): timeslots, update, meeting, venue, ads, plenaryw_agenda, plenaryt_agenda = agenda_info(num) user_agent = request.META["HTTP_USER_AGENT"] print user_agent if "iPhone" in user_agent: template = "meeting/m_agenda.html" else: template = "meeting/agenda.html" return render(template, {"timeslots":timeslots, "update":update, "meeting":meeting, "venue":venue, "ads":ads, "plenaryw_agenda":plenaryw_agenda, "plenaryt_agenda":plenaryt_agenda, }, RequestContext(request)) def text_agenda(request, num=None): timeslots, update, meeting, venue, ads, plenaryw_agenda, plenaryt_agenda = agenda_info(num) plenaryw_agenda = " "+plenaryw_agenda.strip().replace("\n", "\n ") plenaryt_agenda = " "+plenaryt_agenda.strip().replace("\n", "\n ") return HttpResponse(render_to_string("meeting/agenda.txt", {"timeslots":timeslots, "update":update, "meeting":meeting, "venue":venue, "ads":ads, "plenaryw_agenda":plenaryw_agenda, "plenaryt_agenda":plenaryt_agenda, }, RequestContext(request)), mimetype="text/plain")