47 lines
1.2 KiB
Python
47 lines
1.2 KiB
Python
"""
|
|
Utility functions used by the badging app.
|
|
"""
|
|
from django.conf import settings
|
|
|
|
|
|
def site_prefix():
|
|
"""
|
|
Get the prefix for the site URL-- protocol and server name.
|
|
"""
|
|
scheme = u"https" if settings.HTTPS == "on" else u"http"
|
|
return u'{}://{}'.format(scheme, settings.SITE_NAME)
|
|
|
|
|
|
def requires_badges_enabled(function):
|
|
"""
|
|
Decorator that bails a function out early if badges aren't enabled.
|
|
"""
|
|
def wrapped(*args, **kwargs):
|
|
"""
|
|
Wrapped function which bails out early if bagdes aren't enabled.
|
|
"""
|
|
if not badges_enabled():
|
|
return
|
|
return function(*args, **kwargs)
|
|
return wrapped
|
|
|
|
|
|
def badges_enabled():
|
|
"""
|
|
returns a boolean indicating whether or not openbadges are enabled.
|
|
"""
|
|
return settings.FEATURES.get('ENABLE_OPENBADGES', False)
|
|
|
|
|
|
def deserialize_count_specs(text):
|
|
"""
|
|
Takes a string in the format of:
|
|
int,course_key
|
|
int,course_key
|
|
|
|
And returns a dictionary with the keys as the numbers and the values as the course keys.
|
|
"""
|
|
specs = text.splitlines()
|
|
specs = [line.split(',') for line in specs if line.strip()]
|
|
return {int(num): slug.strip().lower() for num, slug in specs}
|