Skip to content

Commit

Permalink
Added optional reviewer unavailability reason support. Fixes issue #2146
Browse files Browse the repository at this point in the history
.  Commit ready for merge.

 - Legacy-Id: 15342
  • Loading branch information
Spectre17 committed Jul 14, 2018
1 parent c7a9c2f commit f4eba7d
Show file tree
Hide file tree
Showing 10 changed files with 22 additions and 3 deletions.
1 change: 1 addition & 0 deletions docker/settings_local.py
@@ -1,4 +1,5 @@
import os
EMAIL_COPY_TO = 'peter@akayla.com'

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

Expand Down
2 changes: 1 addition & 1 deletion ietf/group/forms.py
Expand Up @@ -285,7 +285,7 @@ def clean_skip_next(self):
class AddUnavailablePeriodForm(forms.ModelForm):
class Meta:
model = UnavailablePeriod
fields = ['start_date', 'end_date', 'availability']
fields = ['start_date', 'end_date', 'availability', 'reason']

def __init__(self, *args, **kwargs):
super(AddUnavailablePeriodForm, self).__init__(*args, **kwargs)
Expand Down
2 changes: 2 additions & 0 deletions ietf/group/tests_review.py
Expand Up @@ -428,6 +428,7 @@ def test_change_reviewer_settings(self):
'start_date': start_date.isoformat(),
'end_date': "",
'availability': "unavailable",
'reason': "Whimsy",
})
self.assertEqual(r.status_code, 302)
period = UnavailablePeriod.objects.get(person=reviewer, team=review_req.team, start_date=start_date)
Expand All @@ -437,6 +438,7 @@ def test_change_reviewer_settings(self):
msg_content = outbox[0].get_payload(decode=True).decode("utf-8").lower()
self.assertTrue(start_date.isoformat(), msg_content)
self.assertTrue("indefinite", msg_content)
self.assertEqual(period.reason, "Whimsy")

# end unavailable period
empty_outbox()
Expand Down
3 changes: 2 additions & 1 deletion ietf/group/views.py
Expand Up @@ -1694,10 +1694,11 @@ def change_reviewer_settings(request, acronym, reviewer_email, group_type=None):
in_the_past = period.end_date and period.end_date < today

if not in_the_past:
msg = "Unavailable for review: {} - {} ({})".format(
msg = "Unavailable for review: {} - {} ({}) {}".format(
period.start_date.isoformat() if period.start_date else "indefinite",
period.end_date.isoformat() if period.end_date else "indefinite",
period.get_availability_display(),
period.reason,
)

if period.availability == "unavailable":
Expand Down
2 changes: 1 addition & 1 deletion ietf/review/admin.py
Expand Up @@ -20,7 +20,7 @@ class ReviewSecretarySettingsAdmin(admin.ModelAdmin):
admin.site.register(ReviewSecretarySettings, ReviewSecretarySettingsAdmin)

class UnavailablePeriodAdmin(admin.ModelAdmin):
list_display = ["person", "team", "start_date", "end_date", "availability"]
list_display = ["person", "team", "start_date", "end_date", "availability", "reason"]
list_display_links = ["person"]
list_filter = ["team"]
date_hierarchy = "start_date"
Expand Down
1 change: 1 addition & 0 deletions ietf/review/import_from_review_tool.py
Expand Up @@ -164,6 +164,7 @@ def parse_timestamp(t):
start_date=None,
end_date=end_date,
availability="unavailable",
reason="reason",
)

# check that we got the needed names
Expand Down
1 change: 1 addition & 0 deletions ietf/review/models.py
Expand Up @@ -60,6 +60,7 @@ class UnavailablePeriod(models.Model):
("unavailable", "Completely unavailable - reassign any outstanding reviews"),
]
availability = models.CharField(max_length=30, choices=AVAILABILITY_CHOICES)
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='')

def state(self):
import datetime
Expand Down
1 change: 1 addition & 0 deletions ietf/review/resources.py
Expand Up @@ -86,6 +86,7 @@ class Meta:
"start_date": ALL,
"end_date": ALL,
"availability": ALL,
"reason": ALL,
"team": ALL_WITH_RELATIONS,
"person": ALL_WITH_RELATIONS,
}
Expand Down
6 changes: 6 additions & 0 deletions ietf/templates/group/change_reviewer_settings.html
Expand Up @@ -32,12 +32,18 @@ <h3>Unavailable periods</h3>

{% if unavailable_periods %}
<table class="table">
<th>Period</th>
<th>Availability</th>
<th>Reason</th>
<th> </th>
<th> </th>
{% for o in unavailable_periods %}
<tr class="unavailable-period-{{ o.state }}">
<td>
{{ o.start_date|default:"indefinite" }} - {{ o.end_date|default:"indefinite" }}
</td>
<td>{{ o.get_availability_display }}</td>
<td>{{ o.reason }}</td>
<td>
{% if not o.end_date %}
<form method="post" class="form-inline" style="display:inline-block">
Expand Down
6 changes: 6 additions & 0 deletions ietf/templates/review/unavailable_table.html
@@ -1,8 +1,14 @@
<table class="simple-table">
<tr>
<th>Dates</th>
<th>Availability</th>
<th>Reason</th>
</tr>
{% for p in unavailable_periods %}
<tr class="unavailable-period-{{ p.state }}">
<td> {% if p.start_date or p.end_date %}{{ p.start_date|default:"&infin;" }} -{% endif %} {{ p.end_date|default:"&infin;" }}</td>
<td>{{ p.get_availability_display }}</td>
<td>{{ p.reason }}</td>
</tr>
{% endfor %}
</table>

0 comments on commit f4eba7d

Please sign in to comment.