From 7d5a3f135657a4f0d2f8615bba4e816cf289f0c2 Mon Sep 17 00:00:00 2001 From: Benjamin Dauvergne Date: Mon, 10 Mar 2014 09:25:03 +0100 Subject: [PATCH] models: inherit from oauth2.Client to add logout urls --- authentic2_idp_oauth2/__init__.py | 29 +++++++++++++---------------- authentic2_idp_oauth2/admin.py | 5 +++++ authentic2_idp_oauth2/models.py | 17 ++++------------- 3 files changed, 22 insertions(+), 29 deletions(-) create mode 100644 authentic2_idp_oauth2/admin.py diff --git a/authentic2_idp_oauth2/__init__.py b/authentic2_idp_oauth2/__init__.py index 7760a5a..d961ede 100644 --- a/authentic2_idp_oauth2/__init__.py +++ b/authentic2_idp_oauth2/__init__.py @@ -1,6 +1,7 @@ from django.utils.timezone import now from django.template.loader import render_to_string + class Plugin(object): def get_before_urls(self): from . import urls @@ -10,26 +11,22 @@ class Plugin(object): return ['rest_framework', 'provider', 'provider.oauth2', __name__] def logout_list(self, request): - from provider.oauth2.models import Client + from . import models - if not request.user.is_authenticated(): - return [] - - qs = Client.objects.filter(accesstoken__user=request.user, + qs = models.A2Client.objects.filter(accesstoken__user=request.user, accesstoken__expires__gt=now(), logout_url__isnull=False) \ .distinct() l = [] for client in qs: - for logout_url in client.logout_url.all(): - name = client.name - url = logout_url.get_url() - content = render_to_string('idp/saml/logout_fragment.html', - { - 'needs_iframe': logout_url.use_iframe, - 'name': name, - 'url': url, - 'iframe_timeout': 2, - }) - l.append(content) + name = client.name + url = client.get_logout_url() + ctx = { + 'needs_iframe': client.logout_use_iframe, + 'name': name, + 'url': url, + 'iframe_timeout': client.logout_use_iframe_timeout, + } + content = render_to_string('idp/saml/logout_fragment.html', ctx) + l.append(content) return l diff --git a/authentic2_idp_oauth2/admin.py b/authentic2_idp_oauth2/admin.py new file mode 100644 index 0000000..a192789 --- /dev/null +++ b/authentic2_idp_oauth2/admin.py @@ -0,0 +1,5 @@ +from django.contrib import admin + +from . import models + +admin.site.register(models.A2Client) diff --git a/authentic2_idp_oauth2/models.py b/authentic2_idp_oauth2/models.py index 8575945..32e4c67 100644 --- a/authentic2_idp_oauth2/models.py +++ b/authentic2_idp_oauth2/models.py @@ -1,15 +1,6 @@ -try: - from django.contrib.contenttypes.fields import GenericRelation - django_17 = True -except ImportError: - django_17 = False - from django.contrib.contenttypes.generic import GenericRelation - from provider.oauth2.models import Client -from authentic2.models import LogoutUrl -if django_17: - GenericRelation(LogoutUrl, related_query_name='oauth2_clients')\ - .contribute_to_class(Client, 'logout_url') -else: - GenericRelation(LogoutUrl).contribute_to_class(Client, 'logout_url') +from authentic2.models import LogoutUrlAbstract + +class A2Client(LogoutUrlAbstract, Client): + pass