diff --git a/ietf/group/forms.py b/ietf/group/forms.py index 1f04cc827..8e6aab106 100644 --- a/ietf/group/forms.py +++ b/ietf/group/forms.py @@ -285,7 +285,7 @@ class ReviewerSettingsForm(forms.ModelForm): 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) diff --git a/ietf/group/tests_review.py b/ietf/group/tests_review.py index 66c05bb45..08c4aed7d 100644 --- a/ietf/group/tests_review.py +++ b/ietf/group/tests_review.py @@ -428,6 +428,7 @@ class ReviewTests(TestCase): '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) @@ -437,6 +438,7 @@ class ReviewTests(TestCase): 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() diff --git a/ietf/group/views.py b/ietf/group/views.py index 3e7343099..662c13ecc 100644 --- a/ietf/group/views.py +++ b/ietf/group/views.py @@ -1704,10 +1704,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": diff --git a/ietf/review/admin.py b/ietf/review/admin.py index 30ace82f8..ec2319f03 100644 --- a/ietf/review/admin.py +++ b/ietf/review/admin.py @@ -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" diff --git a/ietf/review/import_from_review_tool.py b/ietf/review/import_from_review_tool.py index 4e1488d2c..868ab4bb6 100755 --- a/ietf/review/import_from_review_tool.py +++ b/ietf/review/import_from_review_tool.py @@ -164,6 +164,7 @@ with db_con.cursor() as c: start_date=None, end_date=end_date, availability="unavailable", + reason="reason", ) # check that we got the needed names diff --git a/ietf/review/models.py b/ietf/review/models.py index f52a94e30..97243aebb 100644 --- a/ietf/review/models.py +++ b/ietf/review/models.py @@ -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 diff --git a/ietf/review/resources.py b/ietf/review/resources.py index 85e22c8b0..4ef8e8dd9 100644 --- a/ietf/review/resources.py +++ b/ietf/review/resources.py @@ -86,6 +86,7 @@ class UnavailablePeriodResource(ModelResource): "start_date": ALL, "end_date": ALL, "availability": ALL, + "reason": ALL, "team": ALL_WITH_RELATIONS, "person": ALL_WITH_RELATIONS, } diff --git a/ietf/templates/group/change_reviewer_settings.html b/ietf/templates/group/change_reviewer_settings.html index e77b63ccd..cee48d9ea 100644 --- a/ietf/templates/group/change_reviewer_settings.html +++ b/ietf/templates/group/change_reviewer_settings.html @@ -32,12 +32,18 @@ {% if unavailable_periods %}
Period | +Availability | +Reason | ++ | {% for o in unavailable_periods %} |
---|---|---|---|
{{ o.start_date|default:"indefinite" }} - {{ o.end_date|default:"indefinite" }} | {{ o.get_availability_display }} | +{{ o.reason }} | {% if not o.end_date %} |