Skip to content

Commit ad9503f

Browse files
committed
Removing remaining traces of shim layer usage in meeting
- Legacy-Id: 6817
1 parent 992bf0e commit ad9503f

7 files changed

Lines changed: 56 additions & 143 deletions

File tree

ietf/meeting/helpers.py

Lines changed: 15 additions & 64 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,23 @@
11
# Copyright The IETF Trust 2007, All Rights Reserved
22

3-
#import models
43
import datetime
54
import os
65

6+
import pytz
7+
78
from django.http import Http404
89
from django.http import HttpRequest
910
from django.db.models import Max, Q
1011
from django.conf import settings
1112
from django.core.cache import cache
1213
from django.utils.cache import get_cache_key
14+
from django.shortcuts import get_object_or_404
1315

1416
import debug
1517

16-
from django.shortcuts import get_object_or_404
1718
from ietf.ietfauth.utils import has_role
1819
from ietf.utils.history import find_history_active_at
1920
from ietf.doc.models import Document, State
20-
21-
from ietf.proceedings.models import Meeting as OldMeeting, MeetingTime, IESGHistory, Switches
22-
23-
# New models
2421
from ietf.meeting.models import Meeting
2522
from ietf.group.models import Group
2623

@@ -37,70 +34,17 @@ def find_ads_for_meeting(meeting):
3734
if history and history != g:
3835
#print " history[%u]: %s" % (num, history)
3936
if history.state_id == "active":
40-
for x in history.rolehistory_set.filter(name="ad").select_related():
37+
for x in history.rolehistory_set.filter(name="ad").select_related('group', 'person', 'email'):
4138
#print "xh[%u]: %s" % (num, x)
42-
ads.append(IESGHistory().from_role(x, meeting_time))
39+
ads.append(x)
4340
else:
4441
#print " group[%u]: %s" % (num, g)
4542
if g.state_id == "active":
46-
for x in g.role_set.filter(name="ad").select_related('group', 'person'):
43+
for x in g.role_set.filter(name="ad").select_related('group', 'person', 'email'):
4744
#print "xg[%u]: %s (#%u)" % (num, x, x.pk)
48-
ads.append(IESGHistory().from_role(x, meeting_time))
45+
ads.append(x)
4946
return ads
5047

51-
def agenda_info(num=None):
52-
try:
53-
if num != None:
54-
meeting = OldMeeting.objects.get(number=num)
55-
else:
56-
meeting = OldMeeting.objects.all().order_by('-date')[:1].get()
57-
except OldMeeting.DoesNotExist:
58-
raise Http404("No meeting information for meeting %s available" % num)
59-
60-
# now go through the timeslots, only keeping those that are
61-
# sessions/plenary/training and don't occur at the same time
62-
timeslots = []
63-
time_seen = set()
64-
for t in MeetingTime.objects.filter(meeting=meeting, type__in=("session", "plenary", "other")).order_by("time").select_related():
65-
if not t.time in time_seen:
66-
time_seen.add(t.time)
67-
timeslots.append(t)
68-
69-
update = Switches().from_object(meeting)
70-
venue = meeting.meeting_venue
71-
72-
ads = []
73-
meeting_time = datetime.datetime.combine(meeting.date, datetime.time(0, 0, 0))
74-
for g in Group.objects.filter(type="area").order_by("acronym"):
75-
history = find_history_active_at(g, meeting_time)
76-
if history and history != g:
77-
if history.state_id == "active":
78-
ads.extend(IESGHistory().from_role(x, meeting_time) for x in history.rolehistory_set.filter(name="ad").select_related())
79-
else:
80-
if g.state_id == "active":
81-
ads.extend(IESGHistory().from_role(x, meeting_time) for x in g.role_set.filter(name="ad").select_related('group', 'person'))
82-
83-
active_agenda = State.objects.get(used=True, type='agenda', slug='active')
84-
plenary_agendas = Document.objects.filter(session__meeting=meeting, session__slots__type="plenary", type="agenda", ).distinct()
85-
plenaryw_agenda = plenaryt_agenda = "The agenda has not been uploaded yet."
86-
for agenda in plenary_agendas:
87-
if active_agenda in agenda.states.all():
88-
# we use external_url at the moment, should probably regularize
89-
# the filenames to match the document name instead
90-
path = os.path.join(settings.AGENDA_PATH, meeting.number, "agenda", agenda.external_url)
91-
try:
92-
f = open(path)
93-
s = f.read()
94-
f.close()
95-
except IOError:
96-
s = "No agenda file found."
97-
98-
if "tech" in agenda.name.lower():
99-
plenaryt_agenda = s
100-
else:
101-
plenaryw_agenda = s
102-
103-
return timeslots, update, meeting, venue, ads, plenaryw_agenda, plenaryt_agenda
10448

10549
# get list of all areas, + IRTF + IETF (plenaries).
10650
def get_pseudo_areas():
@@ -169,7 +113,7 @@ def get_wg_list(scheduledsessions):
169113

170114

171115
def get_meeting(num=None):
172-
if (num == None):
116+
if num == None:
173117
meeting = Meeting.objects.filter(type="ietf").order_by("-date")[:1].get()
174118
else:
175119
meeting = get_object_or_404(Meeting, number=num)
@@ -189,6 +133,13 @@ def get_schedule_by_id(meeting, schedid):
189133
schedule = get_object_or_404(meeting.schedule_set, id=int(schedid))
190134
return schedule
191135

136+
def meeting_updated(meeting):
137+
ts = max(meeting.timeslot_set.aggregate(Max('modified'))["modified__max"],
138+
meeting.session_set.aggregate(Max('modified'))["modified__max"])
139+
tz = pytz.timezone(settings.PRODUCTION_TIMEZONE)
140+
ts = tz.localize(ts)
141+
return ts
142+
192143
def agenda_permissions(meeting, schedule, user):
193144
# do this in positive logic.
194145
cansee = False

ietf/meeting/models.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1056,7 +1056,7 @@ def agenda_text(self):
10561056
with open(path) as f:
10571057
return f.read()
10581058
else:
1059-
"No agenda file found"
1059+
return "No agenda file found"
10601060
else:
10611061
return "The agenda has not been uploaded yet."
10621062

ietf/meeting/tests/agenda.py

Lines changed: 1 addition & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import sys
2-
from django.test import Client
2+
33
from ietf.meeting.tests.ttest import AgendaTransactionalTestCase
44
from ietf.utils import TestCase
55
from ietf.name.models import SessionStatusName
@@ -26,30 +26,6 @@ def test_SessionUnicode(self):
2626
s1 = m1.session_set.create(name = "newone", group = g1, requested_by = p1, status = st1)
2727
self.assertEqual(s1.__unicode__(), "IETF-83: pkix (unscheduled)[22090]")
2828

29-
def test_AgendaInfo(self):
30-
from ietf.meeting.views import agenda_info
31-
num = '83'
32-
timeslots, update, meeting, venue, ads, plenaryw_agenda, plenaryt_agenda = agenda_info(num)
33-
# I think that "timeslots" here, is unique times, not actually
34-
# the timeslots array itself.
35-
self.assertEqual(len(timeslots),26)
36-
self.assertEqual(meeting.number,'83')
37-
self.assertEqual(venue.meeting_num, "83")
38-
# will change as more ADs are added to fixtures
39-
self.assertEqual(len(ads), 8)
40-
41-
def test_AgendaInfoReturnsSortedTimeSlots(self):
42-
from ietf.meeting.views import agenda_info
43-
num = '83'
44-
timeslots, update, meeting, venue, ads, plenaryw_agenda, plenaryt_agenda = agenda_info(num)
45-
for slotnum in range(0,len(timeslots)-1):
46-
# debug
47-
#sys.stdout.write("%d: %s vs %d: %s\n" % (timeslots[slotnum].pk,
48-
# timeslots[slotnum].time,
49-
# timeslots[slotnum+1].pk,
50-
# timeslots[slotnum+1].time))
51-
self.assertTrue(timeslots[slotnum].time < timeslots[slotnum+1].time)
52-
5329
# this tests that a slot at 11:20 AM on Friday, has slot 10 minutes later
5430
# after it
5531
def test_TimeSlot2408_has_SlotToTheRight(self):
@@ -68,17 +44,6 @@ def test_TimeSlot2418_hasno_SlotToTheRight(self):
6844
ss2418 = ScheduledSession.objects.get(pk = 2418)
6945
self.assertFalse(ss2418.slot_to_the_right)
7046

71-
def test_AgendaInfoNotFound(self):
72-
from django.http import Http404
73-
from ietf.meeting.views import agenda_info
74-
num = '83b'
75-
try:
76-
timeslots, update, meeting, venue, ads, plenaryw_agenda, plenaryt_agenda = agenda_info(num)
77-
# fail!!!
78-
self.assertFalse(True)
79-
except Http404:
80-
pass
81-
8247
def test_DoNotGetSchedule(self):
8348
from django.http import Http404
8449
num = '83'

ietf/meeting/views.py

Lines changed: 36 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,12 @@
66
import tarfile
77
import debug
88
import urllib
9+
import json
910

1011
from tempfile import mkstemp
1112

1213
from django import forms
13-
from django.shortcuts import render_to_response, get_object_or_404
14-
from django.utils import simplejson as json
14+
from django.shortcuts import render_to_response, get_object_or_404, redirect
1515
from django.http import HttpResponseRedirect, HttpResponse, Http404
1616
from django.core.urlresolvers import reverse
1717
from django.db.models import Q
@@ -24,63 +24,62 @@
2424
from django.forms.models import modelform_factory
2525

2626
from ietf.utils.pipe import pipe
27-
from ietf.doc.models import Document, State
28-
from ietf.idtracker.models import IETFWG, IRTF, Area
2927
from ietf.ietfauth.utils import role_required, has_role
30-
31-
# Old model -- needs to be removed
32-
from ietf.proceedings.models import Meeting as OldMeeting, WgMeetingSession, Proceeding, Switches
33-
34-
# New models
28+
from ietf.doc.models import Document, State
3529
from ietf.person.models import Person
36-
from ietf.meeting.models import TimeSlot, Session, Schedule
30+
from ietf.meeting.models import Meeting, TimeSlot, Session, Schedule
3731
from ietf.group.models import Group
3832

39-
from ietf.meeting.helpers import agenda_info
4033
from ietf.meeting.helpers import get_areas
4134
from ietf.meeting.helpers import build_all_agenda_slices, get_wg_name_list
4235
from ietf.meeting.helpers import get_scheduledsessions_from_schedule, get_all_scheduledsessions_from_schedule
4336
from ietf.meeting.helpers import get_modified_from_scheduledsessions
4437
from ietf.meeting.helpers import get_wg_list, find_ads_for_meeting
45-
from ietf.meeting.helpers import get_meeting, get_schedule, agenda_permissions
38+
from ietf.meeting.helpers import get_meeting, get_schedule, agenda_permissions, meeting_updated
4639

4740
@decorator_from_middleware(GZipMiddleware)
4841
def materials(request, meeting_num=None):
49-
proceeding = get_object_or_404(Proceeding, meeting_num=meeting_num)
50-
begin_date = proceeding.sub_begin_date
51-
cut_off_date = proceeding.sub_cut_off_date
52-
cor_cut_off_date = proceeding.c_sub_cut_off_date
42+
meeting = get_meeting(meeting_num)
43+
44+
begin_date = meeting.get_submission_start_date()
45+
cut_off_date = meeting.get_submission_cut_off_date()
46+
cor_cut_off_date = meeting.get_submission_correction_date()
5347
now = datetime.date.today()
5448
if settings.SERVER_MODE != 'production' and '_testoverride' in request.REQUEST:
5549
pass
5650
elif now > cor_cut_off_date:
57-
return render_to_response("meeting/materials_upload_closed.html",{'meeting_num':meeting_num,'begin_date':begin_date, 'cut_off_date':cut_off_date, 'cor_cut_off_date':cor_cut_off_date}, context_instance=RequestContext(request))
58-
sub_began = 0
59-
if now > begin_date:
60-
sub_began = 1
51+
return render_to_response("meeting/materials_upload_closed.html", {
52+
'meeting_num': meeting_num,
53+
'begin_date': begin_date,
54+
'cut_off_date': cut_off_date,
55+
'cor_cut_off_date': cor_cut_off_date
56+
}, context_instance=RequestContext(request))
57+
6158
#sessions = Session.objects.filter(meeting__number=meeting_num, timeslot__isnull=False)
62-
meeting = get_meeting(meeting_num)
63-
schedule = get_schedule(meeting,None )
64-
sessions = Session.objects.filter(meeting__number=meeting_num,scheduledsession__schedule=schedule )
59+
schedule = get_schedule(meeting, None)
60+
sessions = Session.objects.filter(meeting__number=meeting_num, scheduledsession__schedule=schedule)
6561
plenaries = sessions.filter(name__icontains='plenary')
6662
ietf = sessions.filter(group__parent__type__slug = 'area').exclude(group__acronym='edu')
6763
irtf = sessions.filter(group__parent__acronym = 'irtf')
6864
training = sessions.filter(group__acronym__in=['edu','iaoc'])
6965
iab = sessions.filter(group__parent__acronym = 'iab')
7066

7167
cache_version = Document.objects.filter(session__meeting__number=meeting_num).aggregate(Max('time'))["time__max"]
72-
#
73-
return render_to_response("meeting/materials.html",
74-
{'meeting_num':meeting_num,
75-
'plenaries': plenaries, 'ietf':ietf, 'training':training, 'irtf': irtf, 'iab':iab,
76-
'begin_date':begin_date, 'cut_off_date':cut_off_date,
77-
'cor_cut_off_date':cor_cut_off_date,'sub_began':sub_began,
78-
'cache_version':cache_version},
79-
context_instance=RequestContext(request))
68+
return render_to_response("meeting/materials.html", {
69+
'meeting_num': meeting_num,
70+
'plenaries': plenaries, 'ietf': ietf, 'training': training, 'irtf': irtf, 'iab': iab,
71+
'cut_off_date': cut_off_date,
72+
'cor_cut_off_date': cor_cut_off_date,
73+
'submission_started': now > begin_date,
74+
'cache_version': cache_version,
75+
}, context_instance=RequestContext(request))
8076

8177
def current_materials(request):
82-
meeting = OldMeeting.objects.exclude(number__startswith='interim-').order_by('-meeting_num')[0]
83-
return HttpResponseRedirect( reverse(materials, args=[meeting.meeting_num]) )
78+
meetings = Meeting.objects.exclude(number__startswith='interim-').order_by('-number')
79+
if meetings:
80+
return redirect(materials, meetings[0].number)
81+
else:
82+
raise Http404
8483

8584
def get_user_agent(request):
8685
if settings.SERVER_MODE != 'production' and '_testiphone' in request.REQUEST:
@@ -231,9 +230,9 @@ def edit_agenda(request, num=None, schedule_name=None):
231230
saveasurl=reverse(edit_agenda,
232231
args=[meeting.number, schedule.name])
233232

234-
cansee,canedit = agenda_permissions(meeting, schedule, user)
233+
can_see, can_edit = agenda_permissions(meeting, schedule, user)
235234

236-
if not cansee:
235+
if not can_see:
237236
#sys.stdout.write("visible: %s public: %s owner: %s request from: %s\n" % (
238237
# schedule.visible, schedule.public, schedule.owner, requestor))
239238
return HttpResponse(render_to_string("meeting/private_agenda.html",
@@ -338,7 +337,7 @@ def agenda(request, num=None, name=None, base=None, ext=None):
338337
mimetype = {".html":"text/html", ".txt": "text/plain", ".ics":"text/calendar", ".csv":"text/csv"}
339338
meeting = get_meeting(num)
340339
schedule = get_schedule(meeting, name)
341-
updated = Switches().from_object(meeting).updated()
340+
updated = meeting_updated(meeting)
342341
return HttpResponse(render_to_string("meeting/"+base+ext,
343342
{"schedule":schedule, "updated": updated}, RequestContext(request)), mimetype=mimetype[ext])
344343

@@ -536,7 +535,7 @@ def week_view(request, num=None):
536535
def ical_agenda(request, num=None, name=None, ext=None):
537536
meeting = get_meeting(num)
538537
schedule = get_schedule(meeting, name)
539-
updated = Switches().from_object(meeting).updated()
538+
updated = meeting_updated(meeting)
540539

541540
q = request.META.get('QUERY_STRING','') or ""
542541
filter = set(urllib.unquote(q).lower().split(','))

ietf/secr/proceedings/proc_utils.py

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88
from ietf.group.models import Group, Role
99
from ietf.group.utils import get_charter_text
1010
from ietf.meeting.models import Session, TimeSlot, Meeting
11-
from ietf.meeting.views import agenda_info
1211
from ietf.doc.models import Document, RelatedDocument, DocEvent
1312
from itertools import chain
1413
from ietf.secr.proceedings.models import Registration
@@ -374,7 +373,6 @@ def gen_acknowledgement(context):
374373
def gen_agenda(context):
375374
meeting = context['meeting']
376375

377-
#timeslots, update, meeting, venue, ads, plenaryw_agenda, plenaryt_agenda = agenda_info(meeting.number)
378376
timeslots = TimeSlot.objects.filter(meeting=meeting)
379377

380378
# sort by area:group then time

ietf/templates/meeting/landscape_edit.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -57,10 +57,10 @@
5757
{% endfor %}
5858

5959
{% for ad in area_directors %}
60-
area_directors["{{ad.area}}"] = [];
60+
area_directors["{{ad.group.acronym}}"] = [];
6161
{% endfor %}
6262
{% for ad in area_directors %}
63-
area_directors["{{ad.area}}"].push(find_person_by_href("{{ad.defurl}}"));
63+
area_directors["{{ad.group.acronym}}"].push(find_person_by_href("{{ad.person.defurl}}"));
6464
{% endfor %}
6565

6666
{% autoescape off %}

ietf/templates/meeting/materials.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
{% block content %}
1111
<h1>IETF {{ meeting_num }} Meeting Materials</h1>
1212

13-
{% if sub_began %}
13+
{% if submission_started %}
1414
<p>Submission cutoff date: {{ cut_off_date|date:"F j, Y" }}<br/>
1515
Corrections to submissions cutoff date: {{ cor_cut_off_date|date:"F j, Y" }}</p>
1616
{% endif %}

0 commit comments

Comments
 (0)