text: # mypy: ignore-errors
  from django.contrib import admin
  
  from .models import LtiTool, LtiToolKey
  
  
  class LtiToolKeyAdmin(admin.ModelAdmin):
      """Admin for LTI Tool Key"""
      list_display = ('id', 'name')
  
      add_fieldsets = (
          (None, {'fields': ('name', 'private_key', 'public_key')}),
      )
  
      change_fieldsets = (
          (None, {'fields': ('name', 'private_key', 'public_key', 'public_jwk')}),
      )
  
      readonly_fields = ('public_jwk',)
  
      def get_form(self, request, obj=None, **kwargs):  # pylint: disable=arguments-differ
          help_texts = {'public_key_jwk_json': "Tool's generated Public key presented as JWK."}
          kwargs.update({'help_texts': help_texts})
          return super(LtiToolKeyAdmin, self).get_form(request, obj, **kwargs)
  
      def get_fieldsets(self, request, obj=None):
          if not obj:
              return self.add_fieldsets
          else:
              return self.change_fieldsets
  
  
  class LtiToolAdmin(admin.ModelAdmin):
      """Admin for LTI Tool"""
      search_fields = ('title', 'issuer', 'client_id', 'auth_login_url', 'auth_token_url', 'key_set_url')
      list_display = ('id', 'title', 'is_active', 'issuer', 'client_id', 'deployment_ids')
  
  
  admin.site.register(LtiToolKey, LtiToolKeyAdmin)
  admin.site.register(LtiTool, LtiToolAdmin)
  