Files
edx-platform/common/djangoapps/xblock_django/models.py

75 lines
2.2 KiB
Python

"""
Models.
"""
from django.utils.translation import ugettext_lazy as _
from django.conf import settings
from django.db.models import TextField
from config_models.models import ConfigurationModel
class XBlockDisableConfig(ConfigurationModel):
"""
Configuration for disabling and deprecating XBlocks.
"""
class Meta(ConfigurationModel.Meta):
app_label = 'xblock_django'
disabled_blocks = TextField(
default='', blank=True,
help_text=_('Space-separated list of XBlocks which should not render.')
)
disabled_create_blocks = TextField(
default='', blank=True,
help_text=_(
"Space-separated list of XBlock types whose creation to disable in Studio."
)
)
@classmethod
def is_block_type_disabled(cls, block_type):
""" Return True if block_type is disabled. """
config = cls.current()
if not config.enabled:
return False
return block_type in config.disabled_blocks.split()
@classmethod
def disabled_block_types(cls):
""" Return list of disabled xblock types. """
config = cls.current()
if not config.enabled:
return ()
return config.disabled_blocks.split()
@classmethod
def disabled_create_block_types(cls):
""" Return list of deprecated XBlock types. Merges types in settings file and field. """
config = cls.current()
xblock_types = config.disabled_create_blocks.split() if config.enabled else []
# Merge settings list with one in the admin config;
if hasattr(settings, 'DEPRECATED_ADVANCED_COMPONENT_TYPES'):
xblock_types.extend(
xblock_type for xblock_type in settings.DEPRECATED_ADVANCED_COMPONENT_TYPES
if xblock_type not in xblock_types
)
return xblock_types
def __unicode__(self):
config = XBlockDisableConfig.current()
return u"Disabled xblocks = {disabled_xblocks}\nDeprecated xblocks = {disabled_create_block_types}".format(
disabled_xblocks=config.disabled_blocks,
disabled_create_block_types=config.disabled_create_block_types
)