62 lines
1.7 KiB
Python
62 lines
1.7 KiB
Python
from django import forms
|
|
from django.contrib import admin
|
|
|
|
from allauth import app_settings
|
|
from allauth.account.adapter import get_adapter
|
|
|
|
from .models import SocialAccount, SocialApp, SocialToken
|
|
|
|
|
|
class SocialAppForm(forms.ModelForm):
|
|
class Meta:
|
|
model = SocialApp
|
|
exclude = []
|
|
widgets = {
|
|
"client_id": forms.TextInput(attrs={"size": "100"}),
|
|
"key": forms.TextInput(attrs={"size": "100"}),
|
|
"secret": forms.TextInput(attrs={"size": "100"}),
|
|
}
|
|
|
|
|
|
class SocialAppAdmin(admin.ModelAdmin):
|
|
form = SocialAppForm
|
|
list_display = (
|
|
"name",
|
|
"provider",
|
|
)
|
|
filter_horizontal = ("sites",) if app_settings.SITES_ENABLED else ()
|
|
|
|
|
|
class SocialAccountAdmin(admin.ModelAdmin):
|
|
search_fields = []
|
|
raw_id_fields = ("user",)
|
|
list_display = ("user", "uid", "provider")
|
|
list_filter = ("provider",)
|
|
|
|
def get_search_fields(self, request):
|
|
base_fields = get_adapter().get_user_search_fields()
|
|
return list(map(lambda a: "user__" + a, base_fields))
|
|
|
|
|
|
class SocialTokenAdmin(admin.ModelAdmin):
|
|
raw_id_fields = (
|
|
"app",
|
|
"account",
|
|
)
|
|
list_display = ("app", "account", "truncated_token", "expires_at")
|
|
list_filter = ("app", "app__provider", "expires_at")
|
|
|
|
def truncated_token(self, token):
|
|
max_chars = 40
|
|
ret = token.token
|
|
if len(ret) > max_chars:
|
|
ret = ret[0:max_chars] + "...(truncated)"
|
|
return ret
|
|
|
|
truncated_token.short_description = "Token"
|
|
|
|
|
|
admin.site.register(SocialApp, SocialAppAdmin)
|
|
admin.site.register(SocialToken, SocialTokenAdmin)
|
|
admin.site.register(SocialAccount, SocialAccountAdmin)
|