|
50 | 50 | from ietf.meeting.helpers import send_interim_cancellation_notice |
51 | 51 | from ietf.meeting.helpers import send_interim_approval_request |
52 | 52 | from ietf.meeting.helpers import send_interim_announcement_request |
| 53 | +from ietf.meeting.utils import finalize |
53 | 54 | from ietf.utils.mail import send_mail_message |
54 | 55 | from ietf.utils.pipe import pipe |
55 | 56 | from ietf.utils.pdf import pdf_pages |
@@ -913,7 +914,7 @@ def json_agenda(request, num=None ): |
913 | 914 | sessdict['name'] = asgn.session.short |
914 | 915 | else: |
915 | 916 | sessdict['name'] = asgn.session.group.name |
916 | | - sessdict['start'] = str(asgn.timeslot.time) |
| 917 | + sessdict['start'] = asgn.timeslot.utc_start_time().strftime("%Y-%m-%dT%H:%M:%SZ") |
917 | 918 | sessdict['duration'] = str(asgn.timeslot.duration) |
918 | 919 | sessdict['location'] = asgn.room_name |
919 | 920 | room_names.add(asgn.room_name) |
@@ -962,8 +963,10 @@ def json_agenda(request, num=None ): |
962 | 963 | meetinfo.extend(parents) |
963 | 964 | meetinfo.sort(key=lambda x: x['modified'],reverse=True) |
964 | 965 | last_modified = meetinfo[0]['modified'] |
| 966 | + |
| 967 | + tz = pytz.timezone(meeting.time_zone) |
965 | 968 | for obj in meetinfo: |
966 | | - obj['modified'] = obj['modified'].strftime('%Y-%m-%dT%H:%M:%S') |
| 969 | + obj['modified'] = tz.localize(obj['modified']).astimezone(pytz.utc).strftime('%Y-%m-%dT%H:%M:%SZ') |
967 | 970 |
|
968 | 971 | data = {"%s"%num: meetinfo} |
969 | 972 |
|
@@ -1544,10 +1547,26 @@ def proceedings(request, num=None): |
1544 | 1547 |
|
1545 | 1548 | cache_version = Document.objects.filter(session__meeting__number=meeting.number).aggregate(Max('time'))["time__max"] |
1546 | 1549 | return render(request, "meeting/proceedings.html", { |
1547 | | - 'meeting_num': meeting.number, |
| 1550 | + 'meeting': meeting, |
1548 | 1551 | 'plenaries': plenaries, 'ietf': ietf, 'training': training, 'irtf': irtf, 'iab': iab, |
1549 | 1552 | 'cut_off_date': cut_off_date, |
1550 | 1553 | 'cor_cut_off_date': cor_cut_off_date, |
1551 | 1554 | 'submission_started': now > begin_date, |
1552 | 1555 | 'cache_version': cache_version, |
1553 | 1556 | }) |
| 1557 | + |
| 1558 | + |
| 1559 | +@role_required('Secretariat') |
| 1560 | +def finalize_proceedings(request, num=None): |
| 1561 | + |
| 1562 | + meeting = get_meeting(num) |
| 1563 | + |
| 1564 | + if meeting.number <= 64 or not meeting.agenda.assignments.exists() or meeting.proceedings_final: |
| 1565 | + raise Http404 |
| 1566 | + |
| 1567 | + if request.method=='POST': |
| 1568 | + finalize(meeting) |
| 1569 | + return HttpResponseRedirect(reverse('ietf.meeting.views.proceedings',kwargs={'num':meeting.number})) |
| 1570 | + |
| 1571 | + return render(request, "meeting/finalize.html", {'meeting':meeting,}) |
| 1572 | + |
0 commit comments