Add "last completed block" to dropdown

This commit is contained in:
Gregory Martin
2018-02-12 13:45:16 -05:00
committed by Sanford Student
parent 335bf4b035
commit a5d8cbb8e9
7 changed files with 202 additions and 6 deletions

View File

@@ -8,10 +8,12 @@ import time
import six
from django.conf import settings
from django.contrib.auth.models import User
from django.core.urlresolvers import NoReverseMatch, reverse
from django.dispatch import Signal
from django.utils.http import cookie_date
from openedx.core.djangoapps.user_api.accounts.utils import retrieve_last_sitewide_block_completed
from student.models import CourseEnrollment
CREATE_LOGON_COOKIE = Signal(providing_args=['user', 'response'])
@@ -58,6 +60,8 @@ def set_logged_in_cookies(request, response, user):
"username": "test-user",
"header_urls": {
"account_settings": "https://example.com/account/settings",
"resume_block":
"https://example.com//courses/org.0/course_0/Run_0/jump_to/i4x://org.0/course_0/vertical/vertical_4"
"learner_profile": "https://example.com/u/test-user",
"logout": "https://example.com/logout"
}
@@ -165,6 +169,12 @@ def get_user_info_cookie_data(request):
except NoReverseMatch:
pass
# Add 'resume course' last completed block
try:
header_urls['resume_block'] = retrieve_last_sitewide_block_completed(user)
except User.DoesNotExist:
pass
# Convert relative URL paths to absolute URIs
for url_name, url_path in six.iteritems(header_urls):
header_urls[url_name] = request.build_absolute_uri(url_path)

View File

@@ -6,6 +6,7 @@ from django.conf import settings
from django.core.urlresolvers import reverse
from django.test import RequestFactory
from openedx.core.djangoapps.user_api.accounts.utils import retrieve_last_sitewide_block_completed
from student.cookies import get_user_info_cookie_data
from student.models import CourseEnrollment
from student.tests.factories import UserFactory
@@ -26,6 +27,7 @@ class CookieTests(SharedModuleStoreTestCase):
def _get_expected_header_urls(self, request):
expected_header_urls = {
'logout': reverse('logout'),
'resume_block': retrieve_last_sitewide_block_completed(self.user.username)
}
# Studio (CMS) does not have the URLs below

View File

@@ -39,7 +39,7 @@ from util.milestones_helpers import (get_course_milestones,
from util.testing import UrlResetMixin
from xmodule.modulestore import ModuleStoreEnum
from xmodule.modulestore.tests.django_utils import SharedModuleStoreTestCase
from xmodule.modulestore.tests.factories import CourseFactory
from xmodule.modulestore.tests.factories import CourseFactory, ItemFactory
PASSWORD = 'test'
@@ -704,7 +704,11 @@ class StudentDashboardTests(SharedModuleStoreTestCase, MilestonesTestCaseMixin,
course_key = course.id
block_keys = [
course_key.make_usage_key('video', unicode(number))
ItemFactory.create(
category='video',
parent_location=course.location,
display_name='Video {0}'.format(unicode(number))
).location
for number in xrange(5)
]
@@ -773,7 +777,11 @@ class StudentDashboardTests(SharedModuleStoreTestCase, MilestonesTestCaseMixin,
# Submit completed course blocks in even-numbered courses.
if isEven(i):
block_keys = [
course_key.make_usage_key('video', unicode(number))
ItemFactory.create(
category='video',
parent_location=course.location,
display_name='Video {0}'.format(unicode(number))
).location
for number in xrange(5)
]
last_completed_block_string = str(block_keys[-1])