|
48 | 48 | from ietf.meeting.helpers import send_interim_cancellation_notice |
49 | 49 | from ietf.meeting.helpers import send_interim_approval_request |
50 | 50 | from ietf.meeting.helpers import send_interim_announcement_request |
| 51 | +from ietf.meeting.utils import finalize |
51 | 52 | from ietf.utils.mail import send_mail_message |
52 | 53 | from ietf.utils.pipe import pipe |
53 | 54 | from ietf.utils.pdf import pdf_pages |
@@ -1465,10 +1466,26 @@ def proceedings(request, num=None): |
1465 | 1466 |
|
1466 | 1467 | cache_version = Document.objects.filter(session__meeting__number=meeting.number).aggregate(Max('time'))["time__max"] |
1467 | 1468 | return render(request, "meeting/proceedings.html", { |
1468 | | - 'meeting_num': meeting.number, |
| 1469 | + 'meeting': meeting, |
1469 | 1470 | 'plenaries': plenaries, 'ietf': ietf, 'training': training, 'irtf': irtf, 'iab': iab, |
1470 | 1471 | 'cut_off_date': cut_off_date, |
1471 | 1472 | 'cor_cut_off_date': cor_cut_off_date, |
1472 | 1473 | 'submission_started': now > begin_date, |
1473 | 1474 | 'cache_version': cache_version, |
1474 | 1475 | }) |
| 1476 | + |
| 1477 | + |
| 1478 | +@role_required('Secretariat') |
| 1479 | +def finalize_proceedings(request, num=None): |
| 1480 | + |
| 1481 | + meeting = get_meeting(num) |
| 1482 | + |
| 1483 | + if meeting.number <= 64 or not meeting.agenda.assignments.exists() or meeting.proceedings_final: |
| 1484 | + raise Http404 |
| 1485 | + |
| 1486 | + if request.method=='POST': |
| 1487 | + finalize(meeting) |
| 1488 | + return HttpResponseRedirect(reverse('ietf.meeting.views.proceedings',kwargs={'num':meeting.number})) |
| 1489 | + |
| 1490 | + return render(request, "meeting/finalize.html", {'meeting':meeting,}) |
| 1491 | + |
0 commit comments