text: from django.contrib import admin
  from .base import ModelAdmin, ReadOnlyTabularInline
  from .. import models
  
  
  class VoteCountInline(ReadOnlyTabularInline):
      model = models.VoteCount
      fields = readonly_fields = ("option", "value")
  
  
  class PersonVoteInline(ReadOnlyTabularInline):
      model = models.PersonVote
      fields = readonly_fields = ("voter", "voter_name", "option")
  
  
  class VoteSourceInline(ReadOnlyTabularInline):
      model = models.VoteSource
      fields = readonly_fields = ("url", "note")
  
  
  @admin.register(models.VoteEvent)
  class VoteEventAdmin(ModelAdmin):
      readonly_fields = (
          "bill",
          "organization",
          "legislative_session",
          "id",
          "identifier",
          "motion_text",
          "extras",
      )
      fields = readonly_fields + (
          "result",
          "motion_classification",
          "start_date",
          "end_date",
      )
  
      list_selected_related = (
          "sources",
          "legislative_session",
          "legislative_session__jurisdiction",
          "counts",
      )
  
      def get_jurisdiction_name(self, obj):
          return obj.legislative_session.jurisdiction.name
  
      get_jurisdiction_name.short_description = "Jurisdiction"
  
      def get_vote_tally(self, obj):
          yes = no = other = 0
          for vc in obj.counts.all():
              if vc.option == "yes":
                  yes = vc.value
              elif vc.option == "no":
                  no = vc.value
              else:
                  other += vc.value
          return "{}-{}-{}".format(yes, no, other)
  
      get_vote_tally.short_description = "Vote Tally"
  
      list_display = ("get_jurisdiction_name", "identifier", "bill", "get_vote_tally")
  
      list_filter = ("legislative_session__jurisdiction__name",)
  
      inlines = [VoteCountInline, PersonVoteInline, VoteSourceInline]
  