Skip to content

Commit a653582

Browse files
fix: timezone fixes from last few comparisons with tzaware-obe
1 parent 448cfbb commit a653582

25 files changed

Lines changed: 107 additions & 89 deletions

File tree

ietf/nomcom/management/commands/send_reminders.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,14 @@
22
# -*- coding: utf-8 -*-
33

44

5-
import datetime
65
import syslog
76

87
from django.core.management.base import BaseCommand
98

109
from ietf.nomcom.models import NomCom, NomineePosition
1110
from ietf.nomcom.utils import send_accept_reminder_to_nominee,send_questionnaire_reminder_to_nominee
11+
from ietf.utils.timezone import date_today
12+
1213

1314
def log(message):
1415
syslog.syslog(message)
@@ -27,10 +28,10 @@ def handle(self, *args, **options):
2728
for nomcom in NomCom.objects.filter(group__state__slug='active'):
2829
nps = NomineePosition.objects.filter(nominee__nomcom=nomcom,nominee__duplicated__isnull=True)
2930
for nominee_position in nps.pending():
30-
if is_time_to_send(nomcom, datetime.date.today(), nominee_position.time.date()):
31+
if is_time_to_send(nomcom, date_today(), nominee_position.time.date()):
3132
send_accept_reminder_to_nominee(nominee_position)
3233
log('Sent accept reminder to %s' % nominee_position.nominee.email.address)
3334
for nominee_position in nps.accepted().without_questionnaire_response():
34-
if is_time_to_send(nomcom, datetime.date.today(), nominee_position.time.date()):
35+
if is_time_to_send(nomcom, date_today(), nominee_position.time.date()):
3536
send_questionnaire_reminder_to_nominee(nominee_position)
3637
log('Sent questionnaire reminder to %s' % nominee_position.nominee.email.address)

ietf/nomcom/tests.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@
5050
from ietf.stats.factories import MeetingRegistrationFactory
5151
from ietf.utils.mail import outbox, empty_outbox, get_payload_text
5252
from ietf.utils.test_utils import login_testing_unauthorized, TestCase, unicontent
53-
from ietf.utils.timezone import datetime_today, datetime_from_date, DEADLINE_TZINFO
53+
from ietf.utils.timezone import date_today, datetime_today, datetime_from_date, DEADLINE_TZINFO
5454

5555

5656
client_test_cert_files = None
@@ -1130,7 +1130,7 @@ def tearDown(self):
11301130

11311131
def test_is_time_to_send(self):
11321132
self.nomcom.reminder_interval = 4
1133-
today = datetime.date.today()
1133+
today = date_today()
11341134
self.assertTrue(is_time_to_send(self.nomcom,today+datetime.timedelta(days=4),today))
11351135
for delta in range(4):
11361136
self.assertFalse(is_time_to_send(self.nomcom,today+datetime.timedelta(days=delta),today))
@@ -1236,7 +1236,7 @@ def test_nominations_closed(self):
12361236
self.assertIn( 'closed', q('.alert-warning').text())
12371237

12381238
def test_acceptance_closed(self):
1239-
today = datetime.date.today().strftime('%Y%m%d')
1239+
today = date_today().strftime('%Y%m%d')
12401240
pid = self.nc.position_set.first().nomineeposition_set.order_by('pk').first().id
12411241
url = reverse('ietf.nomcom.views.process_nomination_status', kwargs = {
12421242
'year' : self.nc.year(),
@@ -1892,7 +1892,7 @@ def first_meeting_of_year(year):
18921892
assert year >= 1990
18931893
return (year-1985)*3+2
18941894
# Create meetings to ensure we have the 'last 5'
1895-
meeting_start = first_meeting_of_year(datetime.date.today().year-2)
1895+
meeting_start = first_meeting_of_year(date_today().year-2)
18961896
# Populate the meeting registration records
18971897
for number in range(meeting_start, meeting_start+10):
18981898
meeting = MeetingFactory.create(type_id='ietf', number=number)

ietf/nomcom/utils.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@
3333
from ietf.utils.mail import send_mail_text, send_mail, get_payload_text
3434
from ietf.utils.log import log
3535
from ietf.person.name import unidecode_name
36-
from ietf.utils.timezone import datetime_from_date, datetime_today, DEADLINE_TZINFO
36+
from ietf.utils.timezone import date_today, datetime_from_date, datetime_today, DEADLINE_TZINFO
3737

3838
import debug # pyflakes:ignore
3939

@@ -240,7 +240,7 @@ def validate_public_key(public_key):
240240

241241

242242
def send_accept_reminder_to_nominee(nominee_position):
243-
today = datetime.date.today().strftime('%Y%m%d')
243+
today = date_today().strftime('%Y%m%d')
244244
subject = 'Reminder: please accept (or decline) your nomination.'
245245
domain = Site.objects.get_current().domain
246246
position = nominee_position.position
@@ -332,7 +332,7 @@ def make_nomineeposition(nomcom, candidate, position, author):
332332
from_email = settings.NOMCOM_FROM_EMAIL.format(year=nomcom.year())
333333
(to_email, cc) = gather_address_lists('nomination_new_nominee',nominee=nominee.email.address)
334334
domain = Site.objects.get_current().domain
335-
today = datetime.date.today().strftime('%Y%m%d')
335+
today = date_today().strftime('%Y%m%d')
336336
hash = get_hash_nominee_position(today, nominee_position.id)
337337
accept_url = reverse('ietf.nomcom.views.process_nomination_status',
338338
None,

ietf/nomcom/views.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,8 @@
4545
from ietf.ietfauth.utils import role_required
4646
from ietf.person.models import Person
4747
from ietf.utils.response import permission_denied
48+
from ietf.utils.timezone import date_today
49+
4850

4951
import debug # pyflakes:ignore
5052

@@ -702,7 +704,7 @@ def process_nomination_status(request, year, nominee_position_id, state, date, h
702704
expiration_days = getattr(settings, 'DAYS_TO_EXPIRE_NOMINATION_LINK', None)
703705
if expiration_days:
704706
request_date = datetime.date(int(date[:4]), int(date[4:6]), int(date[6:]))
705-
if datetime.date.today() > (request_date + datetime.timedelta(days=settings.DAYS_TO_EXPIRE_NOMINATION_LINK)):
707+
if date_today() > (request_date + datetime.timedelta(days=expiration_days)):
706708
permission_denied(request, "Link expired.")
707709

708710
need_confirmation = True

ietf/person/templatetags/person_filters.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,14 +8,15 @@
88

99
from ietf.nomcom.utils import is_eligible
1010
from ietf.person.models import Alias
11+
from ietf.utils.timezone import date_today
1112

1213
register = template.Library()
1314

1415

1516
@register.filter
1617
def is_nomcom_eligible(person, date=None):
1718
if date is None:
18-
date = datetime.date.today()
19+
date = date_today()
1920
return is_eligible(person=person, date=date)
2021

2122

ietf/person/views.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
from django.db.models import Q
1111
from django.http import HttpResponse, Http404
1212
from django.shortcuts import render, get_object_or_404, redirect
13+
from django.utils import timezone
1314

1415
import debug # pyflakes:ignore
1516

@@ -76,7 +77,7 @@ def profile(request, email_or_name):
7677
persons = [ p for p in persons if p and p.id ]
7778
if not persons:
7879
raise Http404
79-
return render(request, 'person/profile.html', {'persons': persons, 'today':datetime.date.today()})
80+
return render(request, 'person/profile.html', {'persons': persons, 'today': timezone.now()})
8081

8182

8283
def photo(request, email_or_name):

ietf/review/mailarch.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,8 @@
2525
from django.utils.encoding import force_bytes, force_str
2626

2727
from ietf.utils.mail import get_payload_text
28+
from ietf.utils.timezone import date_today
29+
2830

2931
def list_name_from_email(list_email):
3032
if not list_email.endswith("@ietf.org"):
@@ -51,7 +53,7 @@ def construct_query_urls(doc, team, query=None):
5153

5254
encoded_query = "?" + urlencode({
5355
"qdr": "c", # custom time frame
54-
"start_date": (datetime.date.today() - datetime.timedelta(days=180)).isoformat(),
56+
"start_date": (date_today() - datetime.timedelta(days=180)).isoformat(),
5557
"email_list": list_name,
5658
"q": "subject:({})".format(query),
5759
"as": "1", # this is an advanced search

ietf/review/models.py

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,6 @@
22
# -*- coding: utf-8 -*-
33

44

5-
import datetime
6-
75
from simple_history.models import HistoricalRecords
86

97
from django.db import models
@@ -18,6 +16,8 @@
1816
ReviewAssignmentStateName, ReviewerQueuePolicyName
1917
from ietf.utils.validators import validate_regular_expression_string
2018
from ietf.utils.models import ForeignKey, OneToOneField
19+
from ietf.utils.timezone import date_today
20+
2121

2222
class ReviewerSettings(models.Model):
2323
"""Keeps track of admin data associated with a reviewer in a team."""
@@ -67,7 +67,7 @@ class UnavailablePeriod(models.Model):
6767
history = HistoricalRecords(history_change_reason_field=models.TextField(null=True))
6868
team = ForeignKey(Group, limit_choices_to=~models.Q(reviewteamsettings=None))
6969
person = ForeignKey(Person)
70-
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. The default is today.")
70+
start_date = models.DateField(default=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. The default is today.")
7171
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.")
7272
AVAILABILITY_CHOICES = [
7373
("canfinish", "Can do follow-ups"),
@@ -81,8 +81,7 @@ class UnavailablePeriod(models.Model):
8181
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='')
8282

8383
def state(self):
84-
import datetime
85-
today = datetime.date.today()
84+
today = date_today()
8685
if self.start_date is None or self.start_date <= today:
8786
if not self.end_date or today <= self.end_date:
8887
return "active"

ietf/review/utils.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@
3232
from ietf.utils.mail import send_mail
3333
from ietf.doc.utils import extract_complete_replaces_ancestor_mapping_for_docs
3434
from ietf.utils import log
35-
from ietf.utils.timezone import datetime_today, DEADLINE_TZINFO
35+
from ietf.utils.timezone import date_today, datetime_today, DEADLINE_TZINFO
3636

3737

3838
# The origin date is used to have a single reference date for "every X days".
@@ -93,12 +93,12 @@ def no_review_from_teams_on_doc(doc, rev):
9393

9494
def unavailable_periods_to_list(past_days=14):
9595
return UnavailablePeriod.objects.filter(
96-
Q(end_date=None) | Q(end_date__gte=datetime.date.today() - datetime.timedelta(days=past_days)),
96+
Q(end_date=None) | Q(end_date__gte=date_today() - datetime.timedelta(days=past_days)),
9797
).order_by("start_date")
9898

9999
def current_unavailable_periods_for_reviewers(team):
100100
"""Return dict with currently active unavailable periods for reviewers."""
101-
today = datetime.date.today()
101+
today = date_today()
102102

103103
unavailable_period_qs = UnavailablePeriod.objects.filter(
104104
Q(end_date__gte=today) | Q(end_date=None),
@@ -877,7 +877,7 @@ def email_reviewer_reminder(assignment):
877877
review_request = assignment.review_request
878878
team = review_request.team
879879

880-
deadline_days = (review_request.deadline - datetime.date.today()).days
880+
deadline_days = (review_request.deadline - date_today(DEADLINE_TZINFO)).days
881881

882882
subject = "Reminder: deadline for review of {} in {} is {}".format(review_request.doc.name, team.acronym, review_request.deadline.isoformat())
883883

@@ -943,7 +943,7 @@ def email_secretary_reminder(assignment, secretary_role):
943943
review_request = assignment.review_request
944944
team = review_request.team
945945

946-
deadline_days = (review_request.deadline - datetime.date.today()).days
946+
deadline_days = (review_request.deadline - date_today(DEADLINE_TZINFO)).days
947947

948948
subject = "Reminder: deadline for review of {} in {} is {}".format(review_request.doc.name, team.acronym, review_request.deadline.isoformat())
949949

ietf/secr/meetings/views.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@
3131
from ietf.secr.sreq.views import get_initial_session
3232
from ietf.secr.utils.meeting import get_session, get_timeslot
3333
from ietf.mailtrigger.utils import gather_address_lists
34-
from ietf.utils.timezone import make_aware
34+
from ietf.utils.timezone import date_today, make_aware
3535

3636

3737
# prep for agenda changes
@@ -314,7 +314,7 @@ def blue_sheet_redirect(request):
314314
This is the generic blue sheet URL. It gets the next IETF meeting and redirects
315315
to the meeting specific URL.
316316
'''
317-
today = datetime.date.today()
317+
today = date_today()
318318
qs = Meeting.objects.filter(date__gt=today,type='ietf').order_by('date')
319319
if qs:
320320
meeting = qs[0]

0 commit comments

Comments
 (0)