docs: def custom_config(request):
      """
      Save user-specific configuration property.
  
      POST parameters (JSON keys):
          app_name: application name for which the configuration property is
              valid (e.g., proso_models)
          key: name of the property (e.g., predictive_model.class)
          value: value of the property (number, string, boolean, ...,
              e.g, proso.models.prediction.PriorCurrentPredictiveModel)
          condition_key (optional): name of the condition which is used to filter
              the property (e.g., practice_filter)
          condition_value (optional): value for the condition filtering the
              property (e.g., [["context/world"],["category/state"]])
      """
      if request.method == 'POST':
          config_dict = json_body(request.body.decode('utf-8'))
          CustomConfig.objects.try_create(
              config_dict['app_name'],
              config_dict['key'],
              config_dict['value'],
              request.user.id,
              config_dict.get('condition_key') if config_dict.get('condition_key') else None,
              urllib.parse.unquote(config_dict.get('condition_value')) if config_dict.get('condition_value') else None
          )
          return config(request)
      else:
          return render_json(request, {}, template='common_custom_config.html', help_text=custom_config.__doc__)