39 lines
1.2 KiB
Python
39 lines
1.2 KiB
Python
from django.conf import settings
|
|
from django.template import Context, Template, TemplateSyntaxError, VariableDoesNotExist
|
|
from mellon.adapters import DefaultAdapter
|
|
|
|
|
|
class MellonAdapter(DefaultAdapter):
|
|
def get_identity_providers_setting(self):
|
|
from hobo.environment.models import Authentic
|
|
|
|
try:
|
|
self_idp = Authentic.objects.get(use_as_idp_for_self=True)
|
|
except Authentic.DoesNotExist:
|
|
return []
|
|
return [{'METADATA_URL': self_idp.get_saml_idp_metadata_url(), 'SLUG': 'idp'}]
|
|
|
|
|
|
class TemplateError(Exception):
|
|
def __init__(self, msg, params=()):
|
|
self.msg = msg
|
|
self.params = params
|
|
|
|
def __str__(self):
|
|
return self.msg % self.params
|
|
|
|
|
|
def get_templated_url(url, context=None):
|
|
if '{{' not in url and '{%' not in url:
|
|
return url
|
|
template_vars = getattr(settings, 'TEMPLATE_VARS', {})
|
|
if context:
|
|
template_vars.update(context)
|
|
template_vars = Context(template_vars, use_l10n=False)
|
|
try:
|
|
return Template(url).render(template_vars)
|
|
except VariableDoesNotExist as e:
|
|
raise TemplateError(e.msg, e.params)
|
|
except TemplateSyntaxError:
|
|
raise TemplateError('syntax error')
|