diff --git a/ietf/meeting/models.py b/ietf/meeting/models.py index 6b2021999..a4426df42 100644 --- a/ietf/meeting/models.py +++ b/ietf/meeting/models.py @@ -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. diff --git a/ietf/meeting/urls.py b/ietf/meeting/urls.py index dcf26f85f..b49e27437 100644 --- a/ietf/meeting/urls.py +++ b/ietf/meeting/urls.py @@ -2,23 +2,7 @@ from django.conf.urls.defaults import * from ietf.meeting import models, views urlpatterns = patterns('', - (r'^$', views.showlist), - - (r'^(?P\d+)/$', views.show), - (r'^(?P\d+)/agenda.(?P\S+)$', views.show_html_agenda), - (r'^(?P\d+)/materials.html$', views.show_html_materials), - - -# (r'^update/(?P\d+)/$', views.update), -# (r'^new-(?P(specific|generic|thirdpty))/$', views.new), + (r'^(?P\d+)/agenda.(?P\S+)$', views.show_html_agenda), + (r'^(?P\d+)/materials.html$', views.show_html_materials), ) -#queryset = models.IprDetail.objects.all() -#archive = {'queryset':queryset, 'date_field': 'submitted_date', 'allow_empty':True } - -#urlpatterns += patterns('django.views.generic.date_based', -# (r'^(?P\d{4})/$', 'archive_year', archive), -# (r'^(?P\d{4})/(?P[a-z]{3})/$', 'archive_month', archive), -#) - - diff --git a/ietf/meeting/views.py b/ietf/meeting/views.py index a36d3cfe8..1d12cfe3f 100644 --- a/ietf/meeting/views.py +++ b/ietf/meeting/views.py @@ -1,39 +1,32 @@ # Create your views here. import models from django.shortcuts import render_to_response as render -import django.newforms as forms -from django.utils.html import escape, linebreaks -import ietf.utils -from ietf.proceedings.models import Meeting, MeetingTime, WgMeetingSession, SessionName, NonSession, MeetingVenue, IESGHistory +from ietf.proceedings.models import Meeting, MeetingTime, WgMeetingSession, SessionName, NonSession, MeetingVenue, IESGHistory, WgAgenda, Minute, Proceeding 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""" - 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 +import datetime 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 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): 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)) 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 diff --git a/ietf/proceedings/models.py b/ietf/proceedings/models.py index 2ef949a86..3b064514d 100644 --- a/ietf/proceedings/models.py +++ b/ietf/proceedings/models.py @@ -32,7 +32,7 @@ class ResolveAcronym(object): else: acronym_name = Acronym.objects.get(pk=self.group_acronym_id).name if interim: - return acronym_name + " (interim)" + return "i" + acronym return acronym_name def area(self): if self.irtf: @@ -164,7 +164,6 @@ class SessionName(models.Model): db_table = 'session_names' class Admin: pass - class IESGHistory(models.Model): meeting = models.ForeignKey(Meeting, db_column='meeting_num', 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) return "%s %s" % (an_br2_info.time_desc, an_br2_info.non_session_ref) 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) class Meta: db_table = 'meeting_times' @@ -289,7 +288,13 @@ class WgMeetingSession(models.Model, ResolveAcronym): def agenda_file(self,interimvar=0): irtfvar = 0 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: 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 @@ -300,12 +305,18 @@ class WgMeetingSession(models.Model, ResolveAcronym): def minute_file(self,interimvar=0): irtfvar = 0 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: 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: + except Minute.DoesNotExist: retvar = "" return retvar def slides(self,interimvar=0): @@ -314,9 +325,24 @@ class WgMeetingSession(models.Model, ResolveAcronym): """ irtfvar = 0 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") 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: db_table = 'wg_meeting_sessions' class Admin: @@ -396,7 +422,7 @@ class Slide(models.Model, ResolveAcronym): 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) + return "%s/slides/%s-%s/sld1.htm" % (dir,self.acronym(),self.slide_num) else: if self.slide_type_id == 2: ext = ".pdf" @@ -408,7 +434,7 @@ class Slide(models.Model, ResolveAcronym): ext = ".doc" else: 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: db_table = 'slides' class Admin: diff --git a/ietf/templates/meeting/list.html b/ietf/templates/meeting/list.html index ce8eb5887..a45b4414a 100644 --- a/ietf/templates/meeting/list.html +++ b/ietf/templates/meeting/list.html @@ -4,9 +4,9 @@

IETF {{ meeting_num }} Preliminary & Interim Materials

-

Submission begin

-

Submission cutoff odate:

-

Corrections to submissions cutoff date:

+

Submission began {{ begin_date|date:"F j, Y" }}

+

Submission cutoff odate: {{ cut_off_date|date:"F j, Y" }}

+

Corrections to submissions cutoff date:{{ cor_cut_off_date|date:"F j, Y" }}


Updated as of {% now "r" %}

@@ -15,7 +15,7 @@ Updated as of {% now "r" %} {% for wgs in areas %} -


{{ wgs.grouper }}

+


{{ wgs.grouper }}

@@ -37,6 +37,69 @@ Updated as of {% now "r" %} {% endfor %} {% endfor %} - + + + +


Training

+
+{% for wg in training_list|dictsort:"acronym" %} + + + + +
{{ wg.acronym|upper }} +{% include "meeting/submission_status_snippet.html" %} + {% for slide in wg.slides %} + + {% endfor %} +
{{ slide.slide_name }}
+
+{% endfor %} + + + + + + +


IRTF

+
+{% for wg in irtf_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 %} + + + + + + +


Interim Meetings

+
+{% for wg in interim_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 %} +
{% endblock %} diff --git a/ietf/templates/meeting/list_closed.html b/ietf/templates/meeting/list_closed.html new file mode 100644 index 000000000..e0b9f518d --- /dev/null +++ b/ietf/templates/meeting/list_closed.html @@ -0,0 +1,16 @@ +{% extends "base.html" %} +{% block title %} IETF {{ meeting_num }} Preliminary & Interim Materials {% endblock %} +{% block content %} + +
+

IETF {{ meeting_num }} Preliminary & Interim Materials

+

Submission began {{ begin_date|date:"F j, Y" }}

+

Submission cutoff odate: {{ cut_off_date|date:"F j, Y" }}

+

Corrections to submissions cutoff date:{{ cor_cut_off_date|date:"F j, Y" }}

+
+
+ +The IETF {{ meeting_num }} Preliminary & Interim Materials page is now closed.
+You should be able to access the final version of IETF {{ meeting_num }} Proceedings via IETF Online Proceedings page.
+
+{% endblock %}