text: from django import forms
  from django.contrib import admin
  
  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',)
  
  
  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 = ( 'account',)
      list_display = ( 'account', 'truncated_token', 'expires_at')
      list_filter = ( '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)
  