Skip to content

Commit f4eba7d

Browse files
committed
Added optional reviewer unavailability reason support. Fixes issue ietf-tools#2146. Commit ready for merge.
- Legacy-Id: 15342
1 parent c7a9c2f commit f4eba7d

10 files changed

Lines changed: 22 additions & 3 deletions

File tree

docker/settings_local.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import os
2+
EMAIL_COPY_TO = 'peter@akayla.com'
23

34
SECRET_KEY = 'jzv$o93h_lzw4a0%0oz-5t5lk+ai=3f8x@uo*9ahu8w4i300o6'
45

ietf/group/forms.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -285,7 +285,7 @@ def clean_skip_next(self):
285285
class AddUnavailablePeriodForm(forms.ModelForm):
286286
class Meta:
287287
model = UnavailablePeriod
288-
fields = ['start_date', 'end_date', 'availability']
288+
fields = ['start_date', 'end_date', 'availability', 'reason']
289289

290290
def __init__(self, *args, **kwargs):
291291
super(AddUnavailablePeriodForm, self).__init__(*args, **kwargs)

ietf/group/tests_review.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -428,6 +428,7 @@ def test_change_reviewer_settings(self):
428428
'start_date': start_date.isoformat(),
429429
'end_date': "",
430430
'availability': "unavailable",
431+
'reason': "Whimsy",
431432
})
432433
self.assertEqual(r.status_code, 302)
433434
period = UnavailablePeriod.objects.get(person=reviewer, team=review_req.team, start_date=start_date)
@@ -437,6 +438,7 @@ def test_change_reviewer_settings(self):
437438
msg_content = outbox[0].get_payload(decode=True).decode("utf-8").lower()
438439
self.assertTrue(start_date.isoformat(), msg_content)
439440
self.assertTrue("indefinite", msg_content)
441+
self.assertEqual(period.reason, "Whimsy")
440442

441443
# end unavailable period
442444
empty_outbox()

ietf/group/views.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1694,10 +1694,11 @@ def change_reviewer_settings(request, acronym, reviewer_email, group_type=None):
16941694
in_the_past = period.end_date and period.end_date < today
16951695

16961696
if not in_the_past:
1697-
msg = "Unavailable for review: {} - {} ({})".format(
1697+
msg = "Unavailable for review: {} - {} ({}) {}".format(
16981698
period.start_date.isoformat() if period.start_date else "indefinite",
16991699
period.end_date.isoformat() if period.end_date else "indefinite",
17001700
period.get_availability_display(),
1701+
period.reason,
17011702
)
17021703

17031704
if period.availability == "unavailable":

ietf/review/admin.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ class ReviewSecretarySettingsAdmin(admin.ModelAdmin):
2020
admin.site.register(ReviewSecretarySettings, ReviewSecretarySettingsAdmin)
2121

2222
class UnavailablePeriodAdmin(admin.ModelAdmin):
23-
list_display = ["person", "team", "start_date", "end_date", "availability"]
23+
list_display = ["person", "team", "start_date", "end_date", "availability", "reason"]
2424
list_display_links = ["person"]
2525
list_filter = ["team"]
2626
date_hierarchy = "start_date"

ietf/review/import_from_review_tool.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -164,6 +164,7 @@ def parse_timestamp(t):
164164
start_date=None,
165165
end_date=end_date,
166166
availability="unavailable",
167+
reason="reason",
167168
)
168169

169170
# check that we got the needed names

ietf/review/models.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,7 @@ class UnavailablePeriod(models.Model):
6060
("unavailable", "Completely unavailable - reassign any outstanding reviews"),
6161
]
6262
availability = models.CharField(max_length=30, choices=AVAILABILITY_CHOICES)
63+
reason = models.TextField(verbose_name="Reason why reviewer is unavailable (Optional)", max_length=2048, blank=True, help_text="Provide (for the secretary's benefit) the reason why the review is unavailable", default='')
6364

6465
def state(self):
6566
import datetime

ietf/review/resources.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,7 @@ class Meta:
8686
"start_date": ALL,
8787
"end_date": ALL,
8888
"availability": ALL,
89+
"reason": ALL,
8990
"team": ALL_WITH_RELATIONS,
9091
"person": ALL_WITH_RELATIONS,
9192
}

ietf/templates/group/change_reviewer_settings.html

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,12 +32,18 @@ <h3>Unavailable periods</h3>
3232

3333
{% if unavailable_periods %}
3434
<table class="table">
35+
<th>Period</th>
36+
<th>Availability</th>
37+
<th>Reason</th>
38+
<th> </th>
39+
<th> </th>
3540
{% for o in unavailable_periods %}
3641
<tr class="unavailable-period-{{ o.state }}">
3742
<td>
3843
{{ o.start_date|default:"indefinite" }} - {{ o.end_date|default:"indefinite" }}
3944
</td>
4045
<td>{{ o.get_availability_display }}</td>
46+
<td>{{ o.reason }}</td>
4147
<td>
4248
{% if not o.end_date %}
4349
<form method="post" class="form-inline" style="display:inline-block">
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,14 @@
11
<table class="simple-table">
2+
<tr>
3+
<th>Dates</th>
4+
<th>Availability</th>
5+
<th>Reason</th>
6+
</tr>
27
{% for p in unavailable_periods %}
38
<tr class="unavailable-period-{{ p.state }}">
49
<td> {% if p.start_date or p.end_date %}{{ p.start_date|default:"&infin;" }} -{% endif %} {{ p.end_date|default:"&infin;" }}</td>
510
<td>{{ p.get_availability_display }}</td>
11+
<td>{{ p.reason }}</td>
612
</tr>
713
{% endfor %}
814
</table>

0 commit comments

Comments
 (0)