Skip to content

Commit 6ea92cc

Browse files
committed
various bug fixes and tweaks
- Legacy-Id: 11204
1 parent cecdea3 commit 6ea92cc

9 files changed

Lines changed: 47 additions & 23 deletions

File tree

ietf/meeting/forms.py

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
from ietf.group.models import Group
1414
from ietf.ietfauth.utils import has_role
1515
from ietf.meeting.models import Session, Meeting, Schedule, countries, timezones
16-
from ietf.meeting.helpers import get_next_interim_number, assign_interim_session
16+
from ietf.meeting.helpers import get_next_interim_number
1717
from ietf.meeting.helpers import is_meeting_approved, get_next_agenda_name
1818
from ietf.message.models import Message
1919
from ietf.person.models import Person
@@ -168,6 +168,9 @@ def __init__(self, request, *args, **kwargs):
168168
self.fields['in_person'].initial = True
169169
if is_meeting_approved(self.instance):
170170
self.fields['approved'].initial = True
171+
else:
172+
self.fields['approved'].initial = False
173+
self.fields['approved'].widget.attrs['disabled'] = True
171174

172175
def set_group_options(self):
173176
'''Set group options based on user accessing the form'''
@@ -200,11 +203,12 @@ def save(self, *args, **kwargs):
200203
meeting.date = date
201204
if kwargs.get('commit', True):
202205
# create schedule with meeting
206+
meeting.save() # pre-save so we have meeting.pk for schedule
203207
if not meeting.agenda:
204208
meeting.agenda = Schedule.objects.create(
205209
meeting=meeting,
206210
owner=Person.objects.get(name='(System)'))
207-
meeting.save()
211+
meeting.save() # save with agenda
208212

209213
return meeting
210214

@@ -287,7 +291,7 @@ def save_agenda(self):
287291
with open(path, "w") as file:
288292
file.write(self.cleaned_data['agenda'])
289293

290-
294+
'''
291295
class InterimSessionForm(forms.Form):
292296
date = DatepickerDateField(date_format="yyyy-mm-dd", picker_settings={"autoclose": "1"}, label='Date', required=False)
293297
time = forms.TimeField(required=False)
@@ -345,7 +349,7 @@ def save(self, request, group, meeting, is_approved):
345349
file.write(agenda)
346350
347351
return session
348-
352+
'''
349353

350354
class InterimAnnounceForm(forms.ModelForm):
351355

ietf/meeting/tests_views.py

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -802,13 +802,13 @@ def test_interim_request_cancel(self):
802802
r = self.client.get(url)
803803
self.assertEqual(r.status_code, 200)
804804
q = PyQuery(r.content)
805-
self.assertEqual(len(q("a.btn:contains('Cancel')")),0)
805+
self.assertEqual(len(q("a.btn:contains('Cancel')")), 0)
806806
# ensure cancel button for authorized user
807807
self.client.login(username="marschairman", password="marschairman+password")
808808
r = self.client.get(url)
809809
self.assertEqual(r.status_code, 200)
810810
q = PyQuery(r.content)
811-
self.assertEqual(len(q("a.btn:contains('Cancel')")),1)
811+
self.assertEqual(len(q("a.btn:contains('Cancel')")), 1)
812812
# ensure fail unauthorized
813813
url = urlreverse('ietf.meeting.views.interim_request_cancel', kwargs={'number': meeting.number})
814814
comments = 'Bob cannot make it'
@@ -822,7 +822,7 @@ def test_interim_request_cancel(self):
822822
self.assertRedirects(r, urlreverse('ietf.meeting.views.upcoming'))
823823
for session in meeting.session_set.all():
824824
self.assertEqual(session.status_id, 'canceledpa')
825-
self.assertEqual(session.comments, comments)
825+
self.assertEqual(session.agenda_note, comments)
826826
self.assertEqual(len(outbox), length_before) # no email notice
827827
# test cancelling after announcement
828828
meeting = Meeting.objects.filter(type='interim', session__status='sched', session__group__acronym='mars').first()
@@ -831,15 +831,20 @@ def test_interim_request_cancel(self):
831831
self.assertRedirects(r, urlreverse('ietf.meeting.views.upcoming'))
832832
for session in meeting.session_set.all():
833833
self.assertEqual(session.status_id, 'canceled')
834-
self.assertEqual(session.comments, comments)
834+
self.assertEqual(session.agenda_note, comments)
835835
self.assertEqual(len(outbox), length_before + 1)
836836
self.assertTrue('Interim Meeting Cancelled' in outbox[-1]['Subject'])
837837

838838
def test_interim_request_edit(self):
839839
make_meeting_test_data()
840-
meeting = Meeting.objects.filter(type='interim',session__status='apprw',session__group__acronym='mars').first()
841-
url = urlreverse('ietf.meeting.views.interim_request_edit',kwargs={'number':meeting.number})
842-
login_testing_unauthorized(self,"secretary",url)
840+
meeting = Meeting.objects.filter(type='interim', session__status='apprw', session__group__acronym='mars').first()
841+
url = urlreverse('ietf.meeting.views.interim_request_edit', kwargs={'number': meeting.number})
842+
# test unauthorized access
843+
self.client.login(username="ameschairman", password="ameschairman+password")
844+
r = self.client.get(url)
845+
self.assertEqual(r.status_code, 403)
846+
# test authorized use
847+
login_testing_unauthorized(self, "secretary", url)
843848
r = self.client.get(url)
844849
self.assertEqual(r.status_code, 200)
845850

ietf/meeting/views.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1070,7 +1070,7 @@ def interim_request_cancel(request, number):
10701070
form = InterimCancelForm(request.POST)
10711071
if form.is_valid():
10721072
if 'comments' in form.changed_data:
1073-
meeting.session_set.update(comments=form.cleaned_data.get('comments'))
1073+
meeting.session_set.update(agenda_note=form.cleaned_data.get('comments'))
10741074
if meeting.session_set.first().status.slug == 'sched':
10751075
meeting.session_set.update(status_id='canceled')
10761076
send_interim_cancellation_notice(meeting)
@@ -1116,6 +1116,9 @@ def interim_request_details(request, number):
11161116
def interim_request_edit(request, number):
11171117
'''Edit details of an interim meeting reqeust'''
11181118
meeting = get_object_or_404(Meeting, number=number)
1119+
if not can_view_interim_request(meeting, request.user):
1120+
return HttpResponseForbidden("You do not have permissions to edit this meeting request")
1121+
11191122
SessionFormset = inlineformset_factory(
11201123
Meeting,
11211124
Session,
@@ -1203,7 +1206,6 @@ def upcoming(request):
12031206
def upcoming_ical(request):
12041207
'''Return Upcoming meetings in iCalendar file'''
12051208
filters = request.GET.getlist('filters')
1206-
#assert False, filters
12071209
today = datetime.datetime.today()
12081210
meetings = Meeting.objects.filter(date__gte=today).exclude(
12091211
session__status__in=('apprw', 'schedpa')).order_by('date')

ietf/templates/meeting/interim_announce.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ <h1>Announce Interim Meeting</h1>
4747
<td>ietf</td>
4848
{% endif %}
4949
<td>
50-
<a href="{% url 'ietf.meeting.views.interim_send_announcement' number=meeting.number %}">{{ meeting.number }}</a>
50+
<a href="{% url 'ietf.meeting.views.interim_request_details' number=meeting.number %}">{{ meeting.number }}</a>
5151
</td>
5252
</tr>
5353
{% endfor %}
Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,13 @@
1-
{% load ietf_filters %}The {{ group.name }} ({{ group.acronym }}) Working Group will hold a
2-
virtual interim meeting on {{ meeting.date }} from {{ meeting.session_set.first | session_start_time | date:"H:i" }} to {{ meeting.session_set.first | session_end_time | date:"H:i" }} UTC.
1+
{% load ietf_filters %}The {{ group.name }} ({{ group.acronym }}) Working Group will hold a{% if meeting.city %}n
2+
{% else %}virtual {% endif %}interim meeting on {{ meeting.date }} from {{ meeting.session_set.first | session_start_time | date:"H:i" }} to {{ meeting.session_set.first | session_end_time | date:"H:i" }} {{ meeting.time_zone }}.
33

4-
Agenda:
4+
{% if meeting.city %}Meeting Location:
5+
{{ meeting.city }}, {{ meeting.country }}
6+
7+
{% endif %}Agenda:
58
{{ meeting.session_set.first.agenda | document_content | default_if_none:"(No agenda submitted)" }}
69

710
To join the interim meeting:
811
{{ meeting.session_set.first.remote_instructions }}
912

10-
[ADDITIONAL INFORMATION]
13+
{{ meeting.session_set.0.agenda_note }}

ietf/templates/meeting/interim_cancellation_notice.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,6 @@ The {{ group.name }} ({{ group.acronym }}) {% if not meeting.city %}virtual {% e
33
interim meeting for {{ meeting.date|date:"Y-m-d" }} from {{ start_time|time:"H:i" }} to {{ end_time|time:"H:i" }} {{ meeting.time_zone }}
44
has been cancelled.
55

6-
{{ additional_information }}
6+
{{ meeting.session_set.0.agenda_note }}
77

88

ietf/templates/meeting/interim_request_details.html

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,11 +51,21 @@ <h1>Interim Meeting Request Details</h1>
5151
<input class="btn btn-default" type="submit" value="Approve" name='approve' />
5252
<input class="btn btn-default" type="submit" value="Disapprove" name='disapprove' />
5353
{% endif %}
54+
{% if user|has_role:"Secretariat" and sessions.0.status.slug == 'scheda' %}
55+
<a class="btn btn-default" href="{% url 'ietf.meeting.views.interim_send_announcement' number=meeting.number %}">Announce</a>
56+
{% endif %}
5457
{% if can_edit %}
5558
{% if sessions.0.status.slug == 'apprw' or sessions.0.status.slug == 'scheda' or sessions.0.status.slug == 'sched' %}
5659
<a class="btn btn-default" href="{% url 'ietf.meeting.views.interim_request_cancel' number=meeting.number %}">Cancel</a>
5760
{% endif %}
5861
{% endif %}
62+
{% if sessions.0.status.slug == "apprw" %}
63+
<a class="btn btn-default" href="{% url 'ietf.meeting.views.interim_pending' %}">Back</a>
64+
{% elif sessions.0.status.slug == "scheda" %}
65+
<a class="btn btn-default" href="{% url 'ietf.meeting.views.interim_announce' %}">Back</a>
66+
{% else %}
67+
<a class="btn btn-default" href="{% url 'ietf.meeting.views.upcoming' %}">Back</a>
68+
{% endif %}
5969
</form>
6070

6171
{% endblock %}

ietf/templates/meeting/upcoming.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919

2020
<h1>IETF Upcoming Meetings</h1>
2121

22-
<p>See also <a href="https://www.ietf.org/meeting/upcoming.html">here</a></p>
22+
<p>For more on regular IETF meetings see <a href="https://www.ietf.org/meeting/upcoming.html">here</a></p>
2323
<div class="panel-group" id="accordion">
2424
<div class="panel panel-default">
2525
<div class="panel-heading">

ietf/templates/meeting/upcoming.ics

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,11 @@ PRODID:-//IETF//datatracker.ietf.org ical upcoming//EN
55
{% for item in assignments %}BEGIN:VEVENT
66
UID:ietf-{{item.session.meeting.number}}-{{item.timeslot.pk}}
77
SUMMARY:{% if item.session.name %}{{item.session.name|ics_esc}}{% else %}{{item.session.group.acronym|lower}} - {{item.session.group.name}}{%endif%}
8-
{% if item.timeslot.show_location %}LOCATION:{{item.timeslot.get_location}}
8+
{% if item.schedule.meeting.city %}LOCATION:{{item.schedule.meeting.city}},{{item.schedule.meeting.country}}
99
{% endif %}STATUS:{{item.session.ical_status}}
1010
CLASS:PUBLIC
11-
DTSTART{% if schedule.meeting.time_zone %};TZID="{{schedule.meeting.time_zone}}"{%endif%}:{{ item.timeslot.time|date:"Ymd" }}T{{item.timeslot.time|date:"Hi"}}00
12-
DTEND{% if schedule.meeting.time_zone %};TZID="{{schedule.meeting.time_zone}}"{%endif%}:{{ item.timeslot.end_time|date:"Ymd" }}T{{item.timeslot.end_time|date:"Hi"}}00
11+
DTSTART{% if item.schedule.meeting.time_zone %};TZID="{{item.schedule.meeting.time_zone}}"{%endif%}:{{ item.timeslot.time|date:"Ymd" }}T{{item.timeslot.time|date:"Hi"}}00
12+
DTEND{% if item.schedule.meeting.time_zone %};TZID="{{item.schedule.meeting.time_zone}}"{%endif%}:{{ item.timeslot.end_time|date:"Ymd" }}T{{item.timeslot.end_time|date:"Hi"}}00
1313
DTSTAMP:{{ item.timeslot.modified|date:"Ymd" }}T{{ item.timeslot.modified|date:"His" }}Z
1414
{% if item.session.agenda %}URL:{{item.session.agenda.get_absolute_url}}
1515
DESCRIPTION:{{item.timeslot.name|ics_esc}}\n{% if item.session.agenda_note %}

0 commit comments

Comments
 (0)