diff --git a/lms/djangoapps/instructor/views/serializers_v2.py b/lms/djangoapps/instructor/views/serializers_v2.py index c345f7d67fd4..3c00663a5181 100644 --- a/lms/djangoapps/instructor/views/serializers_v2.py +++ b/lms/djangoapps/instructor/views/serializers_v2.py @@ -13,6 +13,7 @@ from django.utils.html import escape from django.utils.translation import gettext as _ from edx_when.api import is_enabled_for_course +from openedx_filters.learning.filters import InstructorDashboardTabsGenerated from rest_framework import serializers from common.djangoapps.course_modes.models import CourseMode @@ -323,7 +324,20 @@ def get_tabs(self, data): ] order_index = {tab: i for i, tab in enumerate(tabs_order)} tabs = sorted(tabs, key=lambda x: order_index.get(x['tab_id'], float("inf"))) - return tabs + + # Apply the InstructorDashboardTabsGenerated filter to allow plugins to modify tabs + try: + filtered_tabs = InstructorDashboardTabsGenerated.run_filter( + tabs=tabs, + course=course, + user=request.user, + course_key=course_key + ) + return filtered_tabs if filtered_tabs is not None else tabs + except InstructorDashboardTabsGenerated.PreventTabsGeneration as exc: + # Plugin provided custom tabs or prevented tab generation + custom_tabs = getattr(exc, 'tabs', []) + return custom_tabs def get_course_id(self, data): """Get course ID as string."""