Merge pull request #17409 from edx/jmbowman/PLAT-1943

PLAT-1943 Fix more naive datetime warnings
This commit is contained in:
Jeremy Bowman
2018-02-06 11:18:52 -05:00
committed by GitHub
5 changed files with 34 additions and 34 deletions

View File

@@ -2,9 +2,8 @@
Add and create new modes for running courses on this particular LMS
"""
from collections import defaultdict, namedtuple
from datetime import datetime, timedelta
from datetime import timedelta
import pytz
from config_models.models import ConfigurationModel
from django.conf import settings
from django.core.exceptions import ValidationError
@@ -12,6 +11,7 @@ from django.core.validators import validate_comma_separated_integer_list
from django.db import models
from django.db.models import Q
from django.dispatch import receiver
from django.utils.timezone import now
from django.utils.translation import ugettext_lazy as _
from openedx.core.djangoapps.content.course_overviews.models import CourseOverview
@@ -272,12 +272,12 @@ class CourseMode(models.Model):
and the second is a list of only unexpired `Mode`s.
"""
now = datetime.now(pytz.UTC)
now_dt = now()
all_modes = cls.all_modes_for_courses(course_id_list)
unexpired_modes = {
course_id: [
mode for mode in modes
if mode.expiration_datetime is None or mode.expiration_datetime >= now
if mode.expiration_datetime is None or mode.expiration_datetime >= now_dt
]
for course_id, modes in all_modes.iteritems()
}
@@ -298,13 +298,12 @@ class CourseMode(models.Model):
A list of CourseModes with a minimum price.
"""
now = datetime.now(pytz.UTC)
found_course_modes = cls.objects.filter(
Q(course_id=course_id) &
Q(min_price__gt=0) &
(
Q(_expiration_datetime__isnull=True) |
Q(_expiration_datetime__gte=now)
Q(_expiration_datetime__gte=now())
)
)
return [mode.to_tuple() for mode in found_course_modes]
@@ -333,14 +332,12 @@ class CourseMode(models.Model):
list of `Mode` tuples
"""
now = datetime.now(pytz.UTC)
found_course_modes = cls.objects.filter(course_id=course_id)
# Filter out expired course modes if include_expired is not set
if not include_expired:
found_course_modes = found_course_modes.filter(
Q(_expiration_datetime__isnull=True) | Q(_expiration_datetime__gte=now)
Q(_expiration_datetime__isnull=True) | Q(_expiration_datetime__gte=now())
)
# Credit course modes are currently not shown on the track selection page;

View File

@@ -6,12 +6,12 @@ Replace this with more appropriate tests for your application.
"""
import itertools
from datetime import datetime, timedelta
from datetime import timedelta
import ddt
import pytz
from django.core.exceptions import ValidationError
from django.test import TestCase, override_settings
from django.utils.timezone import now
from mock import patch
from opaque_keys.edx.locator import CourseLocator
@@ -31,7 +31,7 @@ class CourseModeModelTest(TestCase):
"""
NOW = 'now'
DATES = {
NOW: datetime.now(),
NOW: now(),
None: None,
}
@@ -133,7 +133,7 @@ class CourseModeModelTest(TestCase):
def test_modes_for_course_expired(self):
expired_mode, _status = self.create_mode('verified', 'Verified Certificate', 10)
expired_mode.expiration_datetime = datetime.now(pytz.UTC) + timedelta(days=-1)
expired_mode.expiration_datetime = now() + timedelta(days=-1)
expired_mode.save()
modes = CourseMode.modes_for_course(self.course_key)
self.assertEqual([CourseMode.DEFAULT_MODE], modes)
@@ -143,7 +143,7 @@ class CourseModeModelTest(TestCase):
modes = CourseMode.modes_for_course(self.course_key)
self.assertEqual([mode1], modes)
expiration_datetime = datetime.now(pytz.UTC) + timedelta(days=1)
expiration_datetime = now() + timedelta(days=1)
expired_mode.expiration_datetime = expiration_datetime
expired_mode.save()
expired_mode_value = Mode(
@@ -232,9 +232,9 @@ class CourseModeModelTest(TestCase):
self.assertEqual(CourseMode.auto_enroll_mode(self.course_key, modes), result)
def test_all_modes_for_courses(self):
now = datetime.now(pytz.UTC)
future = now + timedelta(days=1)
past = now - timedelta(days=1)
now_dt = now()
future = now_dt + timedelta(days=1)
past = now_dt - timedelta(days=1)
# Unexpired, no expiration date
CourseModeFactory.create(
@@ -430,20 +430,20 @@ class CourseModeModelTest(TestCase):
def test_expiration_datetime_explicitly_set(self):
""" Verify that setting the expiration_date property sets the explicit flag. """
verified_mode, __ = self.create_mode('verified', 'Verified Certificate', 10)
now = datetime.now()
verified_mode.expiration_datetime = now
now_dt = now()
verified_mode.expiration_datetime = now_dt
self.assertTrue(verified_mode.expiration_datetime_is_explicit)
self.assertEqual(verified_mode.expiration_datetime, now)
self.assertEqual(verified_mode.expiration_datetime, now_dt)
def test_expiration_datetime_not_explicitly_set(self):
""" Verify that setting the _expiration_date property does not set the explicit flag. """
verified_mode, __ = self.create_mode('verified', 'Verified Certificate', 10)
now = datetime.now()
verified_mode._expiration_datetime = now # pylint: disable=protected-access
now_dt = now()
verified_mode._expiration_datetime = now_dt # pylint: disable=protected-access
self.assertFalse(verified_mode.expiration_datetime_is_explicit)
self.assertEqual(verified_mode.expiration_datetime, now)
self.assertEqual(verified_mode.expiration_datetime, now_dt)
def test_expiration_datetime_explicitly_set_to_none(self):
""" Verify that setting the _expiration_date property does not set the explicit flag. """

View File

@@ -9,6 +9,7 @@ from django.test import TestCase
from mock import Mock, patch
from nose.plugins.attrib import attr
from opaque_keys.edx.keys import CourseKey
from pytz import UTC
from bulk_email.models import (
SEND_TO_COHORT,
@@ -74,8 +75,8 @@ class CourseEmailTest(ModuleStoreTestCase):
CourseEmail.create(course_id, sender, to_option, subject, html_message)
@ddt.data(
datetime.datetime(1999, 1, 1),
datetime.datetime(datetime.MAXYEAR, 1, 1),
datetime.datetime(1999, 1, 1, tzinfo=UTC),
datetime.datetime(datetime.MAXYEAR, 1, 1, tzinfo=UTC),
)
def test_track_target(self, expiration_datetime):
"""

View File

@@ -1,8 +1,9 @@
"""
Test helpers for the course experience.
"""
from datetime import timedelta
import datetime
from django.utils.timezone import now
from course_modes.models import CourseMode
@@ -13,11 +14,11 @@ def add_course_mode(course, upgrade_deadline_expired=False):
"""
Adds a course mode to the test course.
"""
upgrade_exp_date = datetime.datetime.now()
upgrade_exp_date = now()
if upgrade_deadline_expired:
upgrade_exp_date = upgrade_exp_date - datetime.timedelta(days=21)
upgrade_exp_date = upgrade_exp_date - timedelta(days=21)
else:
upgrade_exp_date = upgrade_exp_date + datetime.timedelta(days=21)
upgrade_exp_date = upgrade_exp_date + timedelta(days=21)
CourseMode(
course_id=course.id,

View File

@@ -10,6 +10,7 @@ from django.conf import settings
from django.core.urlresolvers import reverse
from django.http import QueryDict
from django.utils.http import urlquote_plus
from django.utils.timezone import now
from pytz import UTC
from waffle.models import Flag
from waffle.testutils import override_flag
@@ -96,7 +97,7 @@ class CourseHomePageTestCase(SharedModuleStoreTestCase):
org='edX',
number='test',
display_name='Test Course',
start=datetime.now(UTC) - timedelta(days=30),
start=now() - timedelta(days=30),
)
with cls.store.bulk_operations(cls.course.id):
chapter = ItemFactory.create(
@@ -122,7 +123,7 @@ class CourseHomePageTestCase(SharedModuleStoreTestCase):
"""
return CourseFactory.create(
display_name='Test Future Course',
start=specific_date if specific_date else datetime.now(UTC) + timedelta(days=30),
start=specific_date if specific_date else now() + timedelta(days=30),
)
@@ -487,9 +488,9 @@ class CourseHomeFragmentViewTests(ModuleStoreTestCase):
super(CourseHomeFragmentViewTests, self).setUp()
CommerceConfiguration.objects.create(checkout_on_ecommerce_service=True)
end = datetime.now(UTC) + timedelta(days=30)
end = now() + timedelta(days=30)
self.course = CourseFactory(
start=datetime.now(UTC) - timedelta(days=30),
start=now() - timedelta(days=30),
end=end,
)
self.url = course_home_url(self.course)
@@ -535,7 +536,7 @@ class CourseHomeFragmentViewTests(ModuleStoreTestCase):
self.assert_upgrade_message_not_displayed()
def test_no_upgrade_message_if_upgrade_deadline_passed(self):
self.verified_mode.expiration_datetime = datetime.now(UTC) - timedelta(days=20)
self.verified_mode.expiration_datetime = now() - timedelta(days=20)
self.verified_mode.save()
self.assert_upgrade_message_not_displayed()