Skip to content

Commit 399bb3b

Browse files
committed
Make UnavailablePeriod.start_date nullable and import the unavailable
periods from the Perl tool with start date null as we don't know when they started. - Legacy-Id: 12161
1 parent 38109e5 commit 399bb3b

7 files changed

Lines changed: 34 additions & 13 deletions

File tree

ietf/group/views_review.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -124,7 +124,7 @@ def reviewer_overview(request, acronym, group_type=None):
124124
person.settings_url = urlreverse("ietf.group.views_review.change_reviewer_settings", kwargs=kwargs)
125125
person.unavailable_periods = unavailable_periods.get(person.pk, [])
126126
person.completely_unavailable = any(p.availability == "unavailable"
127-
and p.start_date <= today and (p.end_date is None or today <= p.end_date)
127+
and (p.start_date is None or p.start_date <= today) and (p.end_date is None or today <= p.end_date)
128128
for p in person.unavailable_periods)
129129

130130
MAX_REQS = 5
@@ -384,13 +384,13 @@ class EndUnavailablePeriodForm(forms.Form):
384384
def __init__(self, start_date, *args, **kwargs):
385385
super(EndUnavailablePeriodForm, self).__init__(*args, **kwargs)
386386

387-
self.fields["end_date"] = DatepickerDateField(date_format="yyyy-mm-dd", picker_settings={"autoclose": "1", "start-date": start_date.isoformat() })
387+
self.fields["end_date"] = DatepickerDateField(date_format="yyyy-mm-dd", picker_settings={"autoclose": "1", "start-date": start_date.isoformat() if start_date else "" })
388388

389389
self.start_date = start_date
390390

391391
def clean_end_date(self):
392392
end = self.cleaned_data["end_date"]
393-
if end < self.start_date:
393+
if self.start_date and end < self.start_date:
394394
raise forms.ValidationError("End date must be equal to or come after start date.")
395395
return end
396396

@@ -457,7 +457,7 @@ def change_reviewer_settings(request, acronym, reviewer_email, group_type=None):
457457

458458
if not in_the_past:
459459
msg = "Unavailable for review: {} - {} ({})".format(
460-
period.start_date.isoformat(),
460+
period.start_date.isoformat() if period.start_date else "indefinite",
461461
period.end_date.isoformat() if period.end_date else "indefinite",
462462
period.get_availability_display(),
463463
)
@@ -496,7 +496,7 @@ def change_reviewer_settings(request, acronym, reviewer_email, group_type=None):
496496

497497
if not in_the_past:
498498
msg = "Removed unavailable period: {} - {} ({})".format(
499-
period.start_date.isoformat(),
499+
period.start_date.isoformat() if period.start_date else "indefinite",
500500
period.end_date.isoformat() if period.end_date else "indefinite",
501501
period.get_availability_display(),
502502
)
@@ -518,7 +518,7 @@ def change_reviewer_settings(request, acronym, reviewer_email, group_type=None):
518518
period.save()
519519

520520
msg = "Set end date of unavailable period: {} - {} ({})".format(
521-
period.start_date.isoformat(),
521+
period.start_date.isoformat() if period.start_date else "indefinite",
522522
period.end_date.isoformat() if period.end_date else "indefinite",
523523
period.get_availability_display(),
524524
)

ietf/review/import_from_review_tool.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -145,7 +145,7 @@ def parse_timestamp(t):
145145
UnavailablePeriod.objects.create(
146146
team=team,
147147
person=email.person,
148-
start_date=today,
148+
start_date=None,
149149
end_date=end_date,
150150
availability="unavailable",
151151
)
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
# -*- coding: utf-8 -*-
2+
from __future__ import unicode_literals
3+
4+
from django.db import models, migrations
5+
import datetime
6+
7+
8+
class Migration(migrations.Migration):
9+
10+
dependencies = [
11+
('review', '0001_initial'),
12+
]
13+
14+
operations = [
15+
migrations.AlterField(
16+
model_name='unavailableperiod',
17+
name='start_date',
18+
field=models.DateField(default=datetime.date.today, help_text=b"Choose the start date so that you can still do a review if it's assigned just before the start date - this usually means you should mark yourself unavailable for assignment some time before you are actually away.", null=True),
19+
preserve_default=True,
20+
),
21+
]

ietf/review/models.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ class Meta:
3434
class UnavailablePeriod(models.Model):
3535
team = models.ForeignKey(Group, limit_choices_to=~models.Q(resultusedinreviewteam=None))
3636
person = models.ForeignKey(Person)
37-
start_date = models.DateField(default=datetime.date.today, help_text="Choose the start date so that you can still do a review if it's assigned just before the start date - this usually means you should mark yourself unavailable for assignment some time before you are actually away.")
37+
start_date = models.DateField(default=datetime.date.today, null=True, help_text="Choose the start date so that you can still do a review if it's assigned just before the start date - this usually means you should mark yourself unavailable for assignment some time before you are actually away.")
3838
end_date = models.DateField(blank=True, null=True, help_text="Leaving the end date blank means that the period continues indefinitely. You can end it later.")
3939
AVAILABILITY_CHOICES = [
4040
("canfinish", "Can do follow-ups"),
@@ -49,7 +49,7 @@ class UnavailablePeriod(models.Model):
4949
def state(self):
5050
import datetime
5151
today = datetime.date.today()
52-
if self.start_date <= today:
52+
if self.start_date is None or self.start_date <= today:
5353
if not self.end_date or today <= self.end_date:
5454
return "active"
5555
else:
@@ -58,7 +58,7 @@ def state(self):
5858
return "future"
5959

6060
def __unicode__(self):
61-
return u"{} is unavailable in {} {} - {}".format(self.person, self.team.acronym, self.start_date, self.end_date or "")
61+
return u"{} is unavailable in {} {} - {}".format(self.person, self.team.acronym, self.start_date or "", self.end_date or "")
6262

6363
class ReviewWish(models.Model):
6464
"""Reviewer wishes to review a document when it becomes available for review."""

ietf/review/utils.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ def current_unavailable_periods_for_reviewers(team):
6363

6464
unavailable_period_qs = UnavailablePeriod.objects.filter(
6565
Q(end_date__gte=today) | Q(end_date=None),
66-
start_date__lte=today,
66+
Q(start_date__lte=today) | Q(start_date=None),
6767
team=team,
6868
).order_by("end_date")
6969

ietf/templates/group/change_reviewer_settings.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ <h3>Unavailable periods</h3>
3535
{% for o in unavailable_periods %}
3636
<tr class="unavailable-period-{{ o.state }}">
3737
<td>
38-
{{ o.start_date }} - {{ o.end_date|default:"indefinite" }}
38+
{{ o.start_date|default:"indefinite" }} - {{ o.end_date|default:"indefinite" }}
3939
</td>
4040
<td>{{ o.get_availability_display }}</td>
4141
<td>

ietf/templates/review/unavailable_table.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<table class="simple-table">
22
{% for p in unavailable_periods %}
33
<tr class="unavailable-period-{{ p.state }}">
4-
<td>{{ p.start_date }} - {{ p.end_date|default:"" }}</td>
4+
<td>{{ p.start_date|default:"" }} - {{ p.end_date|default:"" }}</td>
55
<td>{{ p.get_availability_display }}</td>
66
</tr>
77
{% endfor %}

0 commit comments

Comments
 (0)