From bd8a8babe2e69ef0f921f202e9770b67156de752 Mon Sep 17 00:00:00 2001 From: "J. Cliff Dyer" Date: Tue, 23 Aug 2016 16:53:55 -0400 Subject: [PATCH] Update django-oauth-toolkit admin --- lms/djangoapps/oauth_dispatch/admin.py | 73 ++++++++++++++++++++++++++ lms/djangoapps/oauth_dispatch/apps.py | 14 +++++ lms/envs/common.py | 1 + 3 files changed, 88 insertions(+) create mode 100644 lms/djangoapps/oauth_dispatch/admin.py create mode 100644 lms/djangoapps/oauth_dispatch/apps.py diff --git a/lms/djangoapps/oauth_dispatch/admin.py b/lms/djangoapps/oauth_dispatch/admin.py new file mode 100644 index 0000000000..f26ea13aec --- /dev/null +++ b/lms/djangoapps/oauth_dispatch/admin.py @@ -0,0 +1,73 @@ +""" +Override admin configuration for django-oauth-toolkit +""" + +from django.contrib.admin import ModelAdmin, site +from oauth2_provider import models + + +def reregister(model_class): + """ + Remove the existing admin, and register it anew with the given ModelAdmin + + Usage: + + @reregister(ModelClass) + class ModelClassAdmin(ModelAdmin): + pass + """ + def decorator(cls): + """ + The actual decorator that does the work. + """ + site.unregister(model_class) + site.register(model_class, cls) + return cls + + return decorator + + +@reregister(models.AccessToken) +class DOTAccessTokenAdmin(ModelAdmin): + """ + Custom AccessToken Admin + """ + date_hierarchy = u'expires' + list_display = [u'token', u'user', u'application', u'expires'] + list_filter = [u'application'] + raw_id_fields = [u'user'] + search_fields = [u'token', u'user__username'] + + +@reregister(models.RefreshToken) +class DOTRefreshTokenAdmin(ModelAdmin): + """ + Custom AccessToken Admin + """ + list_display = [u'token', u'user', u'application', u'access_token'] + list_filter = [u'application'] + raw_id_fields = [u'user', u'access_token'] + search_fields = [u'token', u'user__username', u'access_token__token'] + + +@reregister(models.Application) +class DOTApplicationAdmin(ModelAdmin): + """ + Custom Application Admin + """ + list_display = [u'name', u'user', u'client_type', u'authorization_grant_type', u'client_id'] + list_filter = [u'client_type', u'authorization_grant_type'] + raw_id_fields = [u'user'] + search_fields = [u'name', u'user__username', u'client_id'] + + +@reregister(models.Grant) +class DOTGrantAdmin(ModelAdmin): + """ + Custom Grant Admin + """ + date_hierarchy = u'expires' + list_display = [u'code', u'user', u'application', u'expires'] + list_filter = [u'application'] + raw_id_fields = [u'user'] + search_fields = [u'code', u'user__username'] diff --git a/lms/djangoapps/oauth_dispatch/apps.py b/lms/djangoapps/oauth_dispatch/apps.py new file mode 100644 index 0000000000..3ef5a571f4 --- /dev/null +++ b/lms/djangoapps/oauth_dispatch/apps.py @@ -0,0 +1,14 @@ +""" +Configure OAuthDispatch App +""" + +from __future__ import absolute_import + +from django.apps import AppConfig + + +class OAuthDispatchAppConfig(AppConfig): + """ + OAuthDispatch Configuration + """ + name = u'lms.djangoapps.oauth_dispatch' diff --git a/lms/envs/common.py b/lms/envs/common.py index 9f10c5465e..7c005ce6ad 100644 --- a/lms/envs/common.py +++ b/lms/envs/common.py @@ -1907,6 +1907,7 @@ INSTALLED_APPS = ( # django-oauth-toolkit 'oauth2_provider', + 'lms.djangoapps.oauth_dispatch.apps.OAuthDispatchAppConfig', 'third_party_auth',