Skip to content

Commit d90d97d

Browse files
committed
Made various changes to session request form, mostly removal of fields, to support virtual session requests. Also added settings.SECR_VIRTUAL_MEETINGS list.
- Legacy-Id: 17803
1 parent ddca212 commit d90d97d

7 files changed

Lines changed: 78 additions & 32 deletions

File tree

ietf/secr/sreq/forms.py

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
NUM_SESSION_CHOICES = (('','--Please select'),('1','1'),('2','2'))
2020
# LENGTH_SESSION_CHOICES = (('','--Please select'),('1800','30 minutes'),('3600','1 hour'),('5400','1.5 hours'), ('7200','2 hours'),('9000','2.5 hours'))
2121
LENGTH_SESSION_CHOICES = (('','--Please select'),('1800','30 minutes'),('3600','1 hour'),('5400','1.5 hours'), ('7200','2 hours'))
22+
VIRTUAL_LENGTH_SESSION_CHOICES = (('','--Please select'),('3000','50 minutes'),('6000','100 minutes'))
2223
SESSION_TIME_RELATION_CHOICES = (('', 'No preference'),) + Constraint.TIME_RELATION_CHOICES
2324
JOINT_FOR_SESSION_CHOICES = (('1', 'First session'), ('2', 'Second session'), ('3', 'Third session'), )
2425

@@ -207,7 +208,16 @@ def clean(self):
207208
'because you have not requested a third session.')
208209

209210
return data
210-
211+
212+
213+
class VirtualSessionForm(SessionForm):
214+
'''A SessionForm customized for special virtual meeting requirements'''
215+
length_session1 = forms.ChoiceField(choices=VIRTUAL_LENGTH_SESSION_CHOICES)
216+
length_session2 = forms.ChoiceField(choices=VIRTUAL_LENGTH_SESSION_CHOICES,required=False)
217+
length_session3 = forms.ChoiceField(choices=VIRTUAL_LENGTH_SESSION_CHOICES,required=False)
218+
attendees = forms.IntegerField(required=False)
219+
220+
211221
class ToolStatusForm(forms.Form):
212222
message = forms.CharField(widget=forms.Textarea(attrs={'rows':'3','cols':'80'}), strip=False)
213223

ietf/secr/sreq/templatetags/ams_filters.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,10 @@ def display_duration(value):
2727
label."""
2828
map = {'0':'None',
2929
'1800':'30 Minutes',
30+
'3000':'50 Miuntes',
3031
'3600':'1 Hour',
3132
'5400':'1.5 Hours',
33+
'6000':'100 Minutes',
3234
'7200':'2 Hours',
3335
'9000':'2.5 Hours'}
3436
return map[value]

ietf/secr/sreq/views.py

Lines changed: 28 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,8 @@
1919
from ietf.meeting.helpers import get_meeting
2020
from ietf.meeting.utils import add_event_info_to_session_qs
2121
from ietf.name.models import SessionStatusName, ConstraintName
22-
from ietf.secr.sreq.forms import SessionForm, ToolStatusForm, allowed_conflicting_groups, JOINT_FOR_SESSION_CHOICES
22+
from ietf.secr.sreq.forms import (SessionForm, ToolStatusForm, allowed_conflicting_groups,
23+
JOINT_FOR_SESSION_CHOICES, VirtualSessionForm)
2324
from ietf.secr.utils.decorators import check_permissions
2425
from ietf.secr.utils.group import get_my_groups
2526
from ietf.utils.mail import send_mail
@@ -115,6 +116,13 @@ def get_requester_text(person,group):
115116
if person.role_set.filter(name='secr',group__acronym='secretariat'):
116117
return '%s, on behalf of the %s working group' % (person.ascii, group.acronym)
117118

119+
def get_session_form_class():
120+
meeting = get_meeting()
121+
if meeting.number in settings.SECR_VIRTUAL_MEETINGS:
122+
return VirtualSessionForm
123+
else:
124+
return SessionForm
125+
118126
def save_conflicts(group, meeting, conflicts, name):
119127
'''
120128
This function takes a Group, Meeting a string which is a list of Groups acronyms (conflicts),
@@ -261,9 +269,12 @@ def confirm(request, acronym):
261269
'''
262270
# FIXME: this should be using form.is_valid/form.cleaned_data - invalid input will make it crash
263271
group = get_object_or_404(Group,acronym=acronym)
264-
form = SessionForm(group, request.POST, hidden=True)
265-
form.is_valid()
266272
meeting = get_meeting()
273+
FormClass = get_session_form_class()
274+
275+
form = FormClass(group, request.POST, hidden=True)
276+
form.is_valid()
277+
267278
login = request.user.person
268279

269280
# check if request already exists for this group
@@ -365,6 +376,7 @@ def confirm(request, acronym):
365376

366377
return render(request, 'sreq/confirm.html', {
367378
'form': form,
379+
'is_virtual': meeting.number in settings.SECR_VIRTUAL_MEETINGS,
368380
'session': session_data,
369381
'group': group,
370382
'session_conflicts': session_conflicts},
@@ -397,6 +409,8 @@ def edit(request, acronym, num=None):
397409
sessions = add_event_info_to_session_qs(Session.objects.filter(group=group, meeting=meeting)).filter(Q(current_status__isnull=True) | ~Q(current_status__in=['canceled', 'notmeet'])).order_by('id')
398410
sessions_count = sessions.count()
399411
initial = get_initial_session(sessions)
412+
FormClass = get_session_form_class()
413+
400414
if 'resources' in initial:
401415
initial['resources'] = [x.pk for x in initial['resources']]
402416

@@ -417,7 +431,7 @@ def edit(request, acronym, num=None):
417431
if button_text == 'Cancel':
418432
return redirect('ietf.secr.sreq.views.view', acronym=acronym)
419433

420-
form = SessionForm(group, request.POST, initial=initial)
434+
form = FormClass(group, request.POST, initial=initial)
421435
if form.is_valid():
422436
if form.has_changed():
423437
# might be cleaner to simply delete and rewrite all records (but maintain submitter?)
@@ -566,10 +580,11 @@ def edit(request, acronym, num=None):
566580
else:
567581
if not sessions:
568582
return redirect('ietf.secr.sreq.views.new', acronym=acronym)
569-
form = SessionForm(group, initial=initial)
583+
form = FormClass(group, initial=initial)
570584

571585
return render(request, 'sreq/edit.html', {
572586
'is_locked': is_locked,
587+
'is_virtual': meeting.number in settings.SECR_VIRTUAL_MEETINGS,
573588
'meeting': meeting,
574589
'form': form,
575590
'group': group,
@@ -652,6 +667,8 @@ def new(request, acronym):
652667
group = get_object_or_404(Group, acronym=acronym)
653668
meeting = get_meeting()
654669
session_conflicts = session_conflicts_as_string(group, meeting)
670+
is_virtual = meeting.number in settings.SECR_VIRTUAL_MEETINGS,
671+
FormClass = get_session_form_class()
655672

656673
# check if app is locked
657674
is_locked = check_app_locked()
@@ -664,7 +681,7 @@ def new(request, acronym):
664681
if button_text == 'Cancel':
665682
return redirect('ietf.secr.sreq.views.main')
666683

667-
form = SessionForm(group, request.POST)
684+
form = FormClass(group, request.POST)
668685
if form.is_valid():
669686
return confirm(request, acronym)
670687

@@ -688,15 +705,16 @@ def new(request, acronym):
688705
add_essential_people(group,initial)
689706
if 'resources' in initial:
690707
initial['resources'] = [x.pk for x in initial['resources']]
691-
form = SessionForm(group, initial=initial)
708+
form = FormClass(group, initial=initial)
692709

693710
else:
694711
initial={}
695712
add_essential_people(group,initial)
696-
form = SessionForm(group, initial=initial)
713+
form = FormClass(group, initial=initial)
697714

698715
return render(request, 'sreq/new.html', {
699716
'meeting': meeting,
717+
'is_virtual': is_virtual,
700718
'form': form,
701719
'group': group,
702720
'session_conflicts': session_conflicts},
@@ -807,7 +825,7 @@ def view(request, acronym, num = None):
807825
is_locked = check_app_locked()
808826
if is_locked:
809827
messages.warning(request, "The Session Request Tool is closed")
810-
828+
811829
# if there are no session requests yet, redirect to new session request page
812830
if not sessions:
813831
if is_locked:
@@ -837,6 +855,7 @@ def view(request, acronym, num = None):
837855

838856
return render(request, 'sreq/view.html', {
839857
'is_locked': is_locked,
858+
'is_virtual': meeting.number in settings.SECR_VIRTUAL_MEETINGS,
840859
'session': session,
841860
'activities': activities,
842861
'meeting': meeting,

ietf/secr/templates/includes/sessions_request_form.html

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,15 @@
88
<tr class="bg1"><td>Number of Sessions:<span class="required">*</span></td><td>{{ form.num_session.errors }}{{ form.num_session }}</td></tr>
99
<tr class="bg2"><td>Length of Session 1:<span class="required">*</span></td><td>{{ form.length_session1.errors }}{{ form.length_session1 }}</td></tr>
1010
<tr class="bg2"><td>Length of Session 2:<span class="required">*</span></td><td>{{ form.length_session2.errors }}{{ form.length_session2 }}</td></tr>
11-
<tr class="bg2"><td>Time between two sessions:</td><td>{{ form.session_time_relation.errors }}{{ form.session_time_relation }}</td></tr>
11+
{% if not is_virtual %}
12+
<tr class="bg2"><td>Time between two sessions:</td><td>{{ form.session_time_relation.errors }}{{ form.session_time_relation }}</td></tr>
13+
{% endif %}
1214
{% if group.type.slug == "wg" %}
1315
<tr class="bg2"><td>Additional Session Request:</td><td>{{ form.third_session }} Check this box to request an additional session.<br>
1416
Additional slot may be available after agenda scheduling has closed and with the approval of an Area Director.<br>
1517
Length of Third Session: {{ form.length_session3.errors }}{{ form.length_session3 }}</td></tr>
1618
{% endif %}
17-
<tr class="bg1"><td>Number of Attendees:<span class="required">*</span></td><td>{{ form.attendees.errors }}{{ form.attendees }}</td></tr>
19+
<tr class="bg1"><td>Number of Attendees:{% if not is_virtual %}<span class="required">*</span>{% endif %}</td><td>{{ form.attendees.errors }}{{ form.attendees }}</td></tr>
1820
<tr class="bg2"><td>People who must be present:</td><td>{{ form.bethere.errors }}{{ form.bethere }}</td></tr>
1921
<tr class="bg1"><td>Conflicts to Avoid:</td>
2022
<td>
@@ -55,6 +57,9 @@
5557
</table>
5658
</td>
5759
</tr>
60+
61+
{% if not is_virtual %}
62+
5863
<tr class="bg2"><td>Resources requested:</td>
5964
<td>
6065
{{ form.resources.errors }} {{ form.resources }}
@@ -87,6 +92,9 @@
8792
</td>
8893
<td>{{ form.joint_for_session.errors }}{{ form.joint_for_session }}</td>
8994
</tr>
95+
96+
{% endif %}
97+
9098
<tr class="bg2">
9199
<td valign="top">Special Requests:<br />&nbsp;<br />i.e. restrictions on meeting times / days, etc.</td> (limit 200 characters)</td>
92100
<td>{{ form.comments.errors }}{{ form.comments }}</td>

ietf/secr/templates/includes/sessions_request_view.html

Lines changed: 25 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,9 @@
77
<tr class="row2"><td>Length of Session 1:</td><td>{{ session.length_session1|display_duration }}</td></tr>
88
{% if session.length_session2 %}
99
<tr class="row2"><td>Length of Session 2:</td><td>{{ session.length_session2|display_duration }}</td></tr>
10-
<tr class="row2"><td>Time between sessions:</td><td>{% if session.session_time_relation_display %}{{ session.session_time_relation_display }}{% else %}No preference{% endif %}</td></tr>
10+
{% if not is_virtual %}
11+
<tr class="row2"><td>Time between sessions:</td><td>{% if session.session_time_relation_display %}{{ session.session_time_relation_display }}{% else %}No preference{% endif %}</td></tr>
12+
{% endif %}
1113
{% endif %}
1214
{% if session.length_session3 %}
1315
<tr class="row2"><td>Length of Session 3:</td><td>{{ session.length_session3|display_duration }}</td></tr>
@@ -27,30 +29,34 @@
2729
<td>Other WGs that included {{ group }} in their conflict list:</td>
2830
<td>{% if session_conflicts %}{{ session_conflicts }}{% else %}<i>None so far</i>{% endif %}</td>
2931
</tr>
30-
<tr class="row2">
31-
<td>Resources requested:</td>
32-
<td>{% if session.resources %}<ul>{% for resource in session.resources %}<li>{{ resource.desc }}</li>{% endfor %}</ul>{% else %}<i>None so far</i>{% endif %}</td>
33-
</tr>
32+
{% if not is_virtual %}
33+
<tr class="row2">
34+
<td>Resources requested:</td>
35+
<td>{% if session.resources %}<ul>{% for resource in session.resources %}<li>{{ resource.desc }}</li>{% endfor %}</ul>{% else %}<i>None so far</i>{% endif %}</td>
36+
</tr>
37+
{% endif %}
3438
<tr class="row1">
3539
<td>People who must be present:</td>
3640
<td>{% if session.bethere %}<ul>{% for person in session.bethere %}<li>{{ person }}</li>{% endfor %}</ul>{% else %}<i>None</i>{% endif %}</td>
3741
<tr class="row2">
3842
<td>Can not meet on:</td>
3943
<td>{% if session.timeranges_display %}{{ session.timeranges_display|join:', ' }}{% else %}No constraints{% endif %}</td>
4044
</tr>
41-
<tr class="row1">
42-
<td>Adjacent with WG:</td>
43-
<td>{{ session.adjacent_with_wg|default:'No preference' }}</td>
44-
</tr>
45-
<tr class="row2">
46-
<td>Joint session:</td>
47-
<td>
48-
{% if session.joint_with_groups %}
49-
{{ session.joint_for_session_display }} with: {{ session.joint_with_groups }}
50-
{% else %}
51-
Not a joint session
52-
{% endif %}
53-
</td>
54-
</tr>
45+
{% if not is_virtual %}
46+
<tr class="row1">
47+
<td>Adjacent with WG:</td>
48+
<td>{{ session.adjacent_with_wg|default:'No preference' }}</td>
49+
</tr>
50+
<tr class="row2">
51+
<td>Joint session:</td>
52+
<td>
53+
{% if session.joint_with_groups %}
54+
{{ session.joint_for_session_display }} with: {{ session.joint_with_groups }}
55+
{% else %}
56+
Not a joint session
57+
{% endif %}
58+
</td>
59+
</tr>
60+
{% endif %}
5561
<tr class="row1"><td>Special Requests:</td><td>{{ session.comments }}</td></tr>
5662
</table>

ietf/secr/templates/sreq/new.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@
3232
</noscript>
3333

3434
<div class="module interim-container">
35-
<h2>IETF {{ meeting.number }}: New Session Request</h2>
35+
<h2>IETF {{ meeting.number }}: New Virtual Session Request</h2>
3636
<div class="inline-related">
3737
<br>
3838
<ul class="session-buttons">

ietf/settings.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -899,6 +899,7 @@ def skip_unreadable_post(record):
899899
SECR_MAX_UPLOAD_SIZE = 40960000
900900
SECR_PROCEEDINGS_DIR = '/a/www/www6s/proceedings/'
901901
SECR_PPT2PDF_COMMAND = ['/usr/bin/soffice','--headless','--convert-to','pdf:writer_globaldocument_pdf_Export','--outdir']
902+
SECR_VIRTUAL_MEETINGS = ['108']
902903
STATS_REGISTRATION_ATTENDEES_JSON_URL = 'https://ietf.org/registration/attendees/{number}'
903904
NEW_PROCEEDINGS_START = 95
904905
USE_ETAGS=True

0 commit comments

Comments
 (0)