Skip to content
Snippets Groups Projects
Unverified Commit 5ce6ac9c authored by Michael Terry's avatar Michael Terry Committed by GitHub
Browse files

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

Warn if an xblock defines is_past_due as a property
parents e575a12e e0a0d4d6
No related branches found
No related tags found
No related merge requests found
import logging
from django.urls import reverse from django.urls import reverse
from django.utils.translation import gettext as _ from django.utils.translation import gettext as _
log = logging.getLogger(__name__)
class PersonalizedLearnerScheduleCallToAction: class PersonalizedLearnerScheduleCallToAction:
CAPA_SUBMIT_DISABLED = 'capa_submit_disabled' CAPA_SUBMIT_DISABLED = 'capa_submit_disabled'
VERTICAL_BANNER = 'vertical_banner' VERTICAL_BANNER = 'vertical_banner'
past_due_class_warnings = set()
def get_ctas(self, xblock, category): def get_ctas(self, xblock, category):
""" """
Return the calls to action associated with the specified category for the given xblock. Return the calls to action associated with the specified category for the given xblock.
...@@ -58,10 +64,24 @@ class PersonalizedLearnerScheduleCallToAction: ...@@ -58,10 +64,24 @@ class PersonalizedLearnerScheduleCallToAction:
else: else:
can_attempt = True 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 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 @staticmethod
def _make_reset_deadlines_cta(xblock): def _make_reset_deadlines_cta(xblock):
from lms.urls import RESET_COURSE_DEADLINES_NAME from lms.urls import RESET_COURSE_DEADLINES_NAME
......
...@@ -145,7 +145,7 @@ lazy==1.4 # via -r requirements/edx/paver.txt, acid-xblock, lti- ...@@ -145,7 +145,7 @@ lazy==1.4 # via -r requirements/edx/paver.txt, acid-xblock, lti-
lepl==5.1.3 # via rfc6266-parser lepl==5.1.3 # via rfc6266-parser
libsass==0.10.0 # via -r requirements/edx/paver.txt, ora2 libsass==0.10.0 # via -r requirements/edx/paver.txt, ora2
loremipsum==1.0.5 # via 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 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 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 mako==1.1.3 # via -r requirements/edx/base.in, acid-xblock, lti-consumer-xblock, xblock-google-drive, xblock-utils
......
...@@ -174,7 +174,7 @@ lazy==1.4 # via -r requirements/edx/testing.txt, acid-xblock, bo ...@@ -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 lepl==5.1.3 # via -r requirements/edx/testing.txt, rfc6266-parser
libsass==0.10.0 # via -r requirements/edx/testing.txt, ora2 libsass==0.10.0 # via -r requirements/edx/testing.txt, ora2
loremipsum==1.0.5 # 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 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 m2r==0.2.1 # via sphinxcontrib-openapi
mailsnake==1.6.4 # via -r requirements/edx/testing.txt mailsnake==1.6.4 # via -r requirements/edx/testing.txt
......
...@@ -168,7 +168,7 @@ lazy==1.4 # via -r requirements/edx/base.txt, acid-xblock, bok-c ...@@ -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 lepl==5.1.3 # via -r requirements/edx/base.txt, rfc6266-parser
libsass==0.10.0 # via -r requirements/edx/base.txt, ora2 libsass==0.10.0 # via -r requirements/edx/base.txt, ora2
loremipsum==1.0.5 # 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 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 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 mako==1.1.3 # via -r requirements/edx/base.txt, acid-xblock, lti-consumer-xblock, xblock-google-drive, xblock-utils
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment