diff --git a/lms/djangoapps/courseware/tabs.py b/lms/djangoapps/courseware/tabs.py index 36b11d9795..47730f77cc 100644 --- a/lms/djangoapps/courseware/tabs.py +++ b/lms/djangoapps/courseware/tabs.py @@ -22,6 +22,7 @@ from courseware.access import has_access from static_replace import replace_urls from open_ended_grading.peer_grading_service import PeerGradingService +from open_ended_grading.staff_grading_service import StaffGradingService from student.models import unique_id_for_user log = logging.getLogger(__name__) @@ -108,7 +109,24 @@ def _textbooks(tab, user, course, active_page): def _staff_grading(tab, user, course, active_page): if has_access(user, course, 'staff'): link = reverse('staff_grading', args=[course.id]) - return [CourseTab('Staff grading', link, active_page == "staff_grading")] + staff_gs = StaffGradingService(settings.STAFF_GRADING_INTERFACE) + pending_grading=False + tab_name = "Staff grading" + img_path= "" + try: + notifications = json.loads(staff_gs.get_notifications(course.id)) + if notifications['success']: + if notifications['staff_needs_to_grade']: + pending_grading=True + except: + #Non catastrophic error, so no real action + log.info("Problem with getting notifications from staff grading service.") + + if pending_grading: + img_path = "/static/images/slider-handle.png" + + tab = [CourseTab(tab_name, link, active_page == "staff_grading", pending_grading, img_path)] + return tab return [] def _peer_grading(tab, user, course, active_page): diff --git a/lms/djangoapps/open_ended_grading/staff_grading_service.py b/lms/djangoapps/open_ended_grading/staff_grading_service.py index 5c6cec17eb..0db17e2ef4 100644 --- a/lms/djangoapps/open_ended_grading/staff_grading_service.py +++ b/lms/djangoapps/open_ended_grading/staff_grading_service.py @@ -66,6 +66,7 @@ class StaffGradingService(GradingService): self.get_next_url = self.url + '/get_next_submission/' self.save_grade_url = self.url + '/save_grade/' self.get_problem_list_url = self.url + '/get_problem_list/' + self.get_notifications_url = self.url + "/get_notifications/" def get_problem_list(self, course_id, grader_id): @@ -132,6 +133,12 @@ class StaffGradingService(GradingService): return self.post(self.save_grade_url, data=data) + def get_notifications(self, course_id): + params = {'course_id': course_id} + response = self.get(self.get_notifications_url, params) + return response + + # don't initialize until staff_grading_service() is called--means that just # importing this file doesn't create objects that may not have the right config _service = None