Skip to content

Commit b73efa8

Browse files
author
comimom
committed
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
1 parent 8ff20e3 commit b73efa8

6 files changed

Lines changed: 150 additions & 60 deletions

File tree

ietf/meeting/models.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,11 @@
1+
from django.db import models
2+
#from django.db import models
3+
4+
from ietf.proceedings import models
5+
#from ietf.proceedings.models import Meeting, MeetingVenue, WgMeetingSession, WgAgenda
6+
#from ietf.proceedings.models import NonSession, NonSessionRef,SessionName
7+
8+
import datetime
9+
10+
111
# Create your models here.

ietf/meeting/urls.py

Lines changed: 2 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -2,23 +2,7 @@
22
from ietf.meeting import models, views
33

44
urlpatterns = patterns('',
5-
(r'^$', views.showlist),
6-
7-
(r'^(?P<meeting_num>\d+)/$', views.show),
8-
(r'^(?P<meeting_num>\d+)/agenda.(?P<html_or_txt>\S+)$', views.show_html_agenda),
9-
(r'^(?P<meeting_num>\d+)/materials.html$', views.show_html_materials),
10-
11-
12-
# (r'^update/(?P<meeting_id>\d+)/$', views.update),
13-
# (r'^new-(?P<type>(specific|generic|thirdpty))/$', views.new),
5+
(r'^(?P<meeting_num>\d+)/agenda.(?P<html_or_txt>\S+)$', views.show_html_agenda),
6+
(r'^(?P<meeting_num>\d+)/materials.html$', views.show_html_materials),
147
)
158

16-
#queryset = models.IprDetail.objects.all()
17-
#archive = {'queryset':queryset, 'date_field': 'submitted_date', 'allow_empty':True }
18-
19-
#urlpatterns += patterns('django.views.generic.date_based',
20-
# (r'^(?P<year>\d{4})/$', 'archive_year', archive),
21-
# (r'^(?P<year>\d{4})/(?P<month>[a-z]{3})/$', 'archive_month', archive),
22-
#)
23-
24-

ietf/meeting/views.py

Lines changed: 19 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,39 +1,32 @@
11
# Create your views here.
22
import models
33
from django.shortcuts import render_to_response as render
4-
import django.newforms as forms
5-
from django.utils.html import escape, linebreaks
6-
import ietf.utils
7-
from ietf.proceedings.models import Meeting, MeetingTime, WgMeetingSession, SessionName, NonSession, MeetingVenue, IESGHistory
4+
from ietf.proceedings.models import Meeting, MeetingTime, WgMeetingSession, SessionName, NonSession, MeetingVenue, IESGHistory, WgAgenda, Minute, Proceeding
85
from django.views.generic.list_detail import object_list
96
from django.http import Http404
107
from django.db.models import Q
11-
12-
def default(request):
13-
"""Default page, with links to sub-pages"""
14-
return render("meeting/list.html", {})
15-
16-
def showlist(request):
17-
"""Display a list of existing disclosures"""
18-
return meeting_list(request, 'meeting/list.html')
19-
20-
21-
# don't hide Python's builtin list creation -- call this something else than 'list()'
22-
def meeting_list(request, template):
23-
""" Get A List of All Meetings That are in the system """
24-
meetings = Meeting.objects.all()
25-
26-
return render(template,
27-
{
28-
'meetings' : meetings.order_by(* ['-start_date', ] ),
29-
} )
30-
31-
# Details views
8+
import datetime
329

3310
def show_html_materials(request, meeting_num=None):
11+
begin_date = Proceeding.objects.get(meeting_num=meeting_num).sub_begin_date
12+
cut_off_date = Proceeding.objects.get(meeting_num=meeting_num).sub_cut_off_date
13+
cor_cut_off_date = Proceeding.objects.get(meeting_num=meeting_num).c_sub_cut_off_date
14+
now = datetime.date.today()
15+
if now > cor_cut_off_date:
16+
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})
3417
# List of WG sessions and Plenary sessions
3518
queryset_list = WgMeetingSession.objects.filter(Q(meeting=meeting_num, group_acronym_id__gte = -2, status_id=4), Q(irtf__isnull=True) | Q(irtf=0))
36-
return object_list(request,queryset=queryset_list, template_name="meeting/list.html",allow_empty=True, extra_context={'meeting_num':meeting_num})
19+
queryset_irtf = WgMeetingSession.objects.filter(meeting=meeting_num, group_acronym_id__gte = -2, status_id=4, irtf__gt=0)
20+
queryset_interim = []
21+
queryset_training = []
22+
for item in list(WgMeetingSession.objects.filter(meeting=meeting_num)):
23+
if item.interim_meeting():
24+
item.interim=1
25+
queryset_interim.append(item)
26+
if item.group_acronym_id < -2:
27+
if item.slides():
28+
queryset_training.append(item)
29+
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})
3730

3831
def show_html_agenda(request, meeting_num=None, html_or_txt=None):
3932
try:
@@ -78,5 +71,3 @@ def show_html_agenda(request, meeting_num=None, html_or_txt=None):
7871
queryset_list_ads.sort(key=(lambda item: item.area.area_acronym.acronym))
7972
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})
8073

81-
def show(request):
82-
return 0

ietf/proceedings/models.py

Lines changed: 35 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ def acronym_name(self):
3232
else:
3333
acronym_name = Acronym.objects.get(pk=self.group_acronym_id).name
3434
if interim:
35-
return acronym_name + " (interim)"
35+
return "i" + acronym
3636
return acronym_name
3737
def area(self):
3838
if self.irtf:
@@ -164,7 +164,6 @@ class Meta:
164164
db_table = 'session_names'
165165
class Admin:
166166
pass
167-
168167
class IESGHistory(models.Model):
169168
meeting = models.ForeignKey(Meeting, db_column='meeting_num', core=True)
170169
area = models.ForeignKey(Area, db_column='area_acronym_id', core=True)
@@ -228,7 +227,7 @@ def an_br2_info(self):
228227
an_br2_info = NonSession.objects.get(meeting=self.meeting, day_id=self.day_id, non_session_ref=5)
229228
return "%s %s" % (an_br2_info.time_desc, an_br2_info.non_session_ref)
230229
def fbreak_info(self):
231-
fbreak_info = NonSession.objects.get(meeting=self.meeting, day_id=5, non_session_ref=6)
230+
fbreak_info = NonSession.objects.get(meeting-self.meeting, day_id=5, non_session_ref=6)
232231
return "%s %s" % (fbreak_info.time_desc, fbreak_info.non_session_ref)
233232
class Meta:
234233
db_table = 'meeting_times'
@@ -289,7 +288,13 @@ def __str__(self):
289288
def agenda_file(self,interimvar=0):
290289
irtfvar = 0
291290
if self.irtf:
292-
irtfvar = self.irtf
291+
irtfvar = self.group_acronym_id
292+
if interimvar == 0:
293+
try:
294+
if self.interim:
295+
interimvar = 1
296+
except AttributeError:
297+
interimvar = 0
293298
try:
294299
filename = WgAgenda.objects.get(meeting=self.meeting, group_acronym_id=self.group_acronym_id,irtf=irtfvar,interim=interimvar).filename
295300
dir = Proceeding.objects.get(meeting_num=self.meeting).dir_name
@@ -300,12 +305,18 @@ def agenda_file(self,interimvar=0):
300305
def minute_file(self,interimvar=0):
301306
irtfvar = 0
302307
if self.irtf:
303-
irtfvar = self.irtf
308+
irtfvar = self.group_acronym_id
309+
if interimvar == 0:
310+
try:
311+
if self.interim:
312+
interimvar = 1
313+
except AttributeError:
314+
interimvar = 0
304315
try:
305316
filename = Minute.objects.get(meeting=self.meeting, group_acronym_id=self.group_acronym_id,irtf=irtfvar,interim=interimvar).filename
306317
dir = Proceeding.objects.get(meeting_num=self.meeting).dir_name
307318
retvar = "%s/minutes/%s" % (dir,filename)
308-
except WgAgenda.DoesNotExist:
319+
except Minute.DoesNotExist:
309320
retvar = ""
310321
return retvar
311322
def slides(self,interimvar=0):
@@ -314,9 +325,24 @@ def slides(self,interimvar=0):
314325
"""
315326
irtfvar = 0
316327
if self.irtf:
317-
irtfvar = self.irtf
328+
irtfvar = self.group_acronym_id
329+
if interimvar == 0:
330+
try:
331+
if self.interim:
332+
interimvar = 1
333+
except AttributeError:
334+
interimvar = 0
318335
slides = Slide.objects.filter(meeting=self.meeting,group_acronym_id=self.group_acronym_id,irtf=irtfvar,interim=interimvar).order_by("order_num")
319336
return slides
337+
def interim_meeting (self):
338+
if self.minute_file(1):
339+
return True
340+
elif self.agenda_file(1):
341+
return True
342+
elif self.slides(1):
343+
return True
344+
else:
345+
return False
320346
class Meta:
321347
db_table = 'wg_meeting_sessions'
322348
class Admin:
@@ -396,7 +422,7 @@ def __str__(self):
396422
def file_loc(self):
397423
dir = Proceeding.objects.get(meeting_num=self.meeting).dir_name
398424
if self.slide_type_id==1:
399-
return "%s/slides/%s-%s/sld1.htm" % (dir,self.acronym(),self.order_num)
425+
return "%s/slides/%s-%s/sld1.htm" % (dir,self.acronym(),self.slide_num)
400426
else:
401427
if self.slide_type_id == 2:
402428
ext = ".pdf"
@@ -408,7 +434,7 @@ def file_loc(self):
408434
ext = ".doc"
409435
else:
410436
ext = ""
411-
return "%s/slides/%s-%s%s" % (dir,self.acronym(),self.order_num,ext)
437+
return "%s/slides/%s-%s%s" % (dir,self.acronym(),self.slide_num,ext)
412438
class Meta:
413439
db_table = 'slides'
414440
class Admin:

ietf/templates/meeting/list.html

Lines changed: 68 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,9 @@
44
<link rel="stylesheet" type="text/css" href="https://www.ietf.org/css/base.css" />
55
<center>
66
<h2>IETF {{ meeting_num }} Preliminary & Interim Materials</h2>
7-
<h4>Submission begin </h4>
8-
<h4>Submission cutoff odate: </h4>
9-
<h4>Corrections to submissions cutoff date: </h4>
7+
<h4>Submission began {{ begin_date|date:"F j, Y" }} </h4>
8+
<h4>Submission cutoff odate: {{ cut_off_date|date:"F j, Y" }}</h4>
9+
<h4>Corrections to submissions cutoff date:{{ cor_cut_off_date|date:"F j, Y" }} </h4>
1010
<br>
1111
Updated as of {% now "r" %}
1212
<br><br>
@@ -15,7 +15,7 @@ <h4>Corrections to submissions cutoff date: </h4>
1515
{% for wgs in areas %}
1616
<table cellpadding="0" cellspacing="0" border="2" width="80%">
1717
<tr>
18-
<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>
18+
<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>
1919
</td>
2020
</tr>
2121
</table>
@@ -37,6 +37,69 @@ <h4>Corrections to submissions cutoff date: </h4>
3737

3838
{% endfor %}
3939
{% endfor %}
40-
40+
<!--- Training Sessions --->
41+
<table cellpadding="0" cellspacing="0" border="2" width="80%">
42+
<tr>
43+
<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>
44+
</td> </tr> </table>
45+
{% for wg in training_list|dictsort:"acronym" %}
46+
<table cellpadding="0" cellspacing="0" border="2" width="80%"> <tr><a name="wg-{{ wg.acronym }}"></a>
47+
<td align="center" bgcolor="#DDFFDD" width="20%"><b>{{ wg.acronym|upper }}</b></td>
48+
<td><table border="1" width="100%">
49+
{% include "meeting/submission_status_snippet.html" %}
50+
{% for slide in wg.slides %}
51+
<tr><td><a href="http://www3.ietf.org/proceedings/{{ slide.file_loc }}">{{ slide.slide_name }}</a></td> </tr>
52+
{% endfor %}
53+
</table>
54+
</td>
55+
</tr>
56+
</table>
57+
{% endfor %}
58+
<!--- End of Training Sessions --->
59+
<!--- IRTF Sessions --->
60+
<table cellpadding="0" cellspacing="0" border="2" width="80%">
61+
<tr>
62+
<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>
63+
</td>
64+
</tr>
65+
</table>
66+
{% for wg in irtf_list|dictsort:"acronym" %}
67+
<table cellpadding="0" cellspacing="0" border="2" width="80%">
68+
<tr><a name="wg-{{ wg.acronym }}"></a>
69+
<td align="center" bgcolor="#DDFFDD" width="20%"><b>{{ wg.acronym|upper }}</b><br>
70+
{% 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>
71+
<td><table border="1" width="100%">
72+
{% include "meeting/submission_status_snippet.html" %}
73+
{% for slide in wg.slides %}
74+
<tr><td><a href="http://www3.ietf.org/proceedings/{{ slide.file_loc }}">{{ slide.slide_name }}</a></td>
75+
</tr>
76+
{% endfor %}
77+
</table>
78+
</td>
79+
</tr>
80+
</table>
81+
{% endfor %}
82+
<!--- End of IRTF Sessions --->
83+
<!--- Interim Meetings --->
84+
<table cellpadding="0" cellspacing="0" border="2" width="80%">
85+
<tr>
86+
<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>
87+
</td>
88+
</tr>
89+
</table>
90+
{% for wg in interim_list|dictsort:"acronym" %}
91+
<table cellpadding="0" cellspacing="0" border="2" width="80%"> <tr><a name="wg-{{ wg.acronym }}"></a>
92+
<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>
93+
<td><table border="1" width="100%">
94+
{% include "meeting/submission_status_snippet.html" %}
95+
{% for slide in wg.slides %}
96+
<tr><td><a href="http://www3.ietf.org/proceedings/{{ slide.file_loc }}">{{ slide.slide_name }}</a></td> </tr>
97+
{% endfor %}
98+
</table>
99+
</td>
100+
</tr>
101+
</table>
102+
{% endfor %}
103+
<!--- End of Imterim Meetings --->
41104
</center>
42105
{% endblock %}
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
{% extends "base.html" %}
2+
{% block title %} IETF {{ meeting_num }} Preliminary & Interim Materials {% endblock %}
3+
{% block content %}
4+
<link rel="stylesheet" type="text/css" href="https://www.ietf.org/css/base.css" />
5+
<center>
6+
<h2>IETF {{ meeting_num }} Preliminary & Interim Materials</h2>
7+
<h4>Submission began {{ begin_date|date:"F j, Y" }} </h4>
8+
<h4>Submission cutoff odate: {{ cut_off_date|date:"F j, Y" }}</h4>
9+
<h4>Corrections to submissions cutoff date:{{ cor_cut_off_date|date:"F j, Y" }} </h4>
10+
</center>
11+
<br>
12+
<i>
13+
The IETF {{ meeting_num }} Preliminary & Interim Materials page is now closed.<br>
14+
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>
15+
</i>
16+
{% endblock %}

0 commit comments

Comments
 (0)