Skip to content

Commit

Permalink
Merge pull request #654 from open-craft/maxim/bb-8271-hiding-dates-ta…
Browse files Browse the repository at this point in the history
…b-for-all-courses-quince-backport

feat: add a feature flag to disable dates tab for all courses
  • Loading branch information
Cup0fCoffee committed Apr 25, 2024
2 parents 525a921 + 0e8e9f5 commit 96efd39
Show file tree
Hide file tree
Showing 5 changed files with 38 additions and 13 deletions.
6 changes: 6 additions & 0 deletions lms/djangoapps/courseware/tabs.py
Original file line number Diff line number Diff line change
Expand Up @@ -315,6 +315,12 @@ def link_func(course, _reverse_func):
tab_dict['link_func'] = link_func
super().__init__(tab_dict)

@classmethod
def is_enabled(cls, course, user=None):
if settings.FEATURES.get('DISABLE_DATES_TAB'):
return False
return super().is_enabled(course, user)


def get_course_tab_list(user, course):
"""
Expand Down
13 changes: 13 additions & 0 deletions lms/djangoapps/courseware/tests/test_tabs.py
Original file line number Diff line number Diff line change
Expand Up @@ -885,3 +885,16 @@ def test_singular_dates_tab(self):
if tab.type == 'dates':
num_dates_tabs += 1
assert num_dates_tabs == 1

def test_dates_tab_is_enabled_by_default(self):
"""Test dates tab is enabled by default."""
tab = DatesTab({'type': DatesTab.type, 'name': 'dates'})
user = self.create_mock_user()
assert self.is_tab_enabled(tab, self.course, user)

@patch.dict("django.conf.settings.FEATURES", {"DISABLE_DATES_TAB": True})
def test_dates_tab_disabled_by_feature_flag(self):
"""Test dates tab is disabled by the feature flag."""
tab = DatesTab({'type': DatesTab.type, 'name': 'dates'})
user = self.create_mock_user()
assert not self.is_tab_enabled(tab, self.course, user)
9 changes: 9 additions & 0 deletions lms/envs/common.py
Original file line number Diff line number Diff line change
Expand Up @@ -1081,6 +1081,15 @@
# .. toggle_target_removal_date: None
# .. toggle_tickets: 'https://github.com/open-craft/edx-platform/pull/632/files'
'ENABLE_TEACHING_ASSISTANT_ROLE': False,

# .. toggle_name: FEATURES['DISABLE_DATES_TAB']
# .. toggle_implementation: DjangoSetting
# .. toggle_default: False
# .. toggle_description: Disables dates tab for all courses.
# .. toggle_use_cases: open_edx
# .. toggle_creation_date: 2024-04-15
# .. toggle_tickets: https://github.com/openedx/edx-platform/pull/34511
'DISABLE_DATES_TAB': False,
}

# Specifies extra XBlock fields that should available when requested via the Course Blocks API
Expand Down
17 changes: 6 additions & 11 deletions openedx/core/djangoapps/user_authn/views/logout.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@
import bleach
from django.conf import settings
from django.contrib.auth import logout
from django.shortcuts import redirect
from django.utils.http import urlencode
from django.views.generic import TemplateView
from oauth2_provider.models import Application
Expand Down Expand Up @@ -47,7 +46,13 @@ def target(self):
If a redirect_url is specified in the querystring for this request, and the value is a safe
url for redirect, the view will redirect to this page after rendering the template.
If it is not specified, we will use the default target url.
Redirect to tpa_logout_url if TPA_AUTOMATIC_LOGOUT_ENABLED is set to True and if
tpa_logout_url is configured.
"""

if getattr(settings, 'TPA_AUTOMATIC_LOGOUT_ENABLED', False) and self.tpa_logout_url:
return self.tpa_logout_url

target_url = self.request.GET.get('redirect_url') or self.request.GET.get('next')

# Some third party apps do not build URLs correctly and send next query param without URL-encoding, resulting
Expand Down Expand Up @@ -85,16 +90,6 @@ def dispatch(self, request, *args, **kwargs):

mark_user_change_as_expected(None)

# Redirect to tpa_logout_url if TPA_AUTOMATIC_LOGOUT_ENABLED is set to True and if
# tpa_logout_url is configured.
#
# NOTE: This step skips rendering logout.html, which is used to log the user out from the
# different IDAs. To ensure the user is logged out of all the IDAs be sure to redirect
# back to <LMS>/logout after logging out of the TPA.
if getattr(settings, 'TPA_AUTOMATIC_LOGOUT_ENABLED', False):
if self.tpa_logout_url:
return redirect(self.tpa_logout_url)

return response

def _build_logout_url(self, url):
Expand Down
6 changes: 4 additions & 2 deletions openedx/core/djangoapps/user_authn/views/tests/test_logout.py
Original file line number Diff line number Diff line change
Expand Up @@ -211,8 +211,10 @@ def test_automatic_tpa_logout_url_redirect(self):
mock_idp_logout_url.return_value = idp_logout_url
self._authenticate_with_oauth(client)
response = self.client.get(reverse('logout'))
assert response.status_code == 302
assert response.url == idp_logout_url
expected = {
'target': idp_logout_url,
}
self.assertDictContainsSubset(expected, response.context_data)

@mock.patch('django.conf.settings.TPA_AUTOMATIC_LOGOUT_ENABLED', True)
def test_no_automatic_tpa_logout_without_logout_url(self):
Expand Down

0 comments on commit 96efd39

Please sign in to comment.