fix: timezone fixes from last few comparisons with tzaware-obe

This commit is contained in:
Jennifer Richards 2022-09-28 13:21:50 -03:00
parent 448cfbb13d
commit a653582cf7
No known key found for this signature in database
GPG key ID: 26801E4DC0928410
25 changed files with 107 additions and 89 deletions

View file

@ -2,13 +2,14 @@
# -*- coding: utf-8 -*-
import datetime
import syslog
from django.core.management.base import BaseCommand
from ietf.nomcom.models import NomCom, NomineePosition
from ietf.nomcom.utils import send_accept_reminder_to_nominee,send_questionnaire_reminder_to_nominee
from ietf.utils.timezone import date_today
def log(message):
syslog.syslog(message)
@ -27,10 +28,10 @@ class Command(BaseCommand):
for nomcom in NomCom.objects.filter(group__state__slug='active'):
nps = NomineePosition.objects.filter(nominee__nomcom=nomcom,nominee__duplicated__isnull=True)
for nominee_position in nps.pending():
if is_time_to_send(nomcom, datetime.date.today(), nominee_position.time.date()):
if is_time_to_send(nomcom, date_today(), nominee_position.time.date()):
send_accept_reminder_to_nominee(nominee_position)
log('Sent accept reminder to %s' % nominee_position.nominee.email.address)
for nominee_position in nps.accepted().without_questionnaire_response():
if is_time_to_send(nomcom, datetime.date.today(), nominee_position.time.date()):
if is_time_to_send(nomcom, date_today(), nominee_position.time.date()):
send_questionnaire_reminder_to_nominee(nominee_position)
log('Sent questionnaire reminder to %s' % nominee_position.nominee.email.address)

View file

@ -50,7 +50,7 @@ from ietf.stats.models import MeetingRegistration
from ietf.stats.factories import MeetingRegistrationFactory
from ietf.utils.mail import outbox, empty_outbox, get_payload_text
from ietf.utils.test_utils import login_testing_unauthorized, TestCase, unicontent
from ietf.utils.timezone import datetime_today, datetime_from_date, DEADLINE_TZINFO
from ietf.utils.timezone import date_today, datetime_today, datetime_from_date, DEADLINE_TZINFO
client_test_cert_files = None
@ -1130,7 +1130,7 @@ class ReminderTest(TestCase):
def test_is_time_to_send(self):
self.nomcom.reminder_interval = 4
today = datetime.date.today()
today = date_today()
self.assertTrue(is_time_to_send(self.nomcom,today+datetime.timedelta(days=4),today))
for delta in range(4):
self.assertFalse(is_time_to_send(self.nomcom,today+datetime.timedelta(days=delta),today))
@ -1236,7 +1236,7 @@ class InactiveNomcomTests(TestCase):
self.assertIn( 'closed', q('.alert-warning').text())
def test_acceptance_closed(self):
today = datetime.date.today().strftime('%Y%m%d')
today = date_today().strftime('%Y%m%d')
pid = self.nc.position_set.first().nomineeposition_set.order_by('pk').first().id
url = reverse('ietf.nomcom.views.process_nomination_status', kwargs = {
'year' : self.nc.year(),
@ -1892,7 +1892,7 @@ Junk body for testing
assert year >= 1990
return (year-1985)*3+2
# Create meetings to ensure we have the 'last 5'
meeting_start = first_meeting_of_year(datetime.date.today().year-2)
meeting_start = first_meeting_of_year(date_today().year-2)
# Populate the meeting registration records
for number in range(meeting_start, meeting_start+10):
meeting = MeetingFactory.create(type_id='ietf', number=number)

View file

@ -33,7 +33,7 @@ from ietf.utils.pipe import pipe
from ietf.utils.mail import send_mail_text, send_mail, get_payload_text
from ietf.utils.log import log
from ietf.person.name import unidecode_name
from ietf.utils.timezone import datetime_from_date, datetime_today, DEADLINE_TZINFO
from ietf.utils.timezone import date_today, datetime_from_date, datetime_today, DEADLINE_TZINFO
import debug # pyflakes:ignore
@ -240,7 +240,7 @@ def validate_public_key(public_key):
def send_accept_reminder_to_nominee(nominee_position):
today = datetime.date.today().strftime('%Y%m%d')
today = date_today().strftime('%Y%m%d')
subject = 'Reminder: please accept (or decline) your nomination.'
domain = Site.objects.get_current().domain
position = nominee_position.position
@ -332,7 +332,7 @@ def make_nomineeposition(nomcom, candidate, position, author):
from_email = settings.NOMCOM_FROM_EMAIL.format(year=nomcom.year())
(to_email, cc) = gather_address_lists('nomination_new_nominee',nominee=nominee.email.address)
domain = Site.objects.get_current().domain
today = datetime.date.today().strftime('%Y%m%d')
today = date_today().strftime('%Y%m%d')
hash = get_hash_nominee_position(today, nominee_position.id)
accept_url = reverse('ietf.nomcom.views.process_nomination_status',
None,

View file

@ -45,6 +45,8 @@ from ietf.nomcom.utils import (get_nomcom_by_year, store_nomcom_private_key, sug
from ietf.ietfauth.utils import role_required
from ietf.person.models import Person
from ietf.utils.response import permission_denied
from ietf.utils.timezone import date_today
import debug # pyflakes:ignore
@ -702,7 +704,7 @@ def process_nomination_status(request, year, nominee_position_id, state, date, h
expiration_days = getattr(settings, 'DAYS_TO_EXPIRE_NOMINATION_LINK', None)
if expiration_days:
request_date = datetime.date(int(date[:4]), int(date[4:6]), int(date[6:]))
if datetime.date.today() > (request_date + datetime.timedelta(days=settings.DAYS_TO_EXPIRE_NOMINATION_LINK)):
if date_today() > (request_date + datetime.timedelta(days=expiration_days)):
permission_denied(request, "Link expired.")
need_confirmation = True

View file

@ -8,6 +8,7 @@ import debug # pyflakes:ignore
from ietf.nomcom.utils import is_eligible
from ietf.person.models import Alias
from ietf.utils.timezone import date_today
register = template.Library()
@ -15,7 +16,7 @@ register = template.Library()
@register.filter
def is_nomcom_eligible(person, date=None):
if date is None:
date = datetime.date.today()
date = date_today()
return is_eligible(person=person, date=date)

View file

@ -10,6 +10,7 @@ from django.contrib import messages
from django.db.models import Q
from django.http import HttpResponse, Http404
from django.shortcuts import render, get_object_or_404, redirect
from django.utils import timezone
import debug # pyflakes:ignore
@ -76,7 +77,7 @@ def profile(request, email_or_name):
persons = [ p for p in persons if p and p.id ]
if not persons:
raise Http404
return render(request, 'person/profile.html', {'persons': persons, 'today':datetime.date.today()})
return render(request, 'person/profile.html', {'persons': persons, 'today': timezone.now()})
def photo(request, email_or_name):

View file

@ -25,6 +25,8 @@ from django.conf import settings
from django.utils.encoding import force_bytes, force_str
from ietf.utils.mail import get_payload_text
from ietf.utils.timezone import date_today
def list_name_from_email(list_email):
if not list_email.endswith("@ietf.org"):
@ -51,7 +53,7 @@ def construct_query_urls(doc, team, query=None):
encoded_query = "?" + urlencode({
"qdr": "c", # custom time frame
"start_date": (datetime.date.today() - datetime.timedelta(days=180)).isoformat(),
"start_date": (date_today() - datetime.timedelta(days=180)).isoformat(),
"email_list": list_name,
"q": "subject:({})".format(query),
"as": "1", # this is an advanced search

View file

@ -2,8 +2,6 @@
# -*- coding: utf-8 -*-
import datetime
from simple_history.models import HistoricalRecords
from django.db import models
@ -18,6 +16,8 @@ from ietf.name.models import ReviewTypeName, ReviewRequestStateName, ReviewResul
ReviewAssignmentStateName, ReviewerQueuePolicyName
from ietf.utils.validators import validate_regular_expression_string
from ietf.utils.models import ForeignKey, OneToOneField
from ietf.utils.timezone import date_today
class ReviewerSettings(models.Model):
"""Keeps track of admin data associated with a reviewer in a team."""
@ -67,7 +67,7 @@ class UnavailablePeriod(models.Model):
history = HistoricalRecords(history_change_reason_field=models.TextField(null=True))
team = ForeignKey(Group, limit_choices_to=~models.Q(reviewteamsettings=None))
person = ForeignKey(Person)
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.")
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.")
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"),
@ -81,8 +81,7 @@ class UnavailablePeriod(models.Model):
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
today = datetime.date.today()
today = 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"

View file

@ -32,7 +32,7 @@ from ietf.review.models import (ReviewRequest, ReviewAssignment, ReviewRequestSt
from ietf.utils.mail import send_mail
from ietf.doc.utils import extract_complete_replaces_ancestor_mapping_for_docs
from ietf.utils import log
from ietf.utils.timezone import datetime_today, DEADLINE_TZINFO
from ietf.utils.timezone import date_today, datetime_today, DEADLINE_TZINFO
# 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):
def unavailable_periods_to_list(past_days=14):
return UnavailablePeriod.objects.filter(
Q(end_date=None) | Q(end_date__gte=datetime.date.today() - datetime.timedelta(days=past_days)),
Q(end_date=None) | Q(end_date__gte=date_today() - datetime.timedelta(days=past_days)),
).order_by("start_date")
def current_unavailable_periods_for_reviewers(team):
"""Return dict with currently active unavailable periods for reviewers."""
today = datetime.date.today()
today = date_today()
unavailable_period_qs = UnavailablePeriod.objects.filter(
Q(end_date__gte=today) | Q(end_date=None),
@ -877,7 +877,7 @@ def email_reviewer_reminder(assignment):
review_request = assignment.review_request
team = review_request.team
deadline_days = (review_request.deadline - datetime.date.today()).days
deadline_days = (review_request.deadline - date_today(DEADLINE_TZINFO)).days
subject = "Reminder: deadline for review of {} in {} is {}".format(review_request.doc.name, team.acronym, review_request.deadline.isoformat())
@ -943,7 +943,7 @@ def email_secretary_reminder(assignment, secretary_role):
review_request = assignment.review_request
team = review_request.team
deadline_days = (review_request.deadline - datetime.date.today()).days
deadline_days = (review_request.deadline - date_today(DEADLINE_TZINFO)).days
subject = "Reminder: deadline for review of {} in {} is {}".format(review_request.doc.name, team.acronym, review_request.deadline.isoformat())

View file

@ -31,7 +31,7 @@ from ietf.secr.meetings.forms import ( BaseMeetingRoomFormSet, MeetingModelForm,
from ietf.secr.sreq.views import get_initial_session
from ietf.secr.utils.meeting import get_session, get_timeslot
from ietf.mailtrigger.utils import gather_address_lists
from ietf.utils.timezone import make_aware
from ietf.utils.timezone import date_today, make_aware
# prep for agenda changes
@ -314,7 +314,7 @@ def blue_sheet_redirect(request):
This is the generic blue sheet URL. It gets the next IETF meeting and redirects
to the meeting specific URL.
'''
today = datetime.date.today()
today = date_today()
qs = Meeting.objects.filter(date__gt=today,type='ietf').order_by('date')
if qs:
meeting = qs[0]

View file

@ -27,6 +27,7 @@ from ietf.meeting.utils import add_event_info_to_session_qs
from ietf.secr.proceedings.forms import RecordingForm, RecordingEditForm
from ietf.secr.proceedings.proc_utils import (create_recording)
from ietf.utils.timezone import date_today
# -------------------------------------------------
# Globals
@ -154,7 +155,7 @@ def main(request):
meetings = Meeting.objects.filter(type='ietf').order_by('-number')
else:
# select meetings still within the cutoff period
today = datetime.date.today()
today = date_today()
meetings = [m for m in Meeting.objects.filter(type='ietf').order_by('-number') if m.get_submission_correction_date()>=today]
groups = get_my_groups(request.user)
@ -165,7 +166,7 @@ def main(request):
m.group = m.session_set.first().group
# we today's date to see if we're past the submissio cutoff
today = datetime.date.today()
today = date_today()
return render(request, 'proceedings/main.html',{
'meetings': meetings,

View file

@ -16,6 +16,8 @@ from ietf.name.models import ConstraintName, TimerangeName
from ietf.person.models import Person
from ietf.secr.sreq.forms import SessionForm
from ietf.utils.mail import outbox, empty_outbox, get_payload_text
from ietf.utils.timezone import date_today
from pyquery import PyQuery
@ -23,7 +25,7 @@ SECR_USER='secretary'
class SreqUrlTests(TestCase):
def test_urls(self):
MeetingFactory(type_id='ietf',date=datetime.date.today())
MeetingFactory(type_id='ietf',date=date_today())
self.client.login(username="secretary", password="secretary+password")
@ -39,7 +41,7 @@ class SreqUrlTests(TestCase):
class SessionRequestTestCase(TestCase):
def test_main(self):
meeting = MeetingFactory(type_id='ietf', date=datetime.date.today())
meeting = MeetingFactory(type_id='ietf', date=date_today())
SessionFactory.create_batch(2, meeting=meeting, status_id='sched')
SessionFactory.create_batch(2, meeting=meeting, status_id='disappr')
# An additional unscheduled group comes from make_immutable_base_data
@ -53,7 +55,7 @@ class SessionRequestTestCase(TestCase):
self.assertEqual(len(unsched), 11)
def test_approve(self):
meeting = MeetingFactory(type_id='ietf', date=datetime.date.today())
meeting = MeetingFactory(type_id='ietf', date=date_today())
ad = Person.objects.get(user__username='ad')
area = RoleFactory(name_id='ad', person=ad, group__type_id='area').group
mars = GroupFactory(parent=area, acronym='mars')
@ -66,7 +68,7 @@ class SessionRequestTestCase(TestCase):
self.assertEqual(SchedulingEvent.objects.filter(session=session).order_by('-id')[0].status_id, 'appr')
def test_cancel(self):
meeting = MeetingFactory(type_id='ietf', date=datetime.date.today())
meeting = MeetingFactory(type_id='ietf', date=date_today())
ad = Person.objects.get(user__username='ad')
area = RoleFactory(name_id='ad', person=ad, group__type_id='area').group
session = SessionFactory(meeting=meeting, group__parent=area, group__acronym='mars', status_id='sched')
@ -77,7 +79,7 @@ class SessionRequestTestCase(TestCase):
self.assertEqual(SchedulingEvent.objects.filter(session=session).order_by('-id')[0].status_id, 'deleted')
def test_edit(self):
meeting = MeetingFactory(type_id='ietf', date=datetime.date.today())
meeting = MeetingFactory(type_id='ietf', date=date_today())
mars = RoleFactory(name_id='chair', person__user__username='marschairman', group__acronym='mars').group
group2 = GroupFactory()
group3 = GroupFactory()
@ -367,7 +369,7 @@ class SessionRequestTestCase(TestCase):
self.assertEqual(len(mars.constraint_source_set.filter(name_id='conflict')), 0)
def test_tool_status(self):
MeetingFactory(type_id='ietf', date=datetime.date.today())
MeetingFactory(type_id='ietf', date=date_today())
url = reverse('ietf.secr.sreq.views.tool_status')
self.client.login(username="secretary", password="secretary+password")
r = self.client.get(url)
@ -438,7 +440,7 @@ class SubmitRequestCase(TestCase):
MeetingFactory.reset_sequence(0)
def test_submit_request(self):
meeting = MeetingFactory(type_id='ietf', date=datetime.date.today())
meeting = MeetingFactory(type_id='ietf', date=date_today())
ad = Person.objects.get(user__username='ad')
area = RoleFactory(name_id='ad', person=ad, group__type_id='area').group
group = GroupFactory(parent=area)
@ -506,7 +508,7 @@ class SubmitRequestCase(TestCase):
self.assertEqual(list(session.joint_with_groups.all()), [group3, group4])
def test_submit_request_invalid(self):
MeetingFactory(type_id='ietf', date=datetime.date.today())
MeetingFactory(type_id='ietf', date=date_today())
ad = Person.objects.get(user__username='ad')
area = RoleFactory(name_id='ad', person=ad, group__type_id='area').group
group = GroupFactory(parent=area)
@ -542,8 +544,8 @@ class SubmitRequestCase(TestCase):
self.assertContains(r, 'Must provide data for all sessions')
def test_submit_request_check_constraints(self):
m1 = MeetingFactory(type_id='ietf', date=datetime.date.today() - datetime.timedelta(days=100))
MeetingFactory(type_id='ietf', date=datetime.date.today(),
m1 = MeetingFactory(type_id='ietf', date=date_today() - datetime.timedelta(days=100))
MeetingFactory(type_id='ietf', date=date_today(),
group_conflicts=['chair_conflict', 'conflic2', 'conflic3'])
ad = Person.objects.get(user__username='ad')
area = RoleFactory(name_id='ad', person=ad, group__type_id='area').group
@ -604,7 +606,7 @@ class SubmitRequestCase(TestCase):
self.assertContains(r, "Cannot declare a conflict with the same group")
def test_request_notification(self):
meeting = MeetingFactory(type_id='ietf', date=datetime.date.today())
meeting = MeetingFactory(type_id='ietf', date=date_today())
ad = Person.objects.get(user__username='ad')
area = GroupFactory(type_id='area')
RoleFactory(name_id='ad', person=ad, group=area)
@ -807,7 +809,7 @@ class SubmitRequestCase(TestCase):
class LockAppTestCase(TestCase):
def setUp(self):
super().setUp()
self.meeting = MeetingFactory(type_id='ietf', date=datetime.date.today(),session_request_lock_message='locked')
self.meeting = MeetingFactory(type_id='ietf', date=date_today(),session_request_lock_message='locked')
self.group = GroupFactory(acronym='mars')
RoleFactory(name_id='chair', group=self.group, person__user__username='marschairman')
SessionFactory(group=self.group,meeting=self.meeting)
@ -853,7 +855,7 @@ class LockAppTestCase(TestCase):
class NotMeetingCase(TestCase):
def test_not_meeting(self):
MeetingFactory(type_id='ietf',date=datetime.date.today())
MeetingFactory(type_id='ietf',date=date_today())
group = GroupFactory(acronym='mars')
url = reverse('ietf.secr.sreq.views.no_session',kwargs={'acronym':group.acronym})
self.client.login(username="secretary", password="secretary+password")

View file

@ -8,14 +8,13 @@ from pyquery import PyQuery
import debug # pyflakes:ignore
from django.urls import reverse
from django.utils import timezone
from ietf.doc.factories import (WgDraftFactory, IndividualRfcFactory, CharterFactory,
IndividualDraftFactory, ConflictReviewFactory)
from ietf.doc.models import BallotDocEvent, BallotType, BallotPositionDocEvent, State, Document
from ietf.doc.utils import update_telechat, create_ballot_if_not_open
from ietf.utils.test_utils import TestCase
from ietf.utils.timezone import datetime_today
from ietf.utils.timezone import date_today, datetime_today
from ietf.iesg.models import TelechatDate
from ietf.person.models import Person
from ietf.person.factories import PersonFactory
@ -24,7 +23,7 @@ from ietf.secr.telechat.views import get_next_telechat_date
SECR_USER='secretary'
def augment_data():
TelechatDate.objects.create(date=timezone.now())
TelechatDate.objects.create(date=date_today())
class SecrTelechatTestCase(TestCase):
def test_main(self):
@ -140,7 +139,7 @@ class SecrTelechatTestCase(TestCase):
self.assertEqual(q("#telechat-positions-table").find("th:contains('No Record')").length,1)
def test_bash(self):
today = timezone.now()
today = date_today()
TelechatDate.objects.create(date=today)
url = reverse('ietf.secr.telechat.views.bash',kwargs={'date':today.strftime('%Y-%m-%d')})
self.client.login(username="secretary", password="secretary+password")

View file

@ -20,6 +20,8 @@ from ietf.iesg.models import TelechatDate, TelechatAgendaItem, Telechat
from ietf.iesg.agenda import agenda_data, get_doc_section
from ietf.ietfauth.utils import role_required
from ietf.secr.telechat.forms import BallotForm, ChangeStateForm, DateSelectForm, TELECHAT_TAGS
from ietf.utils.timezone import date_today
'''
EXPECTED CHANGES:
@ -80,14 +82,14 @@ def get_last_telechat_date():
This function returns the date of the last telechat
Tried TelechatDocEvent.objects.latest but that will return today's telechat
'''
return TelechatDate.objects.filter(date__lt=datetime.date.today()).order_by('-date')[0].date
return TelechatDate.objects.filter(date__lt=date_today()).order_by('-date')[0].date
#return '2011-11-01' # uncomment for testing
def get_next_telechat_date():
'''
This function returns the date of the next telechat
'''
return TelechatDate.objects.filter(date__gte=datetime.date.today()).order_by('date')[0].date
return TelechatDate.objects.filter(date__gte=date_today()).order_by('date')[0].date
def get_section_header(doc, agenda):
'''

View file

@ -29,6 +29,7 @@ from ietf.name.models import FormalLanguageName, DocRelationshipName, CountryNam
from ietf.review.factories import ReviewRequestFactory, ReviewerSettingsFactory, ReviewAssignmentFactory
from ietf.stats.models import MeetingRegistration, CountryAlias
from ietf.stats.utils import get_meeting_registration_data
from ietf.utils.timezone import date_today
class StatisticsTests(TestCase):
@ -122,7 +123,7 @@ class StatisticsTests(TestCase):
def test_meeting_stats(self):
# create some data for the statistics
meeting = MeetingFactory(type_id='ietf', date=datetime.date.today(), number="96")
meeting = MeetingFactory(type_id='ietf', date=date_today(), number="96")
MeetingRegistration.objects.create(first_name='John', last_name='Smith', country_code='US', email="john.smith@example.us", meeting=meeting, attended=True)
CountryAlias.objects.get_or_create(alias="US", country=CountryName.objects.get(slug="US"))
MeetingRegistration.objects.create(first_name='Jaume', last_name='Guillaume', country_code='FR', email="jaume.guillaume@example.fr", meeting=meeting, attended=True)
@ -198,7 +199,7 @@ class StatisticsTests(TestCase):
self.assertTrue(q('.review-stats td:contains("1")'))
# check stacked chart
expected_date = datetime.date.today().replace(day=1)
expected_date = date_today().replace(day=1)
expected_js_timestamp = calendar.timegm(expected_date.timetuple()) * 1000
url = urlreverse(ietf.stats.views.review_stats, kwargs={ "stats_type": "time" })
url += "?team={}".format(review_req.team.acronym)

View file

@ -641,7 +641,7 @@ def document_stats(request, stats_type=None):
template_name = "yearly"
years_from = from_time.year if from_time else 1
years_to = datetime.date.today().year - 1
years_to = timezone.now().year - 1
if stats_type == "yearly/affiliation":
@ -904,7 +904,7 @@ def meeting_stats(request, num=None, stats_type=None):
continents = {}
meetings = Meeting.objects.filter(type='ietf', date__lte=datetime.date.today()).order_by('number')
meetings = Meeting.objects.filter(type='ietf', date__lte=date_today()).order_by('number')
for m in meetings:
country = CountryName.objects.get(slug=m.country)
continents[country.continent.name] = country.continent.name

View file

@ -7,7 +7,6 @@ import os
import re
import datetime
import email
import pytz
import sys
import tempfile
import xml2rfc
@ -43,6 +42,7 @@ from ietf.submit.parsers.xml_parser import XMLParser
from ietf.utils import log
from ietf.utils.draft import PlaintextDraft
from ietf.utils.text import normalize_text
from ietf.utils.timezone import date_today
from ietf.utils.xmldraft import XMLDraft, XMLParseError
@ -80,7 +80,7 @@ class SubmissionBaseUploadForm(forms.Form):
self.base_formats = None # None will raise an exception in clean() if this isn't changed in a subclass
def set_cutoff_warnings(self):
now = timezone.now().astimezone(pytz.utc)
now = timezone.now()
meeting = Meeting.get_current_meeting()
if not meeting:
return
@ -573,7 +573,7 @@ class DeprecatedSubmissionBaseUploadForm(SubmissionBaseUploadForm):
raise forms.ValidationError(mark_safe(self.cutoff_warning))
# check thresholds
today = datetime.date.today()
today = date_today()
self.check_submissions_thresholds(
"for the draft %s" % self.filename,

View file

@ -28,6 +28,8 @@ from ietf.utils.accesstoken import generate_access_token
from ietf.mailtrigger.utils import gather_address_lists, get_base_submission_message_address
from ietf.submit.models import SubmissionEmailEvent, Submission
from ietf.submit.checkers import DraftIdnitsChecker
from ietf.utils.timezone import date_today
def send_submission_confirmation(request, submission, chair_notice=False):
subject = 'Confirm submission of I-D %s' % submission.name
@ -299,7 +301,7 @@ def add_submission_email(request, remote_ip, name, rev, submission_pk, message,
rev=rev,
title=name,
note="",
submission_date=datetime.date.today(),
submission_date=date_today(),
replaces="",
)
from ietf.submit.utils import create_submission_event, docevent_from_submission

View file

@ -3,7 +3,6 @@
import re
import datetime
import debug # pyflakes:ignore
from typing import List, Optional # pyflakes:ignore
@ -12,6 +11,8 @@ from django.conf import settings
from django.template.defaultfilters import filesizeformat
from ietf.utils.mime import get_mime_type
from ietf.utils.timezone import date_today
class MetaData(object):
rev = None
@ -60,7 +61,7 @@ class FileParser(object):
self.parse_max_size();
self.parse_filename_extension()
self.parse_file_type()
self.parsed_info.metadata.submission_date = datetime.date.today()
self.parsed_info.metadata.submission_date = date_today()
return self.parsed_info
def parse_invalid_chars_in_filename(self):

View file

@ -52,6 +52,7 @@ from ietf.utils.accesstoken import generate_access_token
from ietf.utils.mail import outbox, empty_outbox, get_payload_text
from ietf.utils.models import VersionInfo
from ietf.utils.test_utils import login_testing_unauthorized, TestCase
from ietf.utils.timezone import date_today
from ietf.utils.draft import PlaintextDraft
@ -91,7 +92,7 @@ class BaseSubmitTestCase(TestCase):
return settings.INTERNET_DRAFT_ARCHIVE_DIR
def submission_file(name_in_doc, name_in_post, group, templatename, author=None, email=None, title=None, year=None, ascii=True):
_today = datetime.date.today()
_today = date_today()
# construct appropriate text draft
f = io.open(os.path.join(settings.BASE_DIR, "submit", templatename))
template = f.read()
@ -146,7 +147,7 @@ def create_draft_submission_with_rev_mismatch(rev='01'):
sub = Submission.objects.create(
name=draft_name,
group=None,
submission_date=datetime.date.today() - datetime.timedelta(days=1),
submission_date=date_today() - datetime.timedelta(days=1),
rev=rev,
state_id='posted',
)
@ -164,7 +165,7 @@ class SubmitTests(BaseSubmitTestCase):
def setUp(self):
super().setUp()
# Submit views assume there is a "next" IETF to look for cutoff dates against
MeetingFactory(type_id='ietf', date=datetime.date.today()+datetime.timedelta(days=180))
MeetingFactory(type_id='ietf', date=date_today()+datetime.timedelta(days=180))
def create_and_post_submission(self, name, rev, author, group=None, formats=("txt",), base_filename=None):
"""Helper to create and post a submission
@ -1355,7 +1356,7 @@ class SubmitTests(BaseSubmitTestCase):
# edit
mailbox_before = len(outbox)
# FIXME If this test is started before midnight, and ends after, it will fail
document_date = datetime.date.today() - datetime.timedelta(days=-3)
document_date = date_today() - datetime.timedelta(days=-3)
r = self.client.post(edit_url, {
"edit-title": "some title",
"edit-rev": "00",
@ -1523,7 +1524,7 @@ class SubmitTests(BaseSubmitTestCase):
def test_expire_submissions(self):
s = Submission.objects.create(name="draft-ietf-mars-foo",
group=None,
submission_date=datetime.date.today() - datetime.timedelta(days=10),
submission_date=date_today() - datetime.timedelta(days=10),
rev="00",
state_id="uploaded")
@ -1557,7 +1558,7 @@ class SubmitTests(BaseSubmitTestCase):
# Put today in the blackout period
meeting = Meeting.get_current_meeting()
meeting.importantdate_set.create(name_id='idcutoff',date=datetime.date.today()-datetime.timedelta(days=2))
meeting.importantdate_set.create(name_id='idcutoff',date=date_today()-datetime.timedelta(days=2))
# regular user, no access
r = self.client.get(url)
@ -1576,30 +1577,30 @@ class SubmitTests(BaseSubmitTestCase):
url = urlreverse('ietf.submit.views.upload_submission')
meeting = Meeting.get_current_meeting()
meeting.date = datetime.date.today()+datetime.timedelta(days=7)
meeting.date = date_today()+datetime.timedelta(days=7)
meeting.save()
meeting.importantdate_set.filter(name_id='idcutoff').delete()
meeting.importantdate_set.create(name_id='idcutoff', date=datetime.date.today()+datetime.timedelta(days=7))
meeting.importantdate_set.create(name_id='idcutoff', date=date_today()+datetime.timedelta(days=7))
r = self.client.get(url)
self.assertEqual(r.status_code,200)
q = PyQuery(r.content)
self.assertEqual(len(q('input[type=file][name=txt]')), 1)
meeting = Meeting.get_current_meeting()
meeting.date = datetime.date.today()
meeting.date = date_today()
meeting.save()
meeting.importantdate_set.filter(name_id='idcutoff').delete()
meeting.importantdate_set.create(name_id='idcutoff', date=datetime.date.today())
meeting.importantdate_set.create(name_id='idcutoff', date=date_today())
r = self.client.get(url)
self.assertEqual(r.status_code,200)
q = PyQuery(r.content)
self.assertEqual(len(q('input[type=file][name=txt]')), 1)
meeting = Meeting.get_current_meeting()
meeting.date = datetime.date.today()-datetime.timedelta(days=1)
meeting.date = date_today()-datetime.timedelta(days=1)
meeting.save()
meeting.importantdate_set.filter(name_id='idcutoff').delete()
meeting.importantdate_set.create(name_id='idcutoff', date=datetime.date.today()-datetime.timedelta(days=1))
meeting.importantdate_set.create(name_id='idcutoff', date=date_today()-datetime.timedelta(days=1))
r = self.client.get(url)
self.assertEqual(r.status_code,200)
q = PyQuery(r.content)
@ -1864,7 +1865,7 @@ class SubmitTests(BaseSubmitTestCase):
self.index += 1
sub = Submission.objects.create(name="draft-ietf-mars-bar-%d" % self.index,
group=Group.objects.get(acronym="mars"),
submission_date=datetime.date.today(),
submission_date=date_today(),
authors=[dict(name=self.author.name,
email=self.author.user.email,
affiliation='affiliation',
@ -2136,17 +2137,17 @@ class ApprovalsTestCase(BaseSubmitTestCase):
Submission.objects.create(name="draft-ietf-mars-foo",
group=Group.objects.get(acronym="mars"),
submission_date=datetime.date.today(),
submission_date=date_today(),
rev="00",
state_id="posted")
Submission.objects.create(name="draft-ietf-mars-bar",
group=Group.objects.get(acronym="mars"),
submission_date=datetime.date.today(),
submission_date=date_today(),
rev="00",
state_id="grp-appr")
Submission.objects.create(name="draft-ietf-mars-quux",
group=Group.objects.get(acronym="mars"),
submission_date=datetime.date.today(),
submission_date=date_today(),
rev="00",
state_id="ad-appr")
@ -2295,11 +2296,11 @@ class ManualPostsTestCase(BaseSubmitTestCase):
Submission.objects.create(name="draft-ietf-mars-foo",
group=Group.objects.get(acronym="mars"),
submission_date=datetime.date.today(),
submission_date=date_today(),
state_id="manual")
Submission.objects.create(name="draft-ietf-mars-bar",
group=Group.objects.get(acronym="mars"),
submission_date=datetime.date.today(),
submission_date=date_today(),
rev="00",
state_id="grp-appr")
@ -2885,7 +2886,7 @@ class ApiSubmissionTests(BaseSubmitTestCase):
class SubmissionUploadFormTests(BaseSubmitTestCase):
def test_check_submission_thresholds(self):
today = datetime.date.today()
today = date_today()
yesterday = today - datetime.timedelta(days=1)
(this_group, that_group) = GroupFactory.create_batch(2, type_id='wg')
this_ip = '10.0.0.1'
@ -3101,7 +3102,7 @@ class AsyncSubmissionTests(BaseSubmitTestCase):
"""Tests of async submission-related tasks"""
def test_process_uploaded_submission(self):
"""process_uploaded_submission should properly process a submission"""
_today = datetime.date.today()
_today = date_today()
xml, author = submission_file('draft-somebody-test-00', 'draft-somebody-test-00.xml', None, 'test_submission.xml')
xml_data = xml.read()
xml.close()
@ -3389,7 +3390,7 @@ class ApiSubmitTests(BaseSubmitTestCase):
super().setUp()
# break early in case of missing configuration
self.assertTrue(os.path.exists(settings.IDSUBMIT_IDNITS_BINARY))
MeetingFactory(type_id='ietf', date=datetime.date.today()+datetime.timedelta(days=60))
MeetingFactory(type_id='ietf', date=date_today()+datetime.timedelta(days=60))
def do_post_submission(self, rev, author=None, name=None, group=None, email=None, title=None, year=None):
url = urlreverse('ietf.submit.views.api_submit')

View file

@ -48,6 +48,7 @@ from ietf.utils.accesstoken import generate_random_key
from ietf.utils.draft import PlaintextDraft
from ietf.utils.mail import is_valid_email
from ietf.utils.text import parse_unicode, normalize_text
from ietf.utils.timezone import date_today
from ietf.utils.xmldraft import XMLDraft
from ietf.person.name import unidecode_name
@ -726,7 +727,7 @@ def recently_approved_by_user(user, since):
)
def expirable_submissions(older_than_days):
cutoff = datetime.date.today() - datetime.timedelta(days=older_than_days)
cutoff = date_today() - datetime.timedelta(days=older_than_days)
return Submission.objects.exclude(state__in=("cancel", "posted")).filter(submission_date__lt=cutoff)
def expire_submission(submission, by):
@ -849,7 +850,7 @@ def fill_in_submission(form, submission, authors, abstract, file_size):
submission.file_size = file_size
submission.file_types = ','.join(form.file_types)
submission.xml_version = form.xml_version
submission.submission_date = datetime.date.today()
submission.submission_date = date_today()
submission.replaces = ""
if form.parsed_draft is not None:
submission.pages = form.parsed_draft.get_pagecount()

View file

@ -48,6 +48,8 @@ from ietf.utils.accesstoken import generate_access_token
from ietf.utils.log import log
from ietf.utils.mail import parseaddr, send_mail_message
from ietf.utils.response import permission_denied
from ietf.utils.timezone import date_today
def upload_submission(request):
if request.method == 'POST':
@ -723,7 +725,7 @@ def approvals(request):
preapprovals = preapprovals_for_user(request.user)
days = 30
recently_approved = recently_approved_by_user(request.user, datetime.date.today() - datetime.timedelta(days=days))
recently_approved = recently_approved_by_user(request.user, date_today() - datetime.timedelta(days=days))
return render(request, 'submit/approvals.html',
{'selected': 'approvals',

View file

@ -62,7 +62,7 @@
</tbody>
</table>
{% else %}
<p>{{ person.first_name }} has no active roles as of {{ today }}.</p>
<p>{{ person.first_name }} has no active roles as of {{ today|date:"Y-m-d" }}.</p>
{% endif %}
{% endif %}
{% if person.personextresource_set.exists %}
@ -123,7 +123,7 @@
</tbody>
</table>
{% else %}
{{ person.first_name }} has no RFCs as of {{ today }}.
{{ person.first_name }} has no RFCs as of {{ today|date:"Y-m-d" }}.
{% endif %}
<h2 class="mt-5" id="drafts-{{ forloop.counter }}">
Active Drafts <small class="text-muted">({{ person.active_drafts|length }})</small>
@ -137,7 +137,7 @@
{% endfor %}
</ul>
{% else %}
{{ person.first_name }} has no active drafts as of {{ today }}.
{{ person.first_name }} has no active drafts as of {{ today|date:"Y-m-d" }}.
{% endif %}
<h2 class="mt-5">
Expired Drafts <small class="text-muted">({{ person.expired_drafts|length }})</small>
@ -156,7 +156,7 @@
</ul>
(Excluding replaced drafts.)
{% else %}
{{ person.first_name }} has no expired drafts as of {{ today }}.
{{ person.first_name }} has no expired drafts as of {{ today|date:"Y-m-d" }}.
{% endif %}
{% if person.has_drafts %}
<h2 class="mt-5">

View file

@ -21,6 +21,7 @@ from ietf.person.models import Person, Email
from ietf.group.utils import setup_default_community_list_for_group
from ietf.review.models import (ReviewRequest, ReviewerSettings, ReviewResultName, ReviewTypeName, ReviewTeamSettings )
from ietf.person.name import unidecode_name
from ietf.utils.timezone import date_today
def create_person(group, role_name, name=None, username=None, email_address=None, password=None, is_staff=False, is_superuser=False):
@ -52,7 +53,7 @@ def make_immutable_base_data():
all tests in a run."""
# telechat dates
t = datetime.date.today() + datetime.timedelta(days=1)
t = date_today() + datetime.timedelta(days=1)
old = TelechatDate.objects.create(date=t - datetime.timedelta(days=14)).date # pyflakes:ignore
date1 = TelechatDate.objects.create(date=t).date # pyflakes:ignore
date2 = TelechatDate.objects.create(date=t + datetime.timedelta(days=14)).date # pyflakes:ignore
@ -365,7 +366,7 @@ def make_test_data():
ietf72 = Meeting.objects.create(
number="72",
type_id="ietf",
date=datetime.date.today() + datetime.timedelta(days=180),
date=date_today() + datetime.timedelta(days=180),
city="New York",
country="US",
time_zone="US/Eastern",

View file

@ -40,7 +40,6 @@ import os
import sys
import time
import json
import pytz
import importlib
import socket
import gzip
@ -754,7 +753,7 @@ class IetfTestRunner(DiscoverRunner):
with io.open(self.coverage_file, encoding='utf-8') as file:
self.coverage_master = json.load(file)
self.coverage_data = {
"time": timezone.now().astimezone(pytz.utc).strftime("%Y-%m-%dT%H:%M:%SZ"),
"time": timezone.now().strftime("%Y-%m-%dT%H:%M:%SZ"),
"template": {
"coverage": 0.0,
"covered": {},