docs: def get_updates_view(request):
      """Return a user's updates. AJAX."""
      if not request.is_ajax():
          raise Http404
  
      if not request.user.is_authenticated():
          return HttpResponse(json.dumps(dict()),
                              content_type="application/json")
  
      try:
          user_profile = UserProfile.objects.get(user=request.user)
      except UserProfile.DoesNotExist:
          return HttpResponse(json.dumps(dict()),
                              content_type="application/json")
  
      response = dict()
      if request.user.is_superuser:
          num_of_profile_requests = ProfileRequest.objects.all().count()
  
          if num_of_profile_requests == 0:
              response['profile_requests_link'] = '''
                  <span class="glyphicon glyphicon-inbox"></span>
                  Profile Requests
              '''
  
          else:
              response['profile_requests_link'] = """
                  <span title="{req_num} open profile request{mult}"
                      class="badge pull-right">{req_num}</span>
                  <span class="glyphicon glyphicon-inbox"></span>
                  Profile Requests
              """.format(
                  req_num=num_of_profile_requests,
                  mult='s' if num_of_profile_requests > 1 else '',
              )
  
      notification_count = request.user.notifications.unread().count()
  
      if notification_count == 0:
          response['notifications_link'] = '''
              <span class="glyphicon glyphicon-bell"></span>
              Notifications
          '''
  
          response['profile_dropdown_link'] = '''
              <span><span class="pull-right"><b class="caret"></b></span>
              <span class="glyphicon glyphicon-user"></span>
              {first_name}&nbsp;</span>
          '''.format(first_name=request.user.first_name)
  
      else:
          response['notifications_link'] = """
              <span title="{n_num} unread notification{mult}"
                  class="badge pull-right">{n_num}</span>
              <span class="glyphicon glyphicon-bell"></span>
              Notifications
          """.format(
              n_num=notification_count,
              mult='s' if notification_count > 1 else '',
          )
  
          response['profile_dropdown_link'] = '''
              <span><span class="pull-right"><b class="caret"></b></span><span
              title="You have {n_num} unread notification{mult}."
              class="badge pull-right">{n_num}</span>
              <span class="glyphicon glyphicon-user"></span>
              {first_name}&nbsp;</span>
          '''.format(
              n_num=notification_count,
              mult='s' if notification_count > 1 else '',
              first_name=request.user.first_name,
          )
  
      req_dict = dict()
      for req_type in RequestType.objects.filter(enabled=True):
          open_reqs = Request.objects.filter(request_type=req_type,
                                            status=Request.OPEN)
          if not req_type.managers.filter(incumbent__user=request.user):
              open_reqs = open_reqs.exclude(
                  ~Q(owner__user=request.user), private=True,
                  )
          num_open = open_reqs.count()
          if num_open == 0:
              req_dict['{rtype}_requests_link'.format(rtype=req_type.url_name)] \
                  = """
                      <span class="glyphicon glyphicon-{icon}"></span>
                      {name}
                  """.format(
                      icon=req_type.glyphicon if req_type.glyphicon else 'inbox',
                      name=req_type.name
                  )
  
          else:
              req_dict['{rtype}_requests_link'.format(rtype=req_type.url_name)] \
                  = """
                      <span title="{num} open request{mult}"
                          class="badge pull-right">{num}</span>
                      <span class="glyphicon glyphicon-{icon}"></span>
                      {name}
                  """.format(
                      num=num_open,
                      mult='s' if num_open > 1 else '',
                      icon=req_type.glyphicon if req_type.glyphicon else 'inbox',
                      name=req_type.name,
                  )
  
      if req_dict.keys():
          response['requests_dict'] = req_dict
  
      request_pk_list = request.GET.get('request_pk_list', False)
      if request_pk_list:
          request_pk_list = request_pk_list.split(',')
          for request_pk in request_pk_list:
              try:
                  req = Request.objects.get(pk=request_pk)
              except Request.DoesNotExist:
                  continue
  
              response['vote_count_{pk}'.format(pk=req.pk)] = req.upvotes.all().count()
  
              list_string = 'vote_list_{pk}'.format(pk=request_pk)
              vote_string = 'in_votes_{pk}'.format(pk=request_pk)
              count_string = 'vote_count_{pk}'.format(pk=request_pk)
              response[list_string], response[vote_string], \
                  response[count_string] = build_ajax_votes(
                      req,
                      user_profile
                  )
  
      event_pk_list = request.GET.get('event_pk_list', False)
      if event_pk_list:
          event_pk_list = event_pk_list.split(',')
          for event_pk in event_pk_list:
              try:
                  event = Event.objects.get(pk=event_pk)
              except Event.DoesNotExist:
                  continue
  
              link_string = 'rsvp_link_{pk}'.format(pk=event.pk)
              list_string = 'rsvp_list_{pk}'.format(pk=event.pk)
              response[link_string], response[list_string] = build_ajax_rsvps(
                  event,
                  user_profile
              )
  
      thread_pk = request.GET.get('thread_pk', False)
      if thread_pk:
          try:
              thread = Thread.objects.get(pk=thread_pk)
          except Thread.DoesNotExist:
              pass
          else:
              response['following'] = user_profile in thread.followers.all()
              response['num_of_followers'] = thread.followers.all().count()
  
      return HttpResponse(json.dumps(response),
                          content_type="application/json")