Commit 90e0b0e4 by Tim Krones

Rename "Student Answers Dashboard" to "Instructor Tool".

parent dae27b34
......@@ -2,7 +2,7 @@ from .mentoring import MentoringBlock
from .answer import AnswerBlock, AnswerRecapBlock
from .choice import ChoiceBlock
from .dashboard import DashboardBlock
from .student_answers_dashboard import StudentAnswersDashboardBlock
from .instructor_tool import InstructorToolBlock
from .mcq import MCQBlock, RatingBlock
from .mrq import MRQBlock
from .message import MentoringMessageBlock
......
......@@ -18,7 +18,7 @@
# "AGPLv3". If not, see <http://www.gnu.org/licenses/>.
#
"""
Student Answers Dashboard: An XBlock for instructors to export student answers from a course.
Instructor Tool: An XBlock for instructors to export student answers from a course.
All processing is done offline.
"""
......@@ -39,16 +39,16 @@ def _(text):
@XBlock.needs("i18n")
@XBlock.wants('user')
class StudentAnswersDashboardBlock(XBlock):
class InstructorToolBlock(XBlock):
"""
StudentAnswersDashboardBlock: An XBlock for instructors to export student answers from a course.
InstructorToolBlock: An XBlock for instructors to export student answers from a course.
All processing is done offline.
"""
display_name = String(
display_name=_("Title (Display name)"),
help=_("Title to display"),
default=_("Student Answers Dashboard"),
default=_("Instructor Tool"),
scope=Scope.settings
)
active_export_task_id = String(
......@@ -67,13 +67,13 @@ class StudentAnswersDashboardBlock(XBlock):
@property
def display_name_with_default(self):
return "Student Answers Dashboard"
return "Instructor Tool"
def author_view(self, context=None):
""" Studio View """
# Warn the user that this block will only work from the LMS. (Since the CMS uses
# different celery queues; our task listener is waiting for tasks on the LMS queue)
return Fragment(u'<p>Student Answers Dashboard Block</p><p>This block only works from the LMS.</p>')
return Fragment(u'<p>Instructor Tool Block</p><p>This block only works from the LMS.</p>')
def check_pending_export(self):
"""
......@@ -106,16 +106,16 @@ class StudentAnswersDashboardBlock(XBlock):
_('Long Answer'): 'AnswerBlock',
}
html = loader.render_template(
'templates/html/student_answers_dashboard.html',
'templates/html/instructor_tool.html',
{'block_choices': block_choices}
)
fragment = Fragment(html)
fragment.add_css_url(self.runtime.local_resource_url(self, 'public/css/student_answers_dashboard.css'))
fragment.add_javascript_url(self.runtime.local_resource_url(self, 'public/js/student_answers_dashboard.js'))
fragment.add_css_url(self.runtime.local_resource_url(self, 'public/css/instructor_tool.css'))
fragment.add_javascript_url(self.runtime.local_resource_url(self, 'public/js/instructor_tool.js'))
fragment.add_javascript_url(self.runtime.local_resource_url(self, 'public/js/vendor/underscore-min.js'))
fragment.add_javascript_url(self.runtime.local_resource_url(self, 'public/js/vendor/backbone-min.js'))
fragment.add_javascript_url(self.runtime.local_resource_url(self, 'public/js/vendor/backbone.paginator.min.js'))
fragment.initialize_js('StudentAnswersDashboardBlock')
fragment.initialize_js('InstructorToolBlock')
return fragment
@property
......
function StudentAnswersDashboardBlock(runtime, element) {
function InstructorToolBlock(runtime, element) {
'use strict';
var $element = $(element);
......
{% load i18n %}
<h2>{% trans "Student Answers Dashboard" %}</h3>
<h2>{% trans "Instructor Tool" %}</h3>
<div class="data-export-options">
<div class="data-export-header">
......
......@@ -7,7 +7,7 @@ from mock import patch, Mock
from selenium.common.exceptions import NoSuchElementException
from xblockutils.base_test import SeleniumXBlockTest
from problem_builder.student_answers_dashboard import StudentAnswersDashboardBlock
from problem_builder.instructor_tool import InstructorToolBlock
class MockTasksModule(object):
......@@ -42,13 +42,13 @@ class MockInstructorTaskModelsModule(object):
]
class StudentAnswersDashboardTest(SeleniumXBlockTest):
class InstructorToolTest(SeleniumXBlockTest):
def setUp(self):
super(StudentAnswersDashboardTest, self).setUp()
super(InstructorToolTest, self).setUp()
self.set_scenario_xml("""
<vertical_demo>
<pb-student-answers-dashboard url_name="data_export"/>
<pb-instructor-tool url_name="data_export"/>
</vertical_demo>
""")
......@@ -61,16 +61,16 @@ class StudentAnswersDashboardTest(SeleniumXBlockTest):
'instructor_task': True,
'instructor_task.models': MockInstructorTaskModelsModule(),
})
@patch.object(StudentAnswersDashboardBlock, 'user_is_staff', Mock(return_value=True))
@patch.object(InstructorToolBlock, 'user_is_staff', Mock(return_value=True))
def test_data_export_success(self):
student_answers_dashboard = self.go_to_view()
start_button = student_answers_dashboard.find_element_by_class_name('data-export-start')
result_block = student_answers_dashboard.find_element_by_class_name('data-export-results')
info_area = student_answers_dashboard.find_element_by_class_name('data-export-info')
status_area = student_answers_dashboard.find_element_by_class_name('data-export-status')
download_button = student_answers_dashboard.find_element_by_class_name('data-export-download')
cancel_button = student_answers_dashboard.find_element_by_class_name('data-export-cancel')
delete_button = student_answers_dashboard.find_element_by_class_name('data-export-delete')
instructor_tool = self.go_to_view()
start_button = instructor_tool.find_element_by_class_name('data-export-start')
result_block = instructor_tool.find_element_by_class_name('data-export-results')
info_area = instructor_tool.find_element_by_class_name('data-export-info')
status_area = instructor_tool.find_element_by_class_name('data-export-status')
download_button = instructor_tool.find_element_by_class_name('data-export-download')
cancel_button = instructor_tool.find_element_by_class_name('data-export-cancel')
delete_button = instructor_tool.find_element_by_class_name('data-export-delete')
start_button.click()
......@@ -99,16 +99,16 @@ class StudentAnswersDashboardTest(SeleniumXBlockTest):
'instructor_task': True,
'instructor_task.models': MockInstructorTaskModelsModule(),
})
@patch.object(StudentAnswersDashboardBlock, 'user_is_staff', Mock(return_value=True))
@patch.object(InstructorToolBlock, 'user_is_staff', Mock(return_value=True))
def test_data_export_error(self):
student_answers_dashboard = self.go_to_view()
start_button = student_answers_dashboard.find_element_by_class_name('data-export-start')
result_block = student_answers_dashboard.find_element_by_class_name('data-export-results')
info_area = student_answers_dashboard.find_element_by_class_name('data-export-info')
status_area = student_answers_dashboard.find_element_by_class_name('data-export-status')
download_button = student_answers_dashboard.find_element_by_class_name('data-export-download')
cancel_button = student_answers_dashboard.find_element_by_class_name('data-export-cancel')
delete_button = student_answers_dashboard.find_element_by_class_name('data-export-delete')
instructor_tool = self.go_to_view()
start_button = instructor_tool.find_element_by_class_name('data-export-start')
result_block = instructor_tool.find_element_by_class_name('data-export-results')
info_area = instructor_tool.find_element_by_class_name('data-export-info')
status_area = instructor_tool.find_element_by_class_name('data-export-status')
download_button = instructor_tool.find_element_by_class_name('data-export-download')
cancel_button = instructor_tool.find_element_by_class_name('data-export-cancel')
delete_button = instructor_tool.find_element_by_class_name('data-export-delete')
start_button.click()
......@@ -131,17 +131,17 @@ class StudentAnswersDashboardTest(SeleniumXBlockTest):
'instructor_task': True,
'instructor_task.models': MockInstructorTaskModelsModule(),
})
@patch.object(StudentAnswersDashboardBlock, 'user_is_staff', Mock(return_value=True))
@patch.object(InstructorToolBlock, 'user_is_staff', Mock(return_value=True))
def test_pagination_no_results(self):
student_answers_dashboard = self.go_to_view()
start_button = student_answers_dashboard.find_element_by_class_name('data-export-start')
result_block = student_answers_dashboard.find_element_by_class_name('data-export-results')
first_page_button = student_answers_dashboard.find_element_by_id('first-page')
prev_page_button = student_answers_dashboard.find_element_by_id('prev-page')
next_page_button = student_answers_dashboard.find_element_by_id('next-page')
last_page_button = student_answers_dashboard.find_element_by_id('last-page')
current_page_info = student_answers_dashboard.find_element_by_id('current-page')
total_pages_info = student_answers_dashboard.find_element_by_id('total-pages')
instructor_tool = self.go_to_view()
start_button = instructor_tool.find_element_by_class_name('data-export-start')
result_block = instructor_tool.find_element_by_class_name('data-export-results')
first_page_button = instructor_tool.find_element_by_id('first-page')
prev_page_button = instructor_tool.find_element_by_id('prev-page')
next_page_button = instructor_tool.find_element_by_id('next-page')
last_page_button = instructor_tool.find_element_by_id('last-page')
current_page_info = instructor_tool.find_element_by_id('current-page')
total_pages_info = instructor_tool.find_element_by_id('total-pages')
start_button.click()
......@@ -164,17 +164,17 @@ class StudentAnswersDashboardTest(SeleniumXBlockTest):
'instructor_task': True,
'instructor_task.models': MockInstructorTaskModelsModule(),
})
@patch.object(StudentAnswersDashboardBlock, 'user_is_staff', Mock(return_value=True))
@patch.object(InstructorToolBlock, 'user_is_staff', Mock(return_value=True))
def test_pagination_single_result(self):
student_answers_dashboard = self.go_to_view()
start_button = student_answers_dashboard.find_element_by_class_name('data-export-start')
result_block = student_answers_dashboard.find_element_by_class_name('data-export-results')
first_page_button = student_answers_dashboard.find_element_by_id('first-page')
prev_page_button = student_answers_dashboard.find_element_by_id('prev-page')
next_page_button = student_answers_dashboard.find_element_by_id('next-page')
last_page_button = student_answers_dashboard.find_element_by_id('last-page')
current_page_info = student_answers_dashboard.find_element_by_id('current-page')
total_pages_info = student_answers_dashboard.find_element_by_id('total-pages')
instructor_tool = self.go_to_view()
start_button = instructor_tool.find_element_by_class_name('data-export-start')
result_block = instructor_tool.find_element_by_class_name('data-export-results')
first_page_button = instructor_tool.find_element_by_id('first-page')
prev_page_button = instructor_tool.find_element_by_id('prev-page')
next_page_button = instructor_tool.find_element_by_id('next-page')
last_page_button = instructor_tool.find_element_by_id('last-page')
current_page_info = instructor_tool.find_element_by_id('current-page')
total_pages_info = instructor_tool.find_element_by_id('total-pages')
start_button.click()
......@@ -203,17 +203,17 @@ class StudentAnswersDashboardTest(SeleniumXBlockTest):
'instructor_task': True,
'instructor_task.models': MockInstructorTaskModelsModule(),
})
@patch.object(StudentAnswersDashboardBlock, 'user_is_staff', Mock(return_value=True))
@patch.object(InstructorToolBlock, 'user_is_staff', Mock(return_value=True))
def test_pagination_multiple_results(self):
student_answers_dashboard = self.go_to_view()
start_button = student_answers_dashboard.find_element_by_class_name('data-export-start')
result_block = student_answers_dashboard.find_element_by_class_name('data-export-results')
first_page_button = student_answers_dashboard.find_element_by_id('first-page')
prev_page_button = student_answers_dashboard.find_element_by_id('prev-page')
next_page_button = student_answers_dashboard.find_element_by_id('next-page')
last_page_button = student_answers_dashboard.find_element_by_id('last-page')
current_page_info = student_answers_dashboard.find_element_by_id('current-page')
total_pages_info = student_answers_dashboard.find_element_by_id('total-pages')
instructor_tool = self.go_to_view()
start_button = instructor_tool.find_element_by_class_name('data-export-start')
result_block = instructor_tool.find_element_by_class_name('data-export-results')
first_page_button = instructor_tool.find_element_by_id('first-page')
prev_page_button = instructor_tool.find_element_by_id('prev-page')
next_page_button = instructor_tool.find_element_by_id('next-page')
last_page_button = instructor_tool.find_element_by_id('last-page')
current_page_info = instructor_tool.find_element_by_id('current-page')
total_pages_info = instructor_tool.find_element_by_id('total-pages')
start_button.click()
......@@ -299,22 +299,22 @@ class StudentAnswersDashboardTest(SeleniumXBlockTest):
self.assertEqual('1', current_page_info.text)
def test_non_staff_disabled(self):
student_answers_dashboard = self.go_to_view()
instructor_tool = self.go_to_view()
self.assertRaises(
NoSuchElementException, student_answers_dashboard.find_element_by_class_name, 'data-export-start'
NoSuchElementException, instructor_tool.find_element_by_class_name, 'data-export-start'
)
self.assertRaises(
NoSuchElementException, student_answers_dashboard.find_element_by_class_name, 'data-export-cancel'
NoSuchElementException, instructor_tool.find_element_by_class_name, 'data-export-cancel'
)
self.assertRaises(
NoSuchElementException, student_answers_dashboard.find_element_by_class_name, 'data-export-download'
NoSuchElementException, instructor_tool.find_element_by_class_name, 'data-export-download'
)
self.assertRaises(
NoSuchElementException, student_answers_dashboard.find_element_by_class_name, 'data-export-delete'
NoSuchElementException, instructor_tool.find_element_by_class_name, 'data-export-delete'
)
self.assertRaises(
NoSuchElementException, student_answers_dashboard.find_element_by_class_name, 'data-export-results'
NoSuchElementException, instructor_tool.find_element_by_class_name, 'data-export-results'
)
self.assertRaises(
NoSuchElementException, student_answers_dashboard.find_element_by_class_name, 'data-export-status'
NoSuchElementException, instructor_tool.find_element_by_class_name, 'data-export-status'
)
......@@ -54,8 +54,8 @@ BLOCKS = [
'pb-choice = problem_builder:ChoiceBlock',
'pb-dashboard = problem_builder:DashboardBlock',
'pb-data-export = problem_builder:StudentAnswersDashboardBlock', # Deprecated; use pb-student-answers-dashboard instead
'pb-student-answers-dashboard = problem_builder:StudentAnswersDashboardBlock',
'pb-data-export = problem_builder:InstructorToolBlock', # Deprecated; use pb-instructor-tool instead
'pb-instructor-tool = problem_builder:InstructorToolBlock',
]
setup(
......
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