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