Merge pull request #24728 from edx/mikix/warn-on-is-past-due-prop

Warn if an xblock defines is_past_due as a property
This commit is contained in:
Michael Terry
2020-08-07 11:33:29 -04:00
committed by GitHub
4 changed files with 24 additions and 4 deletions

View File

@@ -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

View File

@@ -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

View File

@@ -174,7 +174,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

View File

@@ -168,7 +168,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