code: def to_practice_counts(request):
      
      data = None
      if request.method == "POST":
          data = json.loads(request.body.decode("utf-8"))["filters"]
      if "filters" in request.GET:
          data = load_query_json(request.GET, "filters")
      if data is None or len(data) == 0:
          return render_json(request, {}, template='models_json.html', help_text=to_practice_counts.__doc__)
      language = get_language(request)
      timer('to_practice_counts')
      filter_names, filter_filters = list(zip(*sorted(data.items())))
      reachable_leaves = Item.objects.filter_all_reachable_leaves_many(filter_filters, language)
      response = {
          group_id: {
              'filter': data[group_id],
              'number_of_items': len(items),
          }
          for group_id, items in zip(filter_names, reachable_leaves)
      }
      LOGGER.debug("to_practice_counts - getting items in groups took %s seconds", (timer('to_practice_counts')))
      return render_json(request, response, template='models_json.html', help_text=to_practice_counts.__doc__)
docs: Get number of items available to practice.
  
      filters:                -- use this or body
        json as in BODY
      language:
        language of the items
  
      BODY
        json in following format:
        {
          "#identifier": []         -- custom identifier (str) and filter
          ...
        }