Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
E
edx-analytics-data-api
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-analytics-data-api
Commits
5a50d4e4
Commit
5a50d4e4
authored
Feb 19, 2014
by
Brian Wilson
Committed by
Gerrit Code Review
Feb 19, 2014
Browse files
Options
Browse Files
Download
Plain Diff
Merge "Change handling for course enrollment offsets."
parents
c99f5f6d
f8b61470
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
24 additions
and
9 deletions
+24
-9
edx/analytics/tasks/reports/enrollments.py
+11
-5
edx/analytics/tasks/reports/tests/test_enrollments.py
+13
-4
No files found.
edx/analytics/tasks/reports/enrollments.py
View file @
5a50d4e4
...
@@ -71,11 +71,17 @@ class CourseEnrollmentCountMixin(object):
...
@@ -71,11 +71,17 @@ class CourseEnrollmentCountMixin(object):
# add them to the counts by the end of that day to
# add them to the counts by the end of that day to
# get the correct count for the day.
# get the correct count for the day.
count_by_day
.
loc
[
date
,
course_id
]
+=
count
count_by_day
.
loc
[
date
,
course_id
]
+=
count
else
:
# Flag values before the offset day with NaN,
# We have an offset for the course, but no current
# since they are not "available".
# counts. Create an course entry, set the offset, and set
not_available
=
count_by_day
.
index
<
date
# all subsequent counts to zero.
count_by_day
.
loc
[
not_available
,
course_id
]
=
numpy
.
NaN
count_by_day
.
loc
[
date
,
course_id
]
=
count
count_by_day
.
loc
[
count_by_day
.
index
>
date
,
course_id
]
=
0
# Flag values before the offset day with NaN,
# since they are not "available".
not_available
=
count_by_day
.
index
<
date
count_by_day
.
loc
[
not_available
,
course_id
]
=
numpy
.
NaN
def
calculate_total_enrollment
(
self
,
count_by_day
,
offsets
=
None
):
def
calculate_total_enrollment
(
self
,
count_by_day
,
offsets
=
None
):
"""
"""
...
...
edx/analytics/tasks/reports/tests/test_enrollments.py
View file @
5a50d4e4
"""Tests for Enrollments-by-week report."""
import
datetime
import
datetime
import
textwrap
import
textwrap
from
StringIO
import
StringIO
from
StringIO
import
StringIO
...
@@ -5,16 +7,16 @@ from StringIO import StringIO
...
@@ -5,16 +7,16 @@ from StringIO import StringIO
import
luigi
import
luigi
import
luigi.hdfs
import
luigi.hdfs
from
mock
import
MagicMock
from
mock
import
MagicMock
from
numpy
import
isnan
from
numpy
import
isnan
# pylint: disable=no-name-in-module
import
pandas
import
pandas
from
edx.analytics.tasks.tests
import
unittest
from
edx.analytics.tasks.tests
import
unittest
from
edx.analytics.tasks.tests.target
import
FakeTarget
from
edx.analytics.tasks.tests.target
import
FakeTarget
from
edx.analytics.tasks.reports.enrollments
import
EnrollmentsByWeek
from
edx.analytics.tasks.reports.enrollments
import
EnrollmentsByWeek
from
edx.analytics.tasks.reports.enrollments
import
ExternalURL
class
TestEnrollmentsByWeek
(
unittest
.
TestCase
):
class
TestEnrollmentsByWeek
(
unittest
.
TestCase
):
"""Tests for EnrollmentsByWeek report task."""
def
run_task
(
self
,
source
,
date
,
weeks
,
offset
=
None
,
statuses
=
None
):
def
run_task
(
self
,
source
,
date
,
weeks
,
offset
=
None
,
statuses
=
None
):
"""
"""
...
@@ -36,7 +38,7 @@ class TestEnrollmentsByWeek(unittest.TestCase):
...
@@ -36,7 +38,7 @@ class TestEnrollmentsByWeek(unittest.TestCase):
# Mock the input and output targets
# Mock the input and output targets
def
reformat
(
string
):
def
reformat
(
string
):
# Reformat string to make it like a hadoop tsv
"""Reformat string to make it like a TSV."""
return
textwrap
.
dedent
(
string
)
.
strip
()
.
replace
(
' '
,
'
\t
'
)
return
textwrap
.
dedent
(
string
)
.
strip
()
.
replace
(
' '
,
'
\t
'
)
input_targets
=
{
input_targets
=
{
...
@@ -96,7 +98,8 @@ class TestEnrollmentsByWeek(unittest.TestCase):
...
@@ -96,7 +98,8 @@ class TestEnrollmentsByWeek(unittest.TestCase):
"""
"""
res
=
self
.
run_task
(
source
,
'2013-01-21'
,
4
)
res
=
self
.
run_task
(
source
,
'2013-01-21'
,
4
)
weeks
=
set
([
'2012-12-31'
,
'2013-01-07'
,
'2013-01-14'
,
'2013-01-21'
])
weeks
=
set
([
'2012-12-31'
,
'2013-01-07'
,
'2013-01-14'
,
'2013-01-21'
])
self
.
assertEqual
(
weeks
|
set
([
'org_id'
,
'status'
]),
set
(
str
(
w
)
for
w
in
res
.
columns
))
self
.
assertEqual
(
weeks
|
set
([
'org_id'
,
'status'
]),
set
(
str
(
w
)
for
w
in
res
.
columns
))
course_1
=
res
.
loc
[
'course_1'
]
course_1
=
res
.
loc
[
'course_1'
]
self
.
assertTrue
(
isnan
(
course_1
[
'2012-12-31'
]))
# no data
self
.
assertTrue
(
isnan
(
course_1
[
'2012-12-31'
]))
# no data
...
@@ -142,6 +145,7 @@ class TestEnrollmentsByWeek(unittest.TestCase):
...
@@ -142,6 +145,7 @@ class TestEnrollmentsByWeek(unittest.TestCase):
offset
=
"""
offset
=
"""
course_2 2013-03-07 8
course_2 2013-03-07 8
course_3 2013-03-15 6
course_3 2013-03-15 6
course_4 2013-03-12 150000
"""
"""
res
=
self
.
run_task
(
source
,
'2013-03-28'
,
4
,
offset
=
offset
)
res
=
self
.
run_task
(
source
,
'2013-03-28'
,
4
,
offset
=
offset
)
...
@@ -154,6 +158,11 @@ class TestEnrollmentsByWeek(unittest.TestCase):
...
@@ -154,6 +158,11 @@ class TestEnrollmentsByWeek(unittest.TestCase):
self
.
assertTrue
(
isnan
(
course_3
[
'2013-03-14'
]))
# no data
self
.
assertTrue
(
isnan
(
course_3
[
'2013-03-14'
]))
# no data
self
.
assertEqual
(
course_3
[
'2013-03-21'
],
9
)
self
.
assertEqual
(
course_3
[
'2013-03-21'
],
9
)
course_4
=
res
.
loc
[
'course_4'
]
self
.
assertTrue
(
isnan
(
course_4
[
'2013-03-07'
]))
# no data
self
.
assertEqual
(
course_4
[
'2013-03-14'
],
150000
)
self
.
assertEqual
(
course_4
[
'2013-03-21'
],
150000
)
def
test_unicode
(
self
):
def
test_unicode
(
self
):
course_id
=
u'course_
\u2603
'
course_id
=
u'course_
\u2603
'
...
...
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