""" Store status messages in the database. """ from config_models.admin import ConfigurationModelAdmin from config_models.models import ConfigurationModel from django.contrib import admin from django.core.cache import cache from django.db import models from django.utils.encoding import python_2_unicode_compatible from opaque_keys.edx.django.models import CourseKeyField from openedx.core.djangolib.markup import HTML @python_2_unicode_compatible class GlobalStatusMessage(ConfigurationModel): """ Model that represents the current status message. .. no_pii: """ message = models.TextField( blank=True, null=True, help_text='
The contents of this field will be displayed as a warning banner on all views.
' 'To override the banner message for a specific course, refer to the Course Message configuration. ' # lint-amnesty, pylint: disable=line-too-long 'Course Messages will only work if the global status message is enabled, so if you only want to add ' 'a banner to specific courses without adding a global status message, you should add a global status ' # lint-amnesty, pylint: disable=line-too-long 'message with empty message text.
' 'Finally, disable the global status message by adding another empty message with "enabled" ' 'unchecked.
') def full_message(self, course_key): """ Returns the full status message, including any course-specific status messages. """ cache_key = "status_message.{course_id}".format(course_id=str(course_key)) if cache.get(cache_key): return cache.get(cache_key) msg = self.message if course_key: try: course_home_message = self.coursemessage_set.get(course_key=course_key) # Don't override the message if course_home_message is blank. if course_home_message: msg = HTML("{}