From e0a0d4d6e34c42516b08b7242df94aea8e70087b Mon Sep 17 00:00:00 2001 From: Michael Terry Date: Fri, 7 Aug 2020 10:29:10 -0400 Subject: [PATCH] Warn if an xblock defines is_past_due as a property We support it still, but want to encourage folks to try to define it as a method, so that in the future, we can rely on it being one. Also updates lti-consumer to a version that has the value as a method. --- .../call_to_action.py | 22 ++++++++++++++++++- requirements/edx/base.txt | 2 +- requirements/edx/development.txt | 2 +- requirements/edx/testing.txt | 2 +- 4 files changed, 24 insertions(+), 4 deletions(-) diff --git a/openedx/features/personalized_learner_schedules/call_to_action.py b/openedx/features/personalized_learner_schedules/call_to_action.py index e37af09bff..ecfee2e386 100644 --- a/openedx/features/personalized_learner_schedules/call_to_action.py +++ b/openedx/features/personalized_learner_schedules/call_to_action.py @@ -1,11 +1,17 @@ +import logging + from django.urls import reverse from django.utils.translation import gettext as _ +log = logging.getLogger(__name__) + class PersonalizedLearnerScheduleCallToAction: CAPA_SUBMIT_DISABLED = 'capa_submit_disabled' VERTICAL_BANNER = 'vertical_banner' + past_due_class_warnings = set() + def get_ctas(self, xblock, category): """ Return the calls to action associated with the specified category for the given xblock. @@ -58,10 +64,24 @@ class PersonalizedLearnerScheduleCallToAction: else: can_attempt = True - is_past_due = xblock.is_past_due() if callable(xblock.is_past_due) else xblock.is_past_due + if callable(xblock.is_past_due): + is_past_due = xblock.is_past_due() + else: + PersonalizedLearnerScheduleCallToAction._log_past_due_warning(type(xblock).__name__) + is_past_due = xblock.is_past_due return xblock.self_paced and can_attempt and is_past_due + @staticmethod + def _log_past_due_warning(name): + if name in PersonalizedLearnerScheduleCallToAction.past_due_class_warnings: + return + + log.warning('PersonalizedLearnerScheduleCallToAction has encountered an xblock that defines is_past_due ' + 'as a property. This is supported for now, but may not be in the future. Please change ' + '%s.is_past_due into a method.', name) + PersonalizedLearnerScheduleCallToAction.past_due_class_warnings.add(name) + @staticmethod def _make_reset_deadlines_cta(xblock): from lms.urls import RESET_COURSE_DEADLINES_NAME diff --git a/requirements/edx/base.txt b/requirements/edx/base.txt index 5e2133352a..6143bcaf0f 100644 --- a/requirements/edx/base.txt +++ b/requirements/edx/base.txt @@ -145,7 +145,7 @@ lazy==1.4 # via -r requirements/edx/paver.txt, acid-xblock, lti- lepl==5.1.3 # via rfc6266-parser libsass==0.10.0 # via -r requirements/edx/paver.txt, ora2 loremipsum==1.0.5 # via ora2 -lti-consumer-xblock==2.1.0 # via -r requirements/edx/base.in +lti-consumer-xblock==2.1.1 # via -r requirements/edx/base.in lxml==4.5.0 # via -c requirements/edx/../constraints.txt, -r requirements/edx/../edx-sandbox/shared.txt, capa, edxval, lti-consumer-xblock, ora2, safe-lxml, xblock, xmlsec mailsnake==1.6.4 # via -r requirements/edx/base.in mako==1.1.3 # via -r requirements/edx/base.in, acid-xblock, lti-consumer-xblock, xblock-google-drive, xblock-utils diff --git a/requirements/edx/development.txt b/requirements/edx/development.txt index 07d37aebcb..8e73d4a744 100644 --- a/requirements/edx/development.txt +++ b/requirements/edx/development.txt @@ -173,7 +173,7 @@ lazy==1.4 # via -r requirements/edx/testing.txt, acid-xblock, bo lepl==5.1.3 # via -r requirements/edx/testing.txt, rfc6266-parser libsass==0.10.0 # via -r requirements/edx/testing.txt, ora2 loremipsum==1.0.5 # via -r requirements/edx/testing.txt, ora2 -lti-consumer-xblock==2.1.0 # via -r requirements/edx/testing.txt +lti-consumer-xblock==2.1.1 # via -r requirements/edx/testing.txt lxml==4.5.0 # via -c requirements/edx/../constraints.txt, -r requirements/edx/testing.txt, capa, edxval, lti-consumer-xblock, ora2, pyquery, safe-lxml, xblock, xmlsec m2r==0.2.1 # via sphinxcontrib-openapi mailsnake==1.6.4 # via -r requirements/edx/testing.txt diff --git a/requirements/edx/testing.txt b/requirements/edx/testing.txt index 2d0fcacff9..3b2f9b7f82 100644 --- a/requirements/edx/testing.txt +++ b/requirements/edx/testing.txt @@ -167,7 +167,7 @@ lazy==1.4 # via -r requirements/edx/base.txt, acid-xblock, bok-c lepl==5.1.3 # via -r requirements/edx/base.txt, rfc6266-parser libsass==0.10.0 # via -r requirements/edx/base.txt, ora2 loremipsum==1.0.5 # via -r requirements/edx/base.txt, ora2 -lti-consumer-xblock==2.1.0 # via -r requirements/edx/base.txt +lti-consumer-xblock==2.1.1 # via -r requirements/edx/base.txt lxml==4.5.0 # via -c requirements/edx/../constraints.txt, -r requirements/edx/base.txt, capa, edxval, lti-consumer-xblock, ora2, pyquery, safe-lxml, xblock, xmlsec mailsnake==1.6.4 # via -r requirements/edx/base.txt mako==1.1.3 # via -r requirements/edx/base.txt, acid-xblock, lti-consumer-xblock, xblock-google-drive, xblock-utils