|
5 | 5 |
|
6 | 6 | from django.conf import settings |
7 | 7 | from django.contrib import messages |
8 | | -from django.urls import reverse |
9 | 8 | from django.db.models import Max |
10 | 9 | from django.forms.formsets import formset_factory |
11 | 10 | from django.forms.models import inlineformset_factory |
12 | | -from django.http import HttpResponseRedirect, HttpResponse |
| 11 | +from django.http import HttpResponse |
13 | 12 | from django.shortcuts import render, get_object_or_404, redirect |
14 | 13 | from django.utils.functional import curry |
15 | 14 |
|
|
23 | 22 | from ietf.person.models import Person |
24 | 23 | from ietf.secr.meetings.blue_sheets import create_blue_sheets |
25 | 24 | from ietf.secr.meetings.forms import ( BaseMeetingRoomFormSet, MeetingModelForm, MeetingSelectForm, |
26 | | - MeetingRoomForm, NewSessionForm, NonSessionForm, TimeSlotForm, |
| 25 | + MeetingRoomForm, NewSessionForm, NonSessionForm, TimeSlotForm, SessionEditForm, |
27 | 26 | UploadBlueSheetForm, get_next_slot ) |
28 | | -from ietf.secr.proceedings.views import build_choices |
29 | 27 | from ietf.secr.proceedings.utils import handle_upload_file |
30 | | -from ietf.secr.sreq.forms import GroupSelectForm |
31 | 28 | from ietf.secr.sreq.views import get_initial_session |
32 | 29 | from ietf.secr.utils.meeting import get_session, get_timeslot |
33 | 30 | from ietf.mailtrigger.utils import gather_address_lists |
@@ -834,50 +831,54 @@ def select(request, meeting_id, schedule_name): |
834 | 831 | 'meeting': meeting, |
835 | 832 | 'schedule': schedule}, |
836 | 833 | ) |
837 | | - |
| 834 | + |
838 | 835 | @role_required('Secretariat') |
839 | 836 | def select_group(request, meeting_id, schedule_name): |
840 | 837 | ''' |
841 | | - In this view the user can select the group to schedule. Only those groups that have |
842 | | - submitted session requests appear in the dropdowns. |
843 | | -
|
844 | | - NOTE: BOF list includes Proposed Working Group type, per Wanda |
| 838 | + Select the scheduled session to edit. |
845 | 839 | ''' |
846 | 840 | meeting = get_object_or_404(Meeting, number=meeting_id) |
847 | 841 | schedule = get_object_or_404(Schedule, meeting=meeting, name=schedule_name) |
848 | | - |
849 | | - if request.method == 'POST': |
850 | | - group = request.POST.get('group',None) |
851 | | - if group: |
852 | | - redirect_url = reverse('ietf.secr.meetings.views.schedule', kwargs={'meeting_id':meeting_id,'acronym':group,'schedule_name':schedule_name}) |
853 | | - else: |
854 | | - redirect_url = reverse('ietf.secr.meetings.views.select_group',kwargs={'meeting_id':meeting_id,'schedule_name':schedule_name}) |
855 | | - messages.error(request, 'No group selected') |
856 | | - |
857 | | - return HttpResponseRedirect(redirect_url) |
| 842 | + assignments = schedule.assignments.filter(timeslot__type='session').order_by('session__group__acronym') |
858 | 843 |
|
859 | | - # split groups into scheduled / unscheduled |
860 | | - scheduled_groups, unscheduled_groups = sort_groups(meeting,schedule) |
| 844 | + return render(request, 'meetings/select_group.html', { |
| 845 | + 'meeting': meeting, |
| 846 | + 'schedule': schedule, |
| 847 | + 'assignments': assignments}, |
| 848 | + ) |
861 | 849 |
|
862 | | - # prep group form |
863 | | - wgs = filter(lambda a: a.type_id in ('wg','ag') and a.state_id=='active', unscheduled_groups) |
864 | | - group_form = GroupSelectForm(choices=build_choices(wgs)) |
| 850 | +@role_required('Secretariat') |
| 851 | +def session_edit(request, meeting_id, schedule_name, session_id): |
| 852 | + ''' |
| 853 | + Edit session details, cancel session |
| 854 | + ''' |
| 855 | + meeting = get_object_or_404(Meeting, number=meeting_id) |
| 856 | + schedule = get_object_or_404(Schedule, meeting=meeting, name=schedule_name) |
| 857 | + session = get_object_or_404(Session, id=session_id) |
| 858 | + assignment = SchedTimeSessAssignment.objects.get(schedule=schedule,session=session) |
865 | 859 |
|
866 | | - # prep BOFs form |
867 | | - bofs = filter(lambda a: a.type_id=='wg' and a.state_id in ('bof','proposed'), unscheduled_groups) |
868 | | - bof_form = GroupSelectForm(choices=build_choices(bofs)) |
| 860 | + if request.method == 'POST': |
| 861 | + form = SessionEditForm(request.POST, instance=session) |
| 862 | + if form.is_valid(): |
| 863 | + button_text = request.POST.get('submit', '') |
| 864 | + if button_text == 'Cancel': |
| 865 | + session.status = SessionStatusName.objects.get(slug='canceled') |
| 866 | + session.save() |
| 867 | + messages.success(request, 'Session canceled') |
| 868 | + else: |
| 869 | + form.save() |
| 870 | + messages.success(request, 'Session saved') |
| 871 | + return redirect('ietf.secr.meetings.views.select_group', meeting_id=meeting_id,schedule_name=schedule_name) |
869 | 872 |
|
870 | | - # prep IRTF form |
871 | | - irtfs = filter(lambda a: a.type_id=='rg' and a.state_id in ('active','proposed'), unscheduled_groups) |
872 | | - irtf_form = GroupSelectForm(choices=build_choices(irtfs)) |
| 873 | + else: |
| 874 | + form = SessionEditForm(instance=session) |
873 | 875 |
|
874 | | - return render(request, 'meetings/select_group.html', { |
875 | | - 'group_form': group_form, |
876 | | - 'bof_form': bof_form, |
877 | | - 'irtf_form': irtf_form, |
878 | | - 'scheduled_groups': scheduled_groups, |
| 876 | + return render(request, 'meetings/session_edit.html', { |
879 | 877 | 'meeting': meeting, |
880 | | - 'schedule': schedule}, |
| 878 | + 'schedule': schedule, |
| 879 | + 'session': session, |
| 880 | + 'timeslot': assignment.timeslot, |
| 881 | + 'form': form}, |
881 | 882 | ) |
882 | 883 |
|
883 | 884 | @role_required('Secretariat') |
|
0 commit comments