|
6 | 6 | import tarfile |
7 | 7 | import debug |
8 | 8 | import urllib |
| 9 | +import json |
9 | 10 |
|
10 | 11 | from tempfile import mkstemp |
11 | 12 |
|
12 | 13 | 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 |
15 | 15 | from django.http import HttpResponseRedirect, HttpResponse, Http404 |
16 | 16 | from django.core.urlresolvers import reverse |
17 | 17 | from django.db.models import Q |
|
24 | 24 | from django.forms.models import modelform_factory |
25 | 25 |
|
26 | 26 | from ietf.utils.pipe import pipe |
27 | | -from ietf.doc.models import Document, State |
28 | | -from ietf.idtracker.models import IETFWG, IRTF, Area |
29 | 27 | 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 |
35 | 29 | 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 |
37 | 31 | from ietf.group.models import Group |
38 | 32 |
|
39 | | -from ietf.meeting.helpers import agenda_info |
40 | 33 | from ietf.meeting.helpers import get_areas |
41 | 34 | from ietf.meeting.helpers import build_all_agenda_slices, get_wg_name_list |
42 | 35 | from ietf.meeting.helpers import get_scheduledsessions_from_schedule, get_all_scheduledsessions_from_schedule |
43 | 36 | from ietf.meeting.helpers import get_modified_from_scheduledsessions |
44 | 37 | 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 |
46 | 39 |
|
47 | 40 | @decorator_from_middleware(GZipMiddleware) |
48 | 41 | 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() |
53 | 47 | now = datetime.date.today() |
54 | 48 | if settings.SERVER_MODE != 'production' and '_testoverride' in request.REQUEST: |
55 | 49 | pass |
56 | 50 | 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 | + |
61 | 58 | #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) |
65 | 61 | plenaries = sessions.filter(name__icontains='plenary') |
66 | 62 | ietf = sessions.filter(group__parent__type__slug = 'area').exclude(group__acronym='edu') |
67 | 63 | irtf = sessions.filter(group__parent__acronym = 'irtf') |
68 | 64 | training = sessions.filter(group__acronym__in=['edu','iaoc']) |
69 | 65 | iab = sessions.filter(group__parent__acronym = 'iab') |
70 | 66 |
|
71 | 67 | 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)) |
80 | 76 |
|
81 | 77 | 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 |
84 | 83 |
|
85 | 84 | def get_user_agent(request): |
86 | 85 | if settings.SERVER_MODE != 'production' and '_testiphone' in request.REQUEST: |
@@ -231,9 +230,9 @@ def edit_agenda(request, num=None, schedule_name=None): |
231 | 230 | saveasurl=reverse(edit_agenda, |
232 | 231 | args=[meeting.number, schedule.name]) |
233 | 232 |
|
234 | | - cansee,canedit = agenda_permissions(meeting, schedule, user) |
| 233 | + can_see, can_edit = agenda_permissions(meeting, schedule, user) |
235 | 234 |
|
236 | | - if not cansee: |
| 235 | + if not can_see: |
237 | 236 | #sys.stdout.write("visible: %s public: %s owner: %s request from: %s\n" % ( |
238 | 237 | # schedule.visible, schedule.public, schedule.owner, requestor)) |
239 | 238 | return HttpResponse(render_to_string("meeting/private_agenda.html", |
@@ -338,7 +337,7 @@ def agenda(request, num=None, name=None, base=None, ext=None): |
338 | 337 | mimetype = {".html":"text/html", ".txt": "text/plain", ".ics":"text/calendar", ".csv":"text/csv"} |
339 | 338 | meeting = get_meeting(num) |
340 | 339 | schedule = get_schedule(meeting, name) |
341 | | - updated = Switches().from_object(meeting).updated() |
| 340 | + updated = meeting_updated(meeting) |
342 | 341 | return HttpResponse(render_to_string("meeting/"+base+ext, |
343 | 342 | {"schedule":schedule, "updated": updated}, RequestContext(request)), mimetype=mimetype[ext]) |
344 | 343 |
|
@@ -536,7 +535,7 @@ def week_view(request, num=None): |
536 | 535 | def ical_agenda(request, num=None, name=None, ext=None): |
537 | 536 | meeting = get_meeting(num) |
538 | 537 | schedule = get_schedule(meeting, name) |
539 | | - updated = Switches().from_object(meeting).updated() |
| 538 | + updated = meeting_updated(meeting) |
540 | 539 |
|
541 | 540 | q = request.META.get('QUERY_STRING','') or "" |
542 | 541 | filter = set(urllib.unquote(q).lower().split(',')) |
|
0 commit comments