code: def holtWinters(request):
      
      #Parse arguments
      smoothingFactor = float(request.POST.get('smoothingFactor', 0.2))
      trendSmoothingFactor = float(request.POST.get('trendSmoothingFactor', 0.3))
      seasonSmoothingFactor = float(request.POST.get('seasonSmoothingFactor', 0.4))
      seasonLength = int(request.POST.get('seasonLength', 6))
      valuesToForecast = int(request.POST.get('valuesToForecast', 0))
      data = json.loads(request.POST.get('data', []))
  
      #perform smoothing
      hwm = HoltWintersMethod(smoothingFactor = smoothingFactor,
                              trendSmoothingFactor = trendSmoothingFactor,
                              seasonSmoothingFactor =  seasonSmoothingFactor,
                              seasonLength = seasonLength,
                              valuesToForecast = valuesToForecast)
      original = TimeSeries.from_twodim_list(data)
      original.set_timeformat("%d.%m")
      smoothed = hwm.execute(original)
      smoothed.set_timeformat("%d.%m")
  
      error = SMAPE()
      error.initialize(original, smoothed)
  
      #process the result
      result = {  'original': original,
                  'smoothed': smoothed,
                  'error': round(error.get_error(), 3)
              }
      return itty.Response(json.dumps(result, cls=PycastEncoder), content_type='application/json')
docs: Performs Holt Winters Smoothing on the given post data.
      Expects the following values set in the post of the request:
          smoothingFactor - float
          trendSmoothingFactor - float
          seasonSmoothingFactor - float
          seasonLength - integer
          valuesToForecast - integer
          data - two dimensional array of [timestamp, value]