From 27edcb2b3e4bb8b3471fe8ab708ba4a1431e55d8 Mon Sep 17 00:00:00 2001 From: Michael Lee Date: Fri, 1 Jun 2007 04:10:39 +0000 Subject: [PATCH] * Add meeting materials list page * For testing, the page lists meeting materials regardless the submission cut off date. * Need to add Training sessions, IRTF RGs, and Interim WGs - Legacy-Id: 203 --- ietf/iesg/views.py | 4 +- ietf/meeting/views.py | 5 +- ietf/proceedings/models.py | 59 ++++++++++++++++++- ietf/templates/iesg/ietf_doc.html | 2 +- ietf/templates/meeting/list.html | 57 +++++++++++------- .../meeting/submission_status_snippet.html | 33 +++++++++++ 6 files changed, 133 insertions(+), 27 deletions(-) create mode 100644 ietf/templates/meeting/submission_status_snippet.html diff --git a/ietf/iesg/views.py b/ietf/iesg/views.py index 91e616df1..d072bbf9d 100644 --- a/ietf/iesg/views.py +++ b/ietf/iesg/views.py @@ -19,8 +19,8 @@ def wgdocs(request,cat): queryset_list = InternetDraft.objects.filter(b_approve_date__gte = date_threshold, intended_status__in=[1,2,6,7],idinternal__via_rfc_editor=0).order_by("-b_approve_date") queryset_list_doc = InternetDraft.objects.filter(b_approve_date__gte = date_threshold, intended_status__in=[3,5],idinternal__via_rfc_editor=0).order_by("-b_approve_date") elif cat == 'previous': - queryset_list = InternetDraft.objects.filter(b_approve_date__lt = date_threshold, b_approve_date__gte = '1995-1-1', intended_status__in=[1,2,6,7]).order_by("-b_approve_date") - queryset_list_doc = InternetDraft.objects.filter(b_approve_date__lt = date_threshold, b_approve_date__gte = '1995-1-1', intended_status__in=[3,5]).order_by("-b_approve_date") + queryset_list = InternetDraft.objects.filter(b_approve_date__lt = date_threshold, b_approve_date__gte = '1998-10-15', intended_status__in=[1,2,6,7]).order_by("-b_approve_date") + queryset_list_doc = InternetDraft.objects.filter(b_approve_date__lt = date_threshold, b_approve_date__gte = '1998-10-15', intended_status__in=[3,5]).order_by("-b_approve_date") else: raise Http404 return object_list(request, queryset=queryset_list, template_name='iesg/ietf_doc.html', allow_empty=True, extra_context={'object_list_doc':queryset_list_doc, 'is_recent':is_recent }) diff --git a/ietf/meeting/views.py b/ietf/meeting/views.py index 7f6323e00..a36d3cfe8 100644 --- a/ietf/meeting/views.py +++ b/ietf/meeting/views.py @@ -7,6 +7,7 @@ import ietf.utils from ietf.proceedings.models import Meeting, MeetingTime, WgMeetingSession, SessionName, NonSession, MeetingVenue, IESGHistory from django.views.generic.list_detail import object_list from django.http import Http404 +from django.db.models import Q def default(request): """Default page, with links to sub-pages""" @@ -30,7 +31,9 @@ def meeting_list(request, template): # Details views def show_html_materials(request, meeting_num=None): - return render("meeting/list.html",{}) + # 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)) + return object_list(request,queryset=queryset_list, template_name="meeting/list.html",allow_empty=True, extra_context={'meeting_num':meeting_num}) def show_html_agenda(request, meeting_num=None, html_or_txt=None): try: diff --git a/ietf/proceedings/models.py b/ietf/proceedings/models.py index 819136f68..3f8412c26 100644 --- a/ietf/proceedings/models.py +++ b/ietf/proceedings/models.py @@ -37,12 +37,29 @@ class ResolveAcronym(object): def area(self): if self.irtf: area = "irtf" + elif self.group_acronym_id < 0 and self.group_acronym_id > -3: + area = "1plenary" + elif self.group_acronym_id < -2: + area = "ztrain" else: try: area = AreaGroup.objects.get(group=self.group_acronym_id).area.area_acronym.acronym except AreaGroup.DoesNotExist: area = "" return area + def area_name(self): + if self.irtf: + area_name = "IRTF" + elif self.group_acronym_id < 0 and self.group_acronym_id > -3: + area_name = "Plenary Sessions" + elif self.group_acronym_id < -2: + area_name = "Training" + else: + try: + area_name = AreaGroup.objects.get(group=self.group_acronym_id).area.area_acronym.name + except AreaGroup.DoesNotExist: + area_name = "" + return area_name def isWG(self): if self.irtf: return False @@ -268,17 +285,37 @@ class WgMeetingSession(models.Model, ResolveAcronym): combined_time_id2 = models.ForeignKey(MeetingTime, db_column='combined_time_id2', null=True, blank=True, related_name='now5') def __str__(self): return "%s at %s" % (self.acronym(), self.meeting) - def agenda_file(self): + def agenda_file(self,interimvar=0): irtfvar = 0 if self.irtf: irtfvar = self.irtf try: - filename = WgAgenda.objects.get(meeting=self.meeting, group_acronym_id=self.group_acronym_id,irtf=irtfvar,interim=0).filename + filename = WgAgenda.objects.get(meeting=self.meeting, group_acronym_id=self.group_acronym_id,irtf=irtfvar,interim=interimvar).filename dir = Proceeding.objects.get(meeting_num=self.meeting).dir_name retvar = "%s/agenda/%s" % (dir,filename) except WgAgenda.DoesNotExist: retvar = "" return retvar + def minute_file(self,interimvar=0): + irtfvar = 0 + if self.irtf: + irtfvar = self.irtf + try: + filename = Minute.objects.get(meeting=self.meeting, group_acronym_id=self.group_acronym_id,irtf=irtfvar,interim=interimvar).filename + dir = Proceeding.objects.get(meeting_num=self.meeting).dir_name + retvar = "%s/minutes/%s" % (dir,filename) + except WgAgenda.DoesNotExist: + retvar = "" + return retvar + def slides(self,interimvar=0): + """ + Get all slides of this session. + """ + irtfvar = 0 + if self.irtf: + irtfvar = self.irtf + slides = Slide.objects.filter(meeting=self.meeting,group_acronym_id=self.group_acronym_id,irtf=irtfvar,interim=interimvar).order_by("order_num") + return slides class Meta: db_table = 'wg_meeting_sessions' class Admin: @@ -299,7 +336,7 @@ class WgAgenda(models.Model, ResolveAcronym): class Minute(models.Model, ResolveAcronym): meeting = models.ForeignKey(Meeting, db_column='meeting_num') - group_acronym = models.ForeignKey(Acronym, raw_id_admin=True) + group_acronym_id = models.IntegerField() filename = models.CharField(blank=True, maxlength=255) irtf = models.BooleanField() interim = models.BooleanField() @@ -355,6 +392,22 @@ class Slide(models.Model, ResolveAcronym): in_q = models.IntegerField(null=True, blank=True) def __str__(self): return "IETF%d: %s slides (%s)" % (self.meeting_id, self.acronym(), self.slide_name) + def file_loc(self): + dir = Proceeding.objects.get(meeting_num=self.meeting).dir_name + if self.slide_type_id==1: + return "%s/slides/%s-%s/sld1.htm" % (dir,self.acronym(),self.order_num) + else: + if self.slide_type_id == 2: + ext = ".pdf" + elif self.slide_type_id == 3: + ext = ".txt" + elif self.slide_type_id == 4: + ext = ".ppt" + elif self.slide_type_id == 5: + ext = ".doc" + else: + ext = "" + return "%s/slides/%s-%s%s" % (dir,self.acronym(),self.order_num,ext) class Meta: db_table = 'slides' class Admin: diff --git a/ietf/templates/iesg/ietf_doc.html b/ietf/templates/iesg/ietf_doc.html index 48eea7765..5337c84b4 100644 --- a/ietf/templates/iesg/ietf_doc.html +++ b/ietf/templates/iesg/ietf_doc.html @@ -31,7 +31,7 @@ This page contains links to all IESG Protocol, Document, and Working Group Actio Date Sent: {{ date.grouper }} {% endfor %} diff --git a/ietf/templates/meeting/list.html b/ietf/templates/meeting/list.html index fdfcc7f86..ce8eb5887 100644 --- a/ietf/templates/meeting/list.html +++ b/ietf/templates/meeting/list.html @@ -1,25 +1,42 @@ {% extends "base.html" %} -{% block title %} Meetings {% endblock %} +{% block title %} IETF {{ meeting_num }} Preliminary & Interim Materials {% endblock %} {% block content %} + +
+

IETF {{ meeting_num }} Preliminary & Interim Materials

+

Submission begin

+

Submission cutoff odate:

+

Corrections to submissions cutoff date:

+
+Updated as of {% now "r" %} +

-

The following meeting are in chronological order

- - - - -{% for meeting in meetings %} - - - - - -{% endfor %} +{% regroup object_list|dictsort:"area" by area_name as areas %} + {% for wgs in areas %} +
Meeting City Agenda Minutes Materials
{{ meeting.city}} ({{ meeting.meeting_num }}) HTML · - Text - - HTML · - Text - - Materials -
+ + + +


{{ wgs.grouper }}

+
+ {% for wg in wgs.list|dictsort:"acronym" %} + + + + + +
{{ wg.acronym|upper }}
+ {% if wg.agenda_file %}[Agenda]{% endif %}{% if wg.minute_file %} [Minutes]{% endif %}
+{% include "meeting/submission_status_snippet.html" %} + {% for slide in wg.slides %} + + + {% endfor %} +
{{ slide.slide_name }}
+
+ {% endfor %} + {% endfor %} + +
{% endblock %} diff --git a/ietf/templates/meeting/submission_status_snippet.html b/ietf/templates/meeting/submission_status_snippet.html new file mode 100644 index 000000000..f11e692b1 --- /dev/null +++ b/ietf/templates/meeting/submission_status_snippet.html @@ -0,0 +1,33 @@ + {% if wg.agenda_file and wg.minute_file and wg.slides %} + Presentation files received, agenda received, minutes received + {% else %} + {% if not wg.agenda_file and not wg.minute_file and not wg.slides %} + No presendtatio files, no agenda, no minutes + {% else %} + {% if not wg.agenda_file and wg.minute_file and not wg.slides %} + No presentation files, no agenda, minutes received + {% else %} + {% if wg.agenda_file and not wg.minute_file and not wg.slides %} + No presentation files, no minute, agenda received + {% else %} + {% if wg.agenda_file and wg.minute_file and not wg.slides %} + No presentation files, agenda received, minutes received + {% else %} + {% if not wg.agenda_file and not wg.minute_file and wg.slides %} + Presentation files received, no agenda, no minutes + {% else %} + {% if not wg.agenda_file and wg.minute_file and wg.slides %} + Presentation files received, no agenda, minutes received + {% else %} + {% if wg.agenda_file and not wg.minute_file and wg.slides %} + Presentation files received, agenda received, no minutes + {% else %} + Unknown Status + {% endif %} + {% endif %} + {% endif %} + {% endif %} + {% endif %} + {% endif %} + {% endif %} + {% endif %}