Commit 7dfb6cc6 by John Eskew

Change all UTC timezones to import from pytz instead of Django.

parent 02f26f55
......@@ -10,7 +10,7 @@ import ddt
import mock
from django.conf import settings
from django.test.utils import override_settings
from django.utils.timezone import UTC
from pytz import UTC
from milestones.tests.utils import MilestonesTestCaseMixin
from mock import Mock, patch
......@@ -61,7 +61,7 @@ class CourseSettingsEncoderTest(CourseTestCase):
doesn't work for these dates.
"""
details = CourseDetails.fetch(self.course.id)
pre_1900 = datetime.datetime(1564, 4, 23, 1, 1, 1, tzinfo=UTC())
pre_1900 = datetime.datetime(1564, 4, 23, 1, 1, 1, tzinfo=UTC)
details.enrollment_start = pre_1900
dumped_jsondetails = json.dumps(details, cls=CourseSettingsEncoder)
loaded_jsondetails = json.loads(dumped_jsondetails)
......@@ -74,7 +74,7 @@ class CourseSettingsEncoderTest(CourseTestCase):
details = {
'number': 1,
'string': 'string',
'datetime': datetime.datetime.now(UTC())
'datetime': datetime.datetime.now(UTC)
}
jsondetails = json.dumps(details, cls=CourseSettingsEncoder)
jsondetails = json.loads(jsondetails)
......@@ -121,13 +121,12 @@ class CourseDetailsViewTest(CourseTestCase, MilestonesTestCaseMixin):
resp = self.client.get_json(url)
self.compare_details_with_encoding(json.loads(resp.content), details.__dict__, "virgin get")
utc = UTC()
self.alter_field(url, details, 'start_date', datetime.datetime(2012, 11, 12, 1, 30, tzinfo=utc))
self.alter_field(url, details, 'start_date', datetime.datetime(2012, 11, 1, 13, 30, tzinfo=utc))
self.alter_field(url, details, 'end_date', datetime.datetime(2013, 2, 12, 1, 30, tzinfo=utc))
self.alter_field(url, details, 'enrollment_start', datetime.datetime(2012, 10, 12, 1, 30, tzinfo=utc))
self.alter_field(url, details, 'start_date', datetime.datetime(2012, 11, 12, 1, 30, tzinfo=UTC))
self.alter_field(url, details, 'start_date', datetime.datetime(2012, 11, 1, 13, 30, tzinfo=UTC))
self.alter_field(url, details, 'end_date', datetime.datetime(2013, 2, 12, 1, 30, tzinfo=UTC))
self.alter_field(url, details, 'enrollment_start', datetime.datetime(2012, 10, 12, 1, 30, tzinfo=UTC))
self.alter_field(url, details, 'enrollment_end', datetime.datetime(2012, 11, 15, 1, 30, tzinfo=utc))
self.alter_field(url, details, 'enrollment_end', datetime.datetime(2012, 11, 15, 1, 30, tzinfo=UTC))
self.alter_field(url, details, 'short_description', "Short Description")
self.alter_field(url, details, 'overview', "Overview")
self.alter_field(url, details, 'intro_video', "intro_video")
......
......@@ -9,7 +9,6 @@ from uuid import uuid4
import ddt
import pytest
from dateutil.tz import tzutc
from django.conf import settings
from lazy.lazy import lazy
from mock import patch
......@@ -1187,7 +1186,7 @@ class GroupConfigurationSearchMongo(CourseTestCase, MixedWithOptionsTestCase):
'content_type': 'Text',
'org': self.course.org,
'content_groups': content_groups,
'start_date': datetime(2015, 4, 1, 0, 0, tzinfo=tzutc())
'start_date': datetime(2015, 4, 1, 0, 0, tzinfo=UTC)
}
def _html_experiment_group_result(self, html_unit, content_groups):
......@@ -1207,7 +1206,7 @@ class GroupConfigurationSearchMongo(CourseTestCase, MixedWithOptionsTestCase):
'content_type': 'Text',
'org': self.course.org,
'content_groups': content_groups,
'start_date': datetime(2015, 4, 1, 0, 0, tzinfo=tzutc())
'start_date': datetime(2015, 4, 1, 0, 0, tzinfo=UTC)
}
def _vertical_experiment_group_result(self, vertical, content_groups):
......@@ -1215,7 +1214,7 @@ class GroupConfigurationSearchMongo(CourseTestCase, MixedWithOptionsTestCase):
Return object with arguments and content group for split_test vertical.
"""
return {
'start_date': datetime(2015, 4, 1, 0, 0, tzinfo=tzutc()),
'start_date': datetime(2015, 4, 1, 0, 0, tzinfo=UTC),
'content': {'display_name': vertical.display_name},
'course': unicode(self.course.id),
'location': [
......@@ -1247,7 +1246,7 @@ class GroupConfigurationSearchMongo(CourseTestCase, MixedWithOptionsTestCase):
'content_type': 'Text',
'org': self.course.org,
'content_groups': None,
'start_date': datetime(2015, 4, 1, 0, 0, tzinfo=tzutc())
'start_date': datetime(2015, 4, 1, 0, 0, tzinfo=UTC)
}
def _get_index_values_from_call_args(self, mock_index):
......
......@@ -11,7 +11,7 @@ from django.core import exceptions
from django.core.files.uploadedfile import SimpleUploadedFile
from django.http import HttpRequest
from django.test import TestCase
from django.utils.timezone import UTC
from pytz import UTC
from mock import Mock, patch
from opaque_keys.edx.keys import CourseKey
from opaque_keys.edx.locations import CourseLocator
......@@ -45,7 +45,7 @@ class FilenameGeneratorTestCase(TestCase):
"""
Tests for course_and_time_based_filename_generator
"""
NOW = datetime.strptime('1974-06-22T01:02:03', '%Y-%m-%dT%H:%M:%S').replace(tzinfo=UTC())
NOW = datetime.strptime('1974-06-22T01:02:03', '%Y-%m-%dT%H:%M:%S').replace(tzinfo=UTC)
def setUp(self):
super(FilenameGeneratorTestCase, self).setUp()
......
......@@ -62,7 +62,7 @@ from xml.sax.saxutils import escape
import bleach
import mock
import oauthlib.oauth1
from django.utils.timezone import UTC
from pytz import UTC
from lxml import etree
from oauthlib.oauth1.rfc5849 import signature
from pkg_resources import resource_string
......@@ -889,7 +889,7 @@ oauth_consumer_key="", oauth_signature="frVp4JuvT1mVXlxktiAUjQ7%2F1cw%3D"'}
close_date = due_date + self.graceperiod # pylint: disable=no-member
else:
close_date = due_date
return close_date is not None and datetime.datetime.now(UTC()) > close_date
return close_date is not None and datetime.datetime.now(UTC) > close_date
class LTIDescriptor(LTIFields, MetadataOnlyEditingDescriptor, EmptyDataRawDescriptor):
......
......@@ -5,10 +5,10 @@ xModule implementation of a learning sequence
# pylint: disable=abstract-method
import collections
from datetime import datetime
from django.utils.timezone import UTC
import json
import logging
from pkg_resources import resource_string
from pytz import UTC
from lxml import etree
from xblock.core import XBlock
......@@ -215,7 +215,7 @@ class SequenceModule(SequenceFields, ProctoringFields, XModule):
return (
not date or
not hide_after_date or
datetime.now(UTC()) < date
datetime.now(UTC) < date
)
def student_view(self, context):
......
......@@ -3,7 +3,7 @@
import datetime
import unittest
from django.utils.timezone import UTC
from pytz import UTC
from xmodule.fields import Date, Timedelta, RelativeTime
from xmodule.timeinfo import TimeInfo
......@@ -57,15 +57,15 @@ class DateTest(unittest.TestCase):
self.assertEqual(DateTest.date.enforce_type(""), None)
self.assertEqual(
DateTest.date.enforce_type("2012-12-31T23:00:01"),
datetime.datetime(2012, 12, 31, 23, 0, 1, tzinfo=UTC())
datetime.datetime(2012, 12, 31, 23, 0, 1, tzinfo=UTC)
)
self.assertEqual(
DateTest.date.enforce_type(1234567890000),
datetime.datetime(2009, 2, 13, 23, 31, 30, tzinfo=UTC())
datetime.datetime(2009, 2, 13, 23, 31, 30, tzinfo=UTC)
)
self.assertEqual(
DateTest.date.enforce_type(datetime.datetime(2014, 5, 9, 21, 1, 27, tzinfo=UTC())),
datetime.datetime(2014, 5, 9, 21, 1, 27, tzinfo=UTC())
DateTest.date.enforce_type(datetime.datetime(2014, 5, 9, 21, 1, 27, tzinfo=UTC)),
datetime.datetime(2014, 5, 9, 21, 1, 27, tzinfo=UTC)
)
with self.assertRaises(TypeError):
DateTest.date.enforce_type([1])
......@@ -79,11 +79,11 @@ class DateTest(unittest.TestCase):
def test_old_due_date_format(self):
current = datetime.datetime.today()
self.assertEqual(
datetime.datetime(current.year, 3, 12, 12, tzinfo=UTC()),
datetime.datetime(current.year, 3, 12, 12, tzinfo=UTC),
DateTest.date.from_json("March 12 12:00")
)
self.assertEqual(
datetime.datetime(current.year, 12, 4, 16, 30, tzinfo=UTC()),
datetime.datetime(current.year, 12, 4, 16, 30, tzinfo=UTC),
DateTest.date.from_json("December 4 16:30")
)
self.assertIsNone(DateTest.date.from_json("12 12:00"))
......@@ -92,13 +92,13 @@ class DateTest(unittest.TestCase):
"""
Test the non-standard args being passed to from_json
"""
now = datetime.datetime.now(UTC())
delta = now - datetime.datetime.fromtimestamp(0, UTC())
now = datetime.datetime.now(UTC)
delta = now - datetime.datetime.fromtimestamp(0, UTC)
self.assertEqual(
DateTest.date.from_json(delta.total_seconds() * 1000),
now
)
yesterday = datetime.datetime.now(UTC()) - datetime.timedelta(days=-1)
yesterday = datetime.datetime.now(UTC) - datetime.timedelta(days=-1)
self.assertEqual(DateTest.date.from_json(yesterday), yesterday)
def test_to_json(self):
......@@ -157,7 +157,7 @@ class TimedeltaTest(unittest.TestCase):
class TimeInfoTest(unittest.TestCase):
def test_time_info(self):
due_date = datetime.datetime(2000, 4, 14, 10, tzinfo=UTC())
due_date = datetime.datetime(2000, 4, 14, 10, tzinfo=UTC)
grace_pd_string = '1 day 12 hours 59 minutes 59 seconds'
timeinfo = TimeInfo(due_date, grace_pd_string)
self.assertEqual(
......
......@@ -8,7 +8,7 @@ from fs.memoryfs import MemoryFS
from lxml import etree
from mock import Mock, patch
from django.utils.timezone import UTC
from pytz import UTC
from xmodule.xml_module import is_pointer_tag
from opaque_keys.edx.locations import Location
......@@ -346,7 +346,7 @@ class ImportTestCase(BaseCourseTestCase):
# Check that the child hasn't started yet
self.assertLessEqual(
datetime.datetime.now(UTC()),
datetime.datetime.now(UTC),
child.start
)
......
......@@ -3,7 +3,7 @@
import datetime
import textwrap
from django.utils.timezone import UTC
from pytz import UTC
from mock import Mock
from xmodule.lti_module import LTIDescriptor
from xmodule.lti_2_util import LTIError
......@@ -388,7 +388,7 @@ class LTI20RESTResultServiceTest(LogicTest):
Test that we get a 404 when accept_grades_past_due is False and it is past due
"""
self.setup_system_xmodule_mocks_for_lti20_request_test()
self.xmodule.due = datetime.datetime.now(UTC())
self.xmodule.due = datetime.datetime.now(UTC)
self.xmodule.accept_grades_past_due = False
mock_request = self.get_signed_lti20_mock_request(self.GOOD_JSON_PUT)
response = self.xmodule.lti_2_0_result_rest_handler(mock_request, "user/abcd")
......
......@@ -2,7 +2,7 @@
"""Test for LTI Xmodule functional logic."""
import datetime
from django.utils.timezone import UTC
from pytz import UTC
from mock import Mock, patch, PropertyMock
import textwrap
from lxml import etree
......@@ -180,7 +180,7 @@ class LTIModuleTest(LogicTest):
Should fail if we do not accept past due grades, and it is past due.
"""
self.xmodule.accept_grades_past_due = False
self.xmodule.due = datetime.datetime.now(UTC())
self.xmodule.due = datetime.datetime.now(UTC)
self.xmodule.graceperiod = Timedelta().from_json("0 seconds")
request = Request(self.environ)
request.body = self.get_request_body()
......
......@@ -4,7 +4,7 @@ Test cases covering workflows and behaviors for the Randomize XModule
import unittest
from datetime import datetime, timedelta
from django.utils.timezone import UTC
from pytz import UTC
from opaque_keys.edx.locator import BlockUsageLocator
from xblock.fields import ScopeIds
from xmodule.randomize_module import RandomizeModule
......@@ -16,7 +16,7 @@ ORG = 'test_org'
COURSE = 'test_course'
START = '2013-01-01T01:00:00'
_TODAY = datetime.now(UTC())
_TODAY = datetime.now(UTC)
_LAST_WEEK = _TODAY - timedelta(days=7)
_NEXT_WEEK = _TODAY + timedelta(days=7)
......
......@@ -7,14 +7,12 @@ import re
import urlparse
import ddt
import pytz
from ccx_keys.locator import CCXLocator
from dateutil.tz import tzutc
from django.conf import settings
from django.core.urlresolvers import resolve, reverse
from django.test import RequestFactory
from django.test.utils import override_settings
from django.utils.timezone import UTC
from pytz import UTC
from django.utils.translation import ugettext as _
from mock import MagicMock, patch
from nose.plugins.attrib import attr
......@@ -183,8 +181,8 @@ class TestCCXProgressChanges(CcxTestCase, LoginEnrollmentTestCase):
Set up tests
"""
super(TestCCXProgressChanges, cls).setUpClass()
start = datetime.datetime(2016, 7, 1, 0, 0, tzinfo=tzutc())
due = datetime.datetime(2016, 7, 8, 0, 0, tzinfo=tzutc())
start = datetime.datetime(2016, 7, 1, 0, 0, tzinfo=UTC)
due = datetime.datetime(2016, 7, 8, 0, 0, tzinfo=UTC)
cls.course = course = CourseFactory.create(enable_ccx=True, start=start)
chapter = ItemFactory.create(start=start, parent=course, category=u'chapter')
......@@ -467,7 +465,7 @@ class TestCoachDashboard(CcxTestCase, LoginEnrollmentTestCase):
"""
Get CCX schedule, modify it, save it.
"""
today.return_value = datetime.datetime(2014, 11, 25, tzinfo=pytz.UTC)
today.return_value = datetime.datetime(2014, 11, 25, tzinfo=UTC)
self.make_coach()
ccx = self.make_ccx()
url = reverse(
......@@ -919,10 +917,10 @@ class TestCoachDashboardSchedule(CcxTestCase, LoginEnrollmentTestCase, ModuleSto
# Create a course outline
self.mooc_start = start = datetime.datetime(
2010, 5, 12, 2, 42, tzinfo=pytz.UTC
2010, 5, 12, 2, 42, tzinfo=UTC
)
self.mooc_due = due = datetime.datetime(
2010, 7, 7, 0, 0, tzinfo=pytz.UTC
2010, 7, 7, 0, 0, tzinfo=UTC
)
self.chapters = [
......@@ -1004,7 +1002,7 @@ class TestCoachDashboardSchedule(CcxTestCase, LoginEnrollmentTestCase, ModuleSto
Hides nodes at a different depth and checks that these nodes
are not in the schedule.
"""
today.return_value = datetime.datetime(2014, 11, 25, tzinfo=pytz.UTC)
today.return_value = datetime.datetime(2014, 11, 25, tzinfo=UTC)
self.make_coach()
ccx = self.make_ccx()
url = reverse(
......@@ -1066,7 +1064,7 @@ class TestCCXGrades(FieldOverrideTestMixin, SharedModuleStoreTestCase, LoginEnro
# Create a course outline
cls.mooc_start = start = datetime.datetime(
2010, 5, 12, 2, 42, tzinfo=pytz.UTC
2010, 5, 12, 2, 42, tzinfo=UTC
)
chapter = ItemFactory.create(
start=start, parent=course, category='sequential'
......@@ -1332,7 +1330,7 @@ class TestStudentViewsWithCCX(ModuleStoreTestCase):
# Create a CCX course and enroll the user in it.
self.ccx = CcxFactory(course_id=self.split_course.id, coach=self.coach)
last_week = datetime.datetime.now(UTC()) - datetime.timedelta(days=7)
last_week = datetime.datetime.now(UTC) - datetime.timedelta(days=7)
override_field_for_ccx(self.ccx, self.split_course, 'start', last_week) # Required by self.ccx.has_started().
self.ccx_course_key = CCXLocator.from_course_locator(self.split_course.id, self.ccx.id)
CourseEnrollment.enroll(self.student, self.ccx_course_key)
......
......@@ -13,11 +13,10 @@ Note: The access control logic in this file does NOT check for enrollment in
import logging
from datetime import datetime
import pytz
from ccx_keys.locator import CCXLocator
from django.conf import settings
from django.contrib.auth.models import AnonymousUser
from django.utils.timezone import UTC
from pytz import UTC
from opaque_keys.edx.keys import CourseKey, UsageKey
from xblock.core import XBlock
......@@ -274,9 +273,9 @@ def _can_enroll_courselike(user, courselike):
debug("Deny: invitation only")
return ACCESS_DENIED
now = datetime.now(UTC())
enrollment_start = courselike.enrollment_start or datetime.min.replace(tzinfo=pytz.UTC)
enrollment_end = courselike.enrollment_end or datetime.max.replace(tzinfo=pytz.UTC)
now = datetime.now(UTC)
enrollment_start = courselike.enrollment_start or datetime.min.replace(tzinfo=UTC)
enrollment_end = courselike.enrollment_end or datetime.max.replace(tzinfo=UTC)
if reg_method_ok and enrollment_start < now < enrollment_end:
debug("Allow: in enrollment period")
return ACCESS_GRANTED
......
......@@ -7,7 +7,7 @@ from datetime import datetime, timedelta
from logging import getLogger
from django.conf import settings
from django.utils.timezone import UTC
from pytz import UTC
from courseware.access_response import AccessResponse, StartDateError
from courseware.masquerade import is_masquerading_as_student
......@@ -64,7 +64,7 @@ def check_start_date(user, days_early_for_beta, start, course_key):
if start_dates_disabled and not is_masquerading_as_student(user, course_key):
return ACCESS_GRANTED
else:
now = datetime.now(UTC())
now = datetime.now(UTC)
if start is None or in_preview_mode():
return ACCESS_GRANTED
......
......@@ -8,7 +8,7 @@ from datetime import datetime
from django.conf import settings
from django.core.urlresolvers import reverse
from django.test import TestCase
from django.utils.timezone import UTC
from pytz import UTC
from mock import patch
from nose.plugins.attrib import attr
from xblock.runtime import DictKeyValueStore
......@@ -42,7 +42,7 @@ class MasqueradeTestCase(SharedModuleStoreTestCase, LoginEnrollmentTestCase):
@classmethod
def setUpClass(cls):
super(MasqueradeTestCase, cls).setUpClass()
cls.course = CourseFactory.create(number='masquerade-test', metadata={'start': datetime.now(UTC())})
cls.course = CourseFactory.create(number='masquerade-test', metadata={'start': datetime.now(UTC)})
cls.info_page = ItemFactory.create(
category="course_info", parent_location=cls.course.location,
data="OOGIE BLOOGIE", display_name="updates"
......
......@@ -49,7 +49,7 @@ from django.shortcuts import redirect
from django.utils.decorators import method_decorator
from django.utils.http import urlquote_plus
from django.utils.text import slugify
from django.utils.timezone import UTC
from pytz import UTC
from django.utils.translation import ugettext as _
from django.views.decorators.cache import cache_control
from django.views.decorators.csrf import ensure_csrf_cookie
......@@ -1650,7 +1650,7 @@ def get_financial_aid_courses(user):
enrollment.course_overview and \
enrollment.course_overview.eligible_for_financial_aid and \
CourseMode.objects.filter(
Q(_expiration_datetime__isnull=True) | Q(_expiration_datetime__gt=datetime.now(UTC())),
Q(_expiration_datetime__isnull=True) | Q(_expiration_datetime__gt=datetime.now(UTC)),
course_id=enrollment.course_id,
mode_slug=CourseMode.VERIFIED).exists():
......
......@@ -14,7 +14,7 @@ from django.conf import settings
from django.core.urlresolvers import reverse
from django.test.client import Client
from django.test.utils import override_settings
from django.utils.timezone import utc as UTC
from pytz import UTC
from nose.plugins.attrib import attr
from opaque_keys.edx.keys import CourseKey
......
......@@ -7,7 +7,6 @@ import mock
from django.core.management import call_command
from django.core.urlresolvers import reverse
from django.test import RequestFactory, TestCase
from django.utils.timezone import UTC as django_utc
from mock import Mock, patch
from nose.plugins.attrib import attr
from pytz import UTC
......@@ -539,7 +538,6 @@ class CategoryMapTestCase(CategoryMapTestMixin, ModuleStoreTestCase):
)
def test_get_unstarted_discussion_xblocks(self):
later = datetime.datetime(datetime.MAXYEAR, 1, 1, tzinfo=django_utc())
self.create_discussion("Chapter 1", "Discussion 1", start=later)
......
......@@ -3,13 +3,12 @@ import logging
from collections import defaultdict
from datetime import datetime
import pytz
from django.conf import settings
from django.contrib.auth.models import User
from django.core.urlresolvers import reverse
from django.db import connection
from django.http import HttpResponse
from django.utils.timezone import UTC
from pytz import UTC
from opaque_keys.edx.keys import CourseKey
from opaque_keys.edx.locations import i4xEncoder
......@@ -231,7 +230,7 @@ def _filter_unstarted_categories(category_map, course):
Returns a subset of categories from the provided map which have not yet met the start date
Includes information about category children, subcategories (different), and entries
"""
now = datetime.now(UTC())
now = datetime.now(UTC)
result_map = {}
......@@ -344,7 +343,7 @@ def get_discussion_category_map(course, user, divided_only_if_explicit=False, ex
sort_key = xblock.sort_key
category = " / ".join([x.strip() for x in xblock.discussion_category.split("/")])
# Handle case where xblock.start is None
entry_start_date = xblock.start if xblock.start else datetime.max.replace(tzinfo=pytz.UTC)
entry_start_date = xblock.start if xblock.start else datetime.max.replace(tzinfo=UTC)
unexpanded_category_map[category].append({"title": title,
"id": discussion_id,
"sort_key": sort_key,
......@@ -411,7 +410,7 @@ def get_discussion_category_map(course, user, divided_only_if_explicit=False, ex
category_map['entries'][topic] = {
"id": entry["id"],
"sort_key": entry.get("sort_key", topic),
"start_date": datetime.now(UTC()),
"start_date": datetime.now(UTC),
"is_divided": (
discussion_division_enabled and entry["id"] in divided_discussion_ids
)
......
......@@ -11,7 +11,6 @@ import shutil
import tempfile
import ddt
import pytz
from boto.exception import BotoServerError
from django.conf import settings
from django.contrib.auth.models import User
......@@ -21,7 +20,7 @@ from django.core.urlresolvers import reverse as django_reverse
from django.http import HttpRequest, HttpResponse
from django.test import RequestFactory, TestCase
from django.test.utils import override_settings
from django.utils.timezone import utc
from pytz import UTC
from django.utils.translation import ugettext as _
from mock import Mock, patch
from nose.plugins.attrib import attr
......@@ -4135,7 +4134,7 @@ class TestDueDateExtensions(SharedModuleStoreTestCase, LoginEnrollmentTestCase):
def setUpClass(cls):
super(TestDueDateExtensions, cls).setUpClass()
cls.course = CourseFactory.create()
cls.due = datetime.datetime(2010, 5, 12, 2, 42, tzinfo=utc)
cls.due = datetime.datetime(2010, 5, 12, 2, 42, tzinfo=UTC)
with cls.store.bulk_operations(cls.course.id, emit_signals=False):
cls.week1 = ItemFactory.create(due=cls.due)
......@@ -4217,7 +4216,7 @@ class TestDueDateExtensions(SharedModuleStoreTestCase, LoginEnrollmentTestCase):
'due_datetime': '12/30/2013 00:00'
})
self.assertEqual(response.status_code, 200, response.content)
self.assertEqual(datetime.datetime(2013, 12, 30, 0, 0, tzinfo=utc),
self.assertEqual(datetime.datetime(2013, 12, 30, 0, 0, tzinfo=UTC),
get_extended_due(self.course, self.week1, self.user1))
def test_change_to_invalid_due_date(self):
......@@ -4304,7 +4303,7 @@ class TestDueDateExtensionsDeletedDate(ModuleStoreTestCase, LoginEnrollmentTestC
super(TestDueDateExtensionsDeletedDate, self).setUp()
self.course = CourseFactory.create()
self.due = datetime.datetime(2010, 5, 12, 2, 42, tzinfo=utc)
self.due = datetime.datetime(2010, 5, 12, 2, 42, tzinfo=UTC)
with self.store.bulk_operations(self.course.id, emit_signals=False):
self.week1 = ItemFactory.create(due=self.due)
......@@ -4385,7 +4384,7 @@ class TestDueDateExtensionsDeletedDate(ModuleStoreTestCase, LoginEnrollmentTestC
'due_datetime': '12/30/2013 00:00'
})
self.assertEqual(response.status_code, 200, response.content)
self.assertEqual(datetime.datetime(2013, 12, 30, 0, 0, tzinfo=utc),
self.assertEqual(datetime.datetime(2013, 12, 30, 0, 0, tzinfo=UTC),
get_extended_due(self.course, self.week1, self.user1))
self.week1.due = None
......@@ -4949,7 +4948,7 @@ class TestCourseRegistrationCodes(SharedModuleStoreTestCase):
coupon = Coupon(
code='coupon{0}'.format(i), description='test_description', course_id=self.course.id,
percentage_discount='{0}'.format(i), created_by=self.instructor, is_active=True,
expiration_date=datetime.datetime.now(pytz.UTC) + datetime.timedelta(days=2)
expiration_date=datetime.datetime.now(UTC) + datetime.timedelta(days=2)
)
coupon.save()
......
......@@ -9,7 +9,7 @@ import unittest
import mock
from django.test import TestCase
from django.test.utils import override_settings
from django.utils.timezone import utc
from pytz import UTC
from nose.plugins.attrib import attr
from opaque_keys.edx.keys import CourseKey
......@@ -96,7 +96,7 @@ class TestParseDatetime(unittest.TestCase):
def test_parse_no_error(self):
self.assertEqual(
tools.parse_datetime('5/12/2010 2:42'),
datetime.datetime(2010, 5, 12, 2, 42, tzinfo=utc))
datetime.datetime(2010, 5, 12, 2, 42, tzinfo=UTC))
def test_parse_error(self):
with self.assertRaises(tools.DashboardError):
......@@ -144,7 +144,7 @@ class TestGetUnitsWithDueDate(ModuleStoreTestCase):
"""
super(TestGetUnitsWithDueDate, self).setUp()
due = datetime.datetime(2010, 5, 12, 2, 42, tzinfo=utc)
due = datetime.datetime(2010, 5, 12, 2, 42, tzinfo=UTC)
course = CourseFactory.create()
week1 = ItemFactory.create(due=due, parent=course)
week2 = ItemFactory.create(due=due, parent=course)
......@@ -199,7 +199,7 @@ class TestSetDueDateExtension(ModuleStoreTestCase):
"""
super(TestSetDueDateExtension, self).setUp()
self.due = due = datetime.datetime(2010, 5, 12, 2, 42, tzinfo=utc)
self.due = due = datetime.datetime(2010, 5, 12, 2, 42, tzinfo=UTC)
course = CourseFactory.create()
week1 = ItemFactory.create(due=due, parent=course)
week2 = ItemFactory.create(due=due, parent=course)
......@@ -234,7 +234,7 @@ class TestSetDueDateExtension(ModuleStoreTestCase):
block.fields['due']._del_cached_value(block) # pylint: disable=protected-access
def test_set_due_date_extension(self):
extended = datetime.datetime(2013, 12, 25, 0, 0, tzinfo=utc)
extended = datetime.datetime(2013, 12, 25, 0, 0, tzinfo=UTC)
tools.set_due_date_extension(self.course, self.week1, self.user, extended)
self._clear_field_data_cache()
self.assertEqual(self.week1.due, extended)
......@@ -242,23 +242,23 @@ class TestSetDueDateExtension(ModuleStoreTestCase):
self.assertEqual(self.assignment.due, extended)
def test_set_due_date_extension_num_queries(self):
extended = datetime.datetime(2013, 12, 25, 0, 0, tzinfo=utc)
extended = datetime.datetime(2013, 12, 25, 0, 0, tzinfo=UTC)
with self.assertNumQueries(5):
tools.set_due_date_extension(self.course, self.week1, self.user, extended)
self._clear_field_data_cache()
def test_set_due_date_extension_invalid_date(self):
extended = datetime.datetime(2009, 1, 1, 0, 0, tzinfo=utc)
extended = datetime.datetime(2009, 1, 1, 0, 0, tzinfo=UTC)
with self.assertRaises(tools.DashboardError):
tools.set_due_date_extension(self.course, self.week1, self.user, extended)
def test_set_due_date_extension_no_date(self):
extended = datetime.datetime(2013, 12, 25, 0, 0, tzinfo=utc)
extended = datetime.datetime(2013, 12, 25, 0, 0, tzinfo=UTC)
with self.assertRaises(tools.DashboardError):
tools.set_due_date_extension(self.course, self.week3, self.user, extended)
def test_reset_due_date_extension(self):
extended = datetime.datetime(2013, 12, 25, 0, 0, tzinfo=utc)
extended = datetime.datetime(2013, 12, 25, 0, 0, tzinfo=UTC)
tools.set_due_date_extension(self.course, self.week1, self.user, extended)
tools.set_due_date_extension(self.course, self.week1, self.user, None)
self.assertEqual(self.week1.due, self.due)
......@@ -276,7 +276,7 @@ class TestDataDumps(ModuleStoreTestCase):
"""
super(TestDataDumps, self).setUp()
due = datetime.datetime(2010, 5, 12, 2, 42, tzinfo=utc)
due = datetime.datetime(2010, 5, 12, 2, 42, tzinfo=UTC)
course = CourseFactory.create()
week1 = ItemFactory.create(due=due, parent=course)
week2 = ItemFactory.create(due=due, parent=course)
......@@ -296,7 +296,7 @@ class TestDataDumps(ModuleStoreTestCase):
self.user2 = user2
def test_dump_module_extensions(self):
extended = datetime.datetime(2013, 12, 25, 0, 0, tzinfo=utc)
extended = datetime.datetime(2013, 12, 25, 0, 0, tzinfo=UTC)
tools.set_due_date_extension(self.course, self.week1, self.user1,
extended)
tools.set_due_date_extension(self.course, self.week1, self.user2,
......@@ -316,7 +316,7 @@ class TestDataDumps(ModuleStoreTestCase):
"Extended Due Date": "2013-12-25 00:00"}])
def test_dump_student_extensions(self):
extended = datetime.datetime(2013, 12, 25, 0, 0, tzinfo=utc)
extended = datetime.datetime(2013, 12, 25, 0, 0, tzinfo=UTC)
tools.set_due_date_extension(self.course, self.week1, self.user1,
extended)
tools.set_due_date_extension(self.course, self.week2, self.user1,
......
......@@ -5,7 +5,7 @@ import datetime
import json
import random
from django.utils.timezone import utc
from pytz import UTC
from util.date_utils import get_default_time_display
......@@ -62,7 +62,7 @@ class FakeEmail(FakeInfo):
day = random.randint(1, 28)
hour = random.randint(0, 23)
minute = random.randint(0, 59)
self.created = datetime.datetime(year, month, day, hour, minute, tzinfo=utc)
self.created = datetime.datetime(year, month, day, hour, minute, tzinfo=UTC)
self.targets = FakeTargetGroup()
......
......@@ -6,7 +6,7 @@ import json
import dateutil
from django.contrib.auth.models import User
from django.http import HttpResponseBadRequest
from django.utils.timezone import utc
from pytz import UTC
from django.utils.translation import ugettext as _
from opaque_keys.edx.keys import UsageKey
......@@ -91,7 +91,7 @@ def parse_datetime(datestr):
UTC.
"""
try:
return dateutil.parser.parse(datestr).replace(tzinfo=utc)
return dateutil.parser.parse(datestr).replace(tzinfo=UTC)
except ValueError:
raise DashboardError(_("Unable to parse date: ") + datestr)
......
......@@ -4,7 +4,7 @@ Tests for CourseDetails
import datetime
import ddt
from django.utils.timezone import UTC
from pytz import UTC
from nose.plugins.attrib import attr
from xmodule.modulestore import ModuleStoreEnum
......@@ -84,17 +84,17 @@ class CourseDetailsTestCase(ModuleStoreTestCase):
CourseDetails.update_from_json(self.course.id, jsondetails.__dict__, self.user).self_paced,
jsondetails.self_paced
)
jsondetails.start_date = datetime.datetime(2010, 10, 1, 0, tzinfo=UTC())
jsondetails.start_date = datetime.datetime(2010, 10, 1, 0, tzinfo=UTC)
self.assertEqual(
CourseDetails.update_from_json(self.course.id, jsondetails.__dict__, self.user).start_date,
jsondetails.start_date
)
jsondetails.end_date = datetime.datetime(2011, 10, 1, 0, tzinfo=UTC())
jsondetails.end_date = datetime.datetime(2011, 10, 1, 0, tzinfo=UTC)
self.assertEqual(
CourseDetails.update_from_json(self.course.id, jsondetails.__dict__, self.user).end_date,
jsondetails.end_date
)
jsondetails.certificate_available_date = datetime.datetime(2010, 10, 1, 0, tzinfo=UTC())
jsondetails.certificate_available_date = datetime.datetime(2010, 10, 1, 0, tzinfo=UTC)
self.assertEqual(
CourseDetails.update_from_json(
self.course.id, jsondetails.__dict__, self.user
......
......@@ -6,7 +6,7 @@ import itertools
import logging
from contextlib import closing
from django.utils.timezone import utc
from pytz import UTC
from django.utils.translation import ugettext as _
from rest_framework import permissions, status
from rest_framework.parsers import FormParser, MultiPartParser
......@@ -37,7 +37,7 @@ def _make_upload_dt():
Generate a server-side timestamp for the upload. This is in a separate
function so its behavior can be overridden in tests.
"""
return datetime.datetime.utcnow().replace(tzinfo=utc)
return datetime.datetime.utcnow().replace(tzinfo=UTC)
class ProfileImageView(DeveloperErrorViewMixin, APIView):
......
......@@ -15,7 +15,7 @@ from contracts import contract
from django.conf import settings
from django.contrib.staticfiles.storage import staticfiles_storage
from django.core.urlresolvers import reverse
from django.utils.timezone import UTC
from pytz import UTC
from django.utils.html import escape
from django.contrib.auth.models import User
from edxmako.shortcuts import render_to_string
......@@ -350,7 +350,7 @@ def add_staff_markup(user, has_instructor_access, disable_staff_debug_info, bloc
# Useful to indicate to staff if problem has been released or not.
# TODO (ichuang): use _has_access_descriptor.can_load in lms.courseware.access,
# instead of now>mstart comparison here.
now = datetime.datetime.now(UTC())
now = datetime.datetime.now(UTC)
is_released = "unknown"
mstart = block.start
......
......@@ -9,7 +9,8 @@ from django.conf import settings
from django.contrib import auth
from django.template.loader import render_to_string
from django.utils.http import urlquote_plus
from django.utils.timezone import UTC
from pytz import UTC
from django.utils.translation import get_language, to_locale
from django.utils.translation import ugettext as _
from django.utils.translation import get_language, to_locale
from opaque_keys.edx.keys import CourseKey
......@@ -54,7 +55,7 @@ class CourseHomeMessageFragmentView(EdxFragmentView):
course = get_course_with_access(request.user, 'load', course_key)
# Get time until the start date, if already started, or no start date, value will be zero or negative
now = datetime.now(UTC())
now = datetime.now(UTC)
already_started = course.start and now > course.start
days_until_start_string = "started" if already_started else format_timedelta(course.start - now, locale=to_locale(get_language()))
course_start_data = {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment