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
This commit is contained in:
parent
38109e5f13
commit
399bb3bf4d
|
@ -124,7 +124,7 @@ def reviewer_overview(request, acronym, group_type=None):
|
|||
person.settings_url = urlreverse("ietf.group.views_review.change_reviewer_settings", kwargs=kwargs)
|
||||
person.unavailable_periods = unavailable_periods.get(person.pk, [])
|
||||
person.completely_unavailable = any(p.availability == "unavailable"
|
||||
and p.start_date <= today and (p.end_date is None or today <= p.end_date)
|
||||
and (p.start_date is None or p.start_date <= today) and (p.end_date is None or today <= p.end_date)
|
||||
for p in person.unavailable_periods)
|
||||
|
||||
MAX_REQS = 5
|
||||
|
@ -384,13 +384,13 @@ class EndUnavailablePeriodForm(forms.Form):
|
|||
def __init__(self, start_date, *args, **kwargs):
|
||||
super(EndUnavailablePeriodForm, self).__init__(*args, **kwargs)
|
||||
|
||||
self.fields["end_date"] = DatepickerDateField(date_format="yyyy-mm-dd", picker_settings={"autoclose": "1", "start-date": start_date.isoformat() })
|
||||
self.fields["end_date"] = DatepickerDateField(date_format="yyyy-mm-dd", picker_settings={"autoclose": "1", "start-date": start_date.isoformat() if start_date else "" })
|
||||
|
||||
self.start_date = start_date
|
||||
|
||||
def clean_end_date(self):
|
||||
end = self.cleaned_data["end_date"]
|
||||
if end < self.start_date:
|
||||
if self.start_date and end < self.start_date:
|
||||
raise forms.ValidationError("End date must be equal to or come after start date.")
|
||||
return end
|
||||
|
||||
|
@ -457,7 +457,7 @@ def change_reviewer_settings(request, acronym, reviewer_email, group_type=None):
|
|||
|
||||
if not in_the_past:
|
||||
msg = "Unavailable for review: {} - {} ({})".format(
|
||||
period.start_date.isoformat(),
|
||||
period.start_date.isoformat() if period.start_date else "indefinite",
|
||||
period.end_date.isoformat() if period.end_date else "indefinite",
|
||||
period.get_availability_display(),
|
||||
)
|
||||
|
@ -496,7 +496,7 @@ def change_reviewer_settings(request, acronym, reviewer_email, group_type=None):
|
|||
|
||||
if not in_the_past:
|
||||
msg = "Removed unavailable period: {} - {} ({})".format(
|
||||
period.start_date.isoformat(),
|
||||
period.start_date.isoformat() if period.start_date else "indefinite",
|
||||
period.end_date.isoformat() if period.end_date else "indefinite",
|
||||
period.get_availability_display(),
|
||||
)
|
||||
|
@ -518,7 +518,7 @@ def change_reviewer_settings(request, acronym, reviewer_email, group_type=None):
|
|||
period.save()
|
||||
|
||||
msg = "Set end date of unavailable period: {} - {} ({})".format(
|
||||
period.start_date.isoformat(),
|
||||
period.start_date.isoformat() if period.start_date else "indefinite",
|
||||
period.end_date.isoformat() if period.end_date else "indefinite",
|
||||
period.get_availability_display(),
|
||||
)
|
||||
|
|
|
@ -145,7 +145,7 @@ with db_con.cursor() as c:
|
|||
UnavailablePeriod.objects.create(
|
||||
team=team,
|
||||
person=email.person,
|
||||
start_date=today,
|
||||
start_date=None,
|
||||
end_date=end_date,
|
||||
availability="unavailable",
|
||||
)
|
||||
|
|
21
ietf/review/migrations/0002_auto_20161017_1218.py
Normal file
21
ietf/review/migrations/0002_auto_20161017_1218.py
Normal file
|
@ -0,0 +1,21 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.db import models, migrations
|
||||
import datetime
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('review', '0001_initial'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name='unavailableperiod',
|
||||
name='start_date',
|
||||
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),
|
||||
preserve_default=True,
|
||||
),
|
||||
]
|
|
@ -34,7 +34,7 @@ class ReviewerSettings(models.Model):
|
|||
class UnavailablePeriod(models.Model):
|
||||
team = models.ForeignKey(Group, limit_choices_to=~models.Q(resultusedinreviewteam=None))
|
||||
person = models.ForeignKey(Person)
|
||||
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.")
|
||||
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.")
|
||||
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.")
|
||||
AVAILABILITY_CHOICES = [
|
||||
("canfinish", "Can do follow-ups"),
|
||||
|
@ -49,7 +49,7 @@ class UnavailablePeriod(models.Model):
|
|||
def state(self):
|
||||
import datetime
|
||||
today = datetime.date.today()
|
||||
if self.start_date <= today:
|
||||
if self.start_date is None or self.start_date <= today:
|
||||
if not self.end_date or today <= self.end_date:
|
||||
return "active"
|
||||
else:
|
||||
|
@ -58,7 +58,7 @@ class UnavailablePeriod(models.Model):
|
|||
return "future"
|
||||
|
||||
def __unicode__(self):
|
||||
return u"{} is unavailable in {} {} - {}".format(self.person, self.team.acronym, self.start_date, self.end_date or "")
|
||||
return u"{} is unavailable in {} {} - {}".format(self.person, self.team.acronym, self.start_date or "", self.end_date or "")
|
||||
|
||||
class ReviewWish(models.Model):
|
||||
"""Reviewer wishes to review a document when it becomes available for review."""
|
||||
|
|
|
@ -63,7 +63,7 @@ def current_unavailable_periods_for_reviewers(team):
|
|||
|
||||
unavailable_period_qs = UnavailablePeriod.objects.filter(
|
||||
Q(end_date__gte=today) | Q(end_date=None),
|
||||
start_date__lte=today,
|
||||
Q(start_date__lte=today) | Q(start_date=None),
|
||||
team=team,
|
||||
).order_by("end_date")
|
||||
|
||||
|
|
|
@ -35,7 +35,7 @@
|
|||
{% for o in unavailable_periods %}
|
||||
<tr class="unavailable-period-{{ o.state }}">
|
||||
<td>
|
||||
{{ o.start_date }} - {{ o.end_date|default:"indefinite" }}
|
||||
{{ o.start_date|default:"indefinite" }} - {{ o.end_date|default:"indefinite" }}
|
||||
</td>
|
||||
<td>{{ o.get_availability_display }}</td>
|
||||
<td>
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
<table class="simple-table">
|
||||
{% for p in unavailable_periods %}
|
||||
<tr class="unavailable-period-{{ p.state }}">
|
||||
<td>{{ p.start_date }} - {{ p.end_date|default:"" }}</td>
|
||||
<td>{{ p.start_date|default:"" }} - {{ p.end_date|default:"" }}</td>
|
||||
<td>{{ p.get_availability_display }}</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
|
|
Loading…
Reference in a new issue