Complete Meeting Materials page

* Tested with IETF 67 and 68 data.
 * For testing, c_sub_cut_off_date should set to future date, otherwise a Closed page will show.
 - Legacy-Id: 228
This commit is contained in:
comimom 2007-06-04 19:52:52 +00:00
parent 8ff20e3127
commit b73efa811a
6 changed files with 150 additions and 60 deletions

View file

@ -1 +1,11 @@
from django.db import models
#from django.db import models
from ietf.proceedings import models
#from ietf.proceedings.models import Meeting, MeetingVenue, WgMeetingSession, WgAgenda
#from ietf.proceedings.models import NonSession, NonSessionRef,SessionName
import datetime
# Create your models here. # Create your models here.

View file

@ -2,23 +2,7 @@ from django.conf.urls.defaults import *
from ietf.meeting import models, views from ietf.meeting import models, views
urlpatterns = patterns('', urlpatterns = patterns('',
(r'^$', views.showlist), (r'^(?P<meeting_num>\d+)/agenda.(?P<html_or_txt>\S+)$', views.show_html_agenda),
(r'^(?P<meeting_num>\d+)/materials.html$', views.show_html_materials),
(r'^(?P<meeting_num>\d+)/$', views.show),
(r'^(?P<meeting_num>\d+)/agenda.(?P<html_or_txt>\S+)$', views.show_html_agenda),
(r'^(?P<meeting_num>\d+)/materials.html$', views.show_html_materials),
# (r'^update/(?P<meeting_id>\d+)/$', views.update),
# (r'^new-(?P<type>(specific|generic|thirdpty))/$', views.new),
) )
#queryset = models.IprDetail.objects.all()
#archive = {'queryset':queryset, 'date_field': 'submitted_date', 'allow_empty':True }
#urlpatterns += patterns('django.views.generic.date_based',
# (r'^(?P<year>\d{4})/$', 'archive_year', archive),
# (r'^(?P<year>\d{4})/(?P<month>[a-z]{3})/$', 'archive_month', archive),
#)

View file

@ -1,39 +1,32 @@
# Create your views here. # Create your views here.
import models import models
from django.shortcuts import render_to_response as render from django.shortcuts import render_to_response as render
import django.newforms as forms from ietf.proceedings.models import Meeting, MeetingTime, WgMeetingSession, SessionName, NonSession, MeetingVenue, IESGHistory, WgAgenda, Minute, Proceeding
from django.utils.html import escape, linebreaks
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.views.generic.list_detail import object_list
from django.http import Http404 from django.http import Http404
from django.db.models import Q from django.db.models import Q
import datetime
def default(request):
"""Default page, with links to sub-pages"""
return render("meeting/list.html", {})
def showlist(request):
"""Display a list of existing disclosures"""
return meeting_list(request, 'meeting/list.html')
# don't hide Python's builtin list creation -- call this something else than 'list()'
def meeting_list(request, template):
""" Get A List of All Meetings That are in the system """
meetings = Meeting.objects.all()
return render(template,
{
'meetings' : meetings.order_by(* ['-start_date', ] ),
} )
# Details views
def show_html_materials(request, meeting_num=None): def show_html_materials(request, meeting_num=None):
begin_date = Proceeding.objects.get(meeting_num=meeting_num).sub_begin_date
cut_off_date = Proceeding.objects.get(meeting_num=meeting_num).sub_cut_off_date
cor_cut_off_date = Proceeding.objects.get(meeting_num=meeting_num).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})
# List of WG sessions and Plenary sessions # 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_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}) 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})
def show_html_agenda(request, meeting_num=None, html_or_txt=None): def show_html_agenda(request, meeting_num=None, html_or_txt=None):
try: try:
@ -78,5 +71,3 @@ def show_html_agenda(request, meeting_num=None, html_or_txt=None):
queryset_list_ads.sort(key=(lambda item: item.area.area_acronym.acronym)) queryset_list_ads.sort(key=(lambda item: item.area.area_acronym.acronym))
return object_list(request,queryset=queryset_list, template_name=template_file,allow_empty=True, extra_context={'qs_sun':queryset_list_sun, 'meeting_info':meeting_info, 'meeting_num':meeting_num, 'nonsession_info':nonsession_info, 'meetingvenue_info':meetingvenue_info, 'plenaryw_agenda':plenaryw_agenda, 'plenaryt_agenda':plenaryt_agenda, 'qs_ads':queryset_list_ads}) return object_list(request,queryset=queryset_list, template_name=template_file,allow_empty=True, extra_context={'qs_sun':queryset_list_sun, 'meeting_info':meeting_info, 'meeting_num':meeting_num, 'nonsession_info':nonsession_info, 'meetingvenue_info':meetingvenue_info, 'plenaryw_agenda':plenaryw_agenda, 'plenaryt_agenda':plenaryt_agenda, 'qs_ads':queryset_list_ads})
def show(request):
return 0

View file

@ -32,7 +32,7 @@ class ResolveAcronym(object):
else: else:
acronym_name = Acronym.objects.get(pk=self.group_acronym_id).name acronym_name = Acronym.objects.get(pk=self.group_acronym_id).name
if interim: if interim:
return acronym_name + " (interim)" return "i" + acronym
return acronym_name return acronym_name
def area(self): def area(self):
if self.irtf: if self.irtf:
@ -164,7 +164,6 @@ class SessionName(models.Model):
db_table = 'session_names' db_table = 'session_names'
class Admin: class Admin:
pass pass
class IESGHistory(models.Model): class IESGHistory(models.Model):
meeting = models.ForeignKey(Meeting, db_column='meeting_num', core=True) meeting = models.ForeignKey(Meeting, db_column='meeting_num', core=True)
area = models.ForeignKey(Area, db_column='area_acronym_id', core=True) area = models.ForeignKey(Area, db_column='area_acronym_id', core=True)
@ -228,7 +227,7 @@ class MeetingTime(models.Model):
an_br2_info = NonSession.objects.get(meeting=self.meeting, day_id=self.day_id, non_session_ref=5) an_br2_info = NonSession.objects.get(meeting=self.meeting, day_id=self.day_id, non_session_ref=5)
return "%s %s" % (an_br2_info.time_desc, an_br2_info.non_session_ref) return "%s %s" % (an_br2_info.time_desc, an_br2_info.non_session_ref)
def fbreak_info(self): def fbreak_info(self):
fbreak_info = NonSession.objects.get(meeting=self.meeting, day_id=5, non_session_ref=6) fbreak_info = NonSession.objects.get(meeting-self.meeting, day_id=5, non_session_ref=6)
return "%s %s" % (fbreak_info.time_desc, fbreak_info.non_session_ref) return "%s %s" % (fbreak_info.time_desc, fbreak_info.non_session_ref)
class Meta: class Meta:
db_table = 'meeting_times' db_table = 'meeting_times'
@ -289,7 +288,13 @@ class WgMeetingSession(models.Model, ResolveAcronym):
def agenda_file(self,interimvar=0): def agenda_file(self,interimvar=0):
irtfvar = 0 irtfvar = 0
if self.irtf: if self.irtf:
irtfvar = self.irtf irtfvar = self.group_acronym_id
if interimvar == 0:
try:
if self.interim:
interimvar = 1
except AttributeError:
interimvar = 0
try: try:
filename = WgAgenda.objects.get(meeting=self.meeting, group_acronym_id=self.group_acronym_id,irtf=irtfvar,interim=interimvar).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 dir = Proceeding.objects.get(meeting_num=self.meeting).dir_name
@ -300,12 +305,18 @@ class WgMeetingSession(models.Model, ResolveAcronym):
def minute_file(self,interimvar=0): def minute_file(self,interimvar=0):
irtfvar = 0 irtfvar = 0
if self.irtf: if self.irtf:
irtfvar = self.irtf irtfvar = self.group_acronym_id
if interimvar == 0:
try:
if self.interim:
interimvar = 1
except AttributeError:
interimvar = 0
try: try:
filename = Minute.objects.get(meeting=self.meeting, group_acronym_id=self.group_acronym_id,irtf=irtfvar,interim=interimvar).filename 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 dir = Proceeding.objects.get(meeting_num=self.meeting).dir_name
retvar = "%s/minutes/%s" % (dir,filename) retvar = "%s/minutes/%s" % (dir,filename)
except WgAgenda.DoesNotExist: except Minute.DoesNotExist:
retvar = "" retvar = ""
return retvar return retvar
def slides(self,interimvar=0): def slides(self,interimvar=0):
@ -314,9 +325,24 @@ class WgMeetingSession(models.Model, ResolveAcronym):
""" """
irtfvar = 0 irtfvar = 0
if self.irtf: if self.irtf:
irtfvar = self.irtf irtfvar = self.group_acronym_id
if interimvar == 0:
try:
if self.interim:
interimvar = 1
except AttributeError:
interimvar = 0
slides = Slide.objects.filter(meeting=self.meeting,group_acronym_id=self.group_acronym_id,irtf=irtfvar,interim=interimvar).order_by("order_num") slides = Slide.objects.filter(meeting=self.meeting,group_acronym_id=self.group_acronym_id,irtf=irtfvar,interim=interimvar).order_by("order_num")
return slides return slides
def interim_meeting (self):
if self.minute_file(1):
return True
elif self.agenda_file(1):
return True
elif self.slides(1):
return True
else:
return False
class Meta: class Meta:
db_table = 'wg_meeting_sessions' db_table = 'wg_meeting_sessions'
class Admin: class Admin:
@ -396,7 +422,7 @@ class Slide(models.Model, ResolveAcronym):
def file_loc(self): def file_loc(self):
dir = Proceeding.objects.get(meeting_num=self.meeting).dir_name dir = Proceeding.objects.get(meeting_num=self.meeting).dir_name
if self.slide_type_id==1: if self.slide_type_id==1:
return "%s/slides/%s-%s/sld1.htm" % (dir,self.acronym(),self.order_num) return "%s/slides/%s-%s/sld1.htm" % (dir,self.acronym(),self.slide_num)
else: else:
if self.slide_type_id == 2: if self.slide_type_id == 2:
ext = ".pdf" ext = ".pdf"
@ -408,7 +434,7 @@ class Slide(models.Model, ResolveAcronym):
ext = ".doc" ext = ".doc"
else: else:
ext = "" ext = ""
return "%s/slides/%s-%s%s" % (dir,self.acronym(),self.order_num,ext) return "%s/slides/%s-%s%s" % (dir,self.acronym(),self.slide_num,ext)
class Meta: class Meta:
db_table = 'slides' db_table = 'slides'
class Admin: class Admin:

View file

@ -4,9 +4,9 @@
<link rel="stylesheet" type="text/css" href="https://www.ietf.org/css/base.css" /> <link rel="stylesheet" type="text/css" href="https://www.ietf.org/css/base.css" />
<center> <center>
<h2>IETF {{ meeting_num }} Preliminary & Interim Materials</h2> <h2>IETF {{ meeting_num }} Preliminary & Interim Materials</h2>
<h4>Submission begin </h4> <h4>Submission began {{ begin_date|date:"F j, Y" }} </h4>
<h4>Submission cutoff odate: </h4> <h4>Submission cutoff odate: {{ cut_off_date|date:"F j, Y" }}</h4>
<h4>Corrections to submissions cutoff date: </h4> <h4>Corrections to submissions cutoff date:{{ cor_cut_off_date|date:"F j, Y" }} </h4>
<br> <br>
Updated as of {% now "r" %} Updated as of {% now "r" %}
<br><br> <br><br>
@ -15,7 +15,7 @@ Updated as of {% now "r" %}
{% for wgs in areas %} {% for wgs in areas %}
<table cellpadding="0" cellspacing="0" border="2" width="80%"> <table cellpadding="0" cellspacing="0" border="2" width="80%">
<tr> <tr>
<td colspan=2 bgcolor="#0911DC" valign="center"><font color="#FFFFFF"><center><br><h3><img src="https://www1.ietf.org/images/ib2.gif" width="100%" height=21><br>{{ wgs.grouper }}</h3></center></font> <td colspan=2 bgcolor="#0911DC" valign="center"><font color="#FFFFFF"><center><br><h3><img src="https://www.ietf.org/images/ib2.gif" width="100%" height=21><br>{{ wgs.grouper }}</h3></center></font>
</td> </td>
</tr> </tr>
</table> </table>
@ -37,6 +37,69 @@ Updated as of {% now "r" %}
{% endfor %} {% endfor %}
{% endfor %} {% endfor %}
<!--- Training Sessions --->
<table cellpadding="0" cellspacing="0" border="2" width="80%">
<tr>
<td colspan=2 bgcolor="#0911DC" valign="center"><font color="#FFFFFF"><center><br><h3><img src="https://www.ietf.org/images/ib2.gif" width="100%" height=21><br>Training</h3></center></font>
</td> </tr> </table>
{% for wg in training_list|dictsort:"acronym" %}
<table cellpadding="0" cellspacing="0" border="2" width="80%"> <tr><a name="wg-{{ wg.acronym }}"></a>
<td align="center" bgcolor="#DDFFDD" width="20%"><b>{{ wg.acronym|upper }}</b></td>
<td><table border="1" width="100%">
{% include "meeting/submission_status_snippet.html" %}
{% for slide in wg.slides %}
<tr><td><a href="http://www3.ietf.org/proceedings/{{ slide.file_loc }}">{{ slide.slide_name }}</a></td> </tr>
{% endfor %}
</table>
</td>
</tr>
</table>
{% endfor %}
<!--- End of Training Sessions --->
<!--- IRTF Sessions --->
<table cellpadding="0" cellspacing="0" border="2" width="80%">
<tr>
<td colspan=2 bgcolor="#0911DC" valign="center"><font color="#FFFFFF"><center><br><h3><img src="https://www.ietf.org/images/ib2.gif" width="100%" height=21><br>IRTF</h3></center></font>
</td>
</tr>
</table>
{% for wg in irtf_list|dictsort:"acronym" %}
<table cellpadding="0" cellspacing="0" border="2" width="80%">
<tr><a name="wg-{{ wg.acronym }}"></a>
<td align="center" bgcolor="#DDFFDD" width="20%"><b>{{ wg.acronym|upper }}</b><br>
{% if wg.agenda_file %}<a href="http://www3..ietf.org/proceedings/{{ wg.agenda_file }}">[Agenda]</a>{% endif %}{% if wg.minute_file %} <a href="http://www3.ietf.org/proceedings/{{ wg.minute_file }}">[Minutes]</a>{% endif %}</td>
<td><table border="1" width="100%">
{% include "meeting/submission_status_snippet.html" %}
{% for slide in wg.slides %}
<tr><td><a href="http://www3.ietf.org/proceedings/{{ slide.file_loc }}">{{ slide.slide_name }}</a></td>
</tr>
{% endfor %}
</table>
</td>
</tr>
</table>
{% endfor %}
<!--- End of IRTF Sessions --->
<!--- Interim Meetings --->
<table cellpadding="0" cellspacing="0" border="2" width="80%">
<tr>
<td colspan=2 bgcolor="#0911DC" valign="center"><font color="#FFFFFF"><center><br><h3><img src="https://www.ietf.org/images/ib2.gif" width="100%" height=21><br>Interim Meetings</h3></center></font>
</td>
</tr>
</table>
{% for wg in interim_list|dictsort:"acronym" %}
<table cellpadding="0" cellspacing="0" border="2" width="80%"> <tr><a name="wg-{{ wg.acronym }}"></a>
<td align="center" bgcolor="#DDFFDD" width="20%"><b>{{ wg.acronym|upper }}</b><br> {% if wg.agenda_file %}<a href="http://www3..ietf.org/proceedings/{{ wg.agenda_file }}">[Agenda]</a>{% endif %}{% if wg.minute_file %} <a href="http://www3.ietf.org/proceedings/{{ wg.minute_file }}">[Minutes]</a>{% endif %}</td>
<td><table border="1" width="100%">
{% include "meeting/submission_status_snippet.html" %}
{% for slide in wg.slides %}
<tr><td><a href="http://www3.ietf.org/proceedings/{{ slide.file_loc }}">{{ slide.slide_name }}</a></td> </tr>
{% endfor %}
</table>
</td>
</tr>
</table>
{% endfor %}
<!--- End of Imterim Meetings --->
</center> </center>
{% endblock %} {% endblock %}

View file

@ -0,0 +1,16 @@
{% extends "base.html" %}
{% block title %} IETF {{ meeting_num }} Preliminary & Interim Materials {% endblock %}
{% block content %}
<link rel="stylesheet" type="text/css" href="https://www.ietf.org/css/base.css" />
<center>
<h2>IETF {{ meeting_num }} Preliminary & Interim Materials</h2>
<h4>Submission began {{ begin_date|date:"F j, Y" }} </h4>
<h4>Submission cutoff odate: {{ cut_off_date|date:"F j, Y" }}</h4>
<h4>Corrections to submissions cutoff date:{{ cor_cut_off_date|date:"F j, Y" }} </h4>
</center>
<br>
<i>
The IETF {{ meeting_num }} Preliminary & Interim Materials page is now closed.<br>
You should be able to access the final version of IETF {{ meeting_num }} Proceedings via <a href="http://www.ietf.org/proceedings_directory.html">IETF Online Proceedings page</a>.<br>
</i>
{% endblock %}