Merge pull request #17735 from edx/pwnage101/maintenance-banner

maintenance banner for 1.11 migration
This commit is contained in:
Troy Sankey
2018-03-20 19:00:18 -04:00
committed by GitHub
4 changed files with 65 additions and 0 deletions

View File

@@ -0,0 +1,43 @@
"""
View decorator to add a maintenance banner configured in settings.
"""
from __future__ import absolute_import
from functools import wraps
from django.conf import settings
from openedx.core.djangoapps.util.user_messages import PageLevelMessages
from openedx.core.djangoapps.util.waffle import DISPLAY_MAINTENANCE_WARNING, waffle
def add_maintenance_banner(func):
"""
View decorator to select where exactly the banner will appear
Add to function-based views like this:
from openedx.core.djangoapps.util.maintenance_banner import add_maintenance_banner
@add_maintenance_banner
def my_view(request):
...
Add to class-based views using method_decorator:
from openedx.core.djangoapps.util.maintenance_banner import add_maintenance_banner
from django.utils.decorators import method_decorator
@method_decorator(add_maintenance_banner, name='dispatch')
class MyView(View):
...
"""
@wraps(func)
def _decorated(request, *args, **kwargs): # pylint: disable=missing-docstring
if waffle().is_enabled(DISPLAY_MAINTENANCE_WARNING):
if hasattr(settings, 'EDXAPP_MAINTENANCE_BANNER_TEXT') and settings.EDXAPP_MAINTENANCE_BANNER_TEXT:
# The waffle switch is enabled and the banner text is defined
# and non-empty. We can now register the message:
PageLevelMessages.register_warning_message(request, settings.EDXAPP_MAINTENANCE_BANNER_TEXT)
return func(request, *args, **kwargs)
return _decorated

View File

@@ -0,0 +1,18 @@
"""
Waffle flags and switches
"""
from __future__ import absolute_import
from openedx.core.djangoapps.waffle_utils import WaffleSwitchNamespace
WAFFLE_NAMESPACE = u'open_edx_util'
# Switches
DISPLAY_MAINTENANCE_WARNING = u'display_maintenance_warning'
def waffle():
"""
Returns the namespaced, cached, audited Waffle class for open_edx_util.
"""
return WaffleSwitchNamespace(name=WAFFLE_NAMESPACE, log_prefix=u'OpenEdX Util: ')