code: def calc_list(request, id=None):
      # view associated to the endpoints /v1/calc/list and /v1/calc/:id/status
      
      base_url = _get_base_url(request)
      calc_data = logs.dbcmd('get_calcs', request.GET,
                             utils.get_valid_users(request),
                             utils.get_acl_on(request), id)
  
      response_data = []
      username = psutil.Process(os.getpid()).username()
      for (hc_id, owner, status, calculation_mode, is_running, desc, pid,
           parent_id, size_mb) in calc_data:
          url = urlparse.urljoin(base_url, 'v1/calc/%d' % hc_id)
          abortable = False
          if is_running:
              try:
                  if psutil.Process(pid).username() == username:
                      abortable = True
              except psutil.NoSuchProcess:
                  pass
          response_data.append(
              dict(id=hc_id, owner=owner,
                   calculation_mode=calculation_mode, status=status,
                   is_running=bool(is_running), description=desc, url=url,
                   parent_id=parent_id, abortable=abortable, size_mb=size_mb))
  
      # if id is specified the related dictionary is returned instead the list
      if id is not None:
          [response_data] = response_data
  
      return HttpResponse(content=json.dumps(response_data),
                          content_type=JSON)
docs: Get a list of calculations and report their id, status, calculation_mode,
      is_running, description, and a url where more detailed information
      can be accessed. This is called several times by the Javascript.
  
      Responses are in JSON.