Fixed the edX middleware to lazily create request context for Mako templates, so that it is based on any changes made to the request object. Verified that with this fix the "Instructor" tab is correctly hidden when a staff member is viewing the course as a student.
41 lines
1.1 KiB
Python
41 lines
1.1 KiB
Python
"""
|
|
Base class for pages in courseware.
|
|
"""
|
|
|
|
from bok_choy.page_object import PageObject
|
|
from . import BASE_URL
|
|
from .tab_nav import TabNavPage
|
|
|
|
|
|
class CoursePage(PageObject):
|
|
"""
|
|
Abstract base class for page objects within a course.
|
|
"""
|
|
|
|
# Overridden by subclasses to provide the relative path within the course
|
|
# Paths should not include the leading forward slash.
|
|
url_path = ""
|
|
|
|
def __init__(self, browser, course_id):
|
|
"""
|
|
Course ID is currently of the form "edx/999/2013_Spring"
|
|
but this format could change.
|
|
"""
|
|
super(CoursePage, self).__init__(browser)
|
|
self.course_id = course_id
|
|
|
|
@property
|
|
def url(self):
|
|
"""
|
|
Construct a URL to the page within the course.
|
|
"""
|
|
return BASE_URL + "/courses/" + self.course_id + "/" + self.url_path
|
|
|
|
def has_tab(self, tab_name):
|
|
"""
|
|
Returns true if the current page is showing a tab with the given name.
|
|
:return:
|
|
"""
|
|
tab_nav = TabNavPage(self.browser)
|
|
return tab_name in tab_nav.tab_names
|