horvathmarton / stock-buddy-api

REST API for the Stock Buddy portfolio monitoring platform.
MIT License
0 stars 0 forks source link

Portfolio summary endpoint breaks #53

Closed horvathmarton closed 2 years ago

horvathmarton commented 2 years ago

Expected Behavior

The user can request a specific portfolio and the portfolio details are being sent as a response.

Actual Behavior

The servers run on an error during date comparison.

Steps to Reproduce the Problem

[24/Mar/2022 06:52:31] "GET /stocks/portfolios/summary/?asOf=2022-03-24 HTTP/1.0" 200 1964
[2022-03-24 06:52:33,830+0000] INFO - The user mhorvath has requested 2 portfolio as of 2022-03-24 00:00:00.
[2022-03-24 06:52:33,848+0000] ERROR - Internal Server Error: /stocks/portfolios/2/
Traceback (most recent call last):
  File "/usr/local/lib/python3.10/site-packages/django/core/handlers/exception.py", line 47, in inner
    response = get_response(request)
  File "/usr/local/lib/python3.10/site-packages/django/core/handlers/base.py", line 181, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "/usr/local/lib/python3.10/site-packages/sentry_sdk/integrations/django/views.py", line 67, in sentry_wrapped_callback
    return callback(request, *args, **kwargs)
  File "/usr/local/lib/python3.10/site-packages/django/views/decorators/csrf.py", line 54, in wrapped_view
    return view_func(*args, **kwargs)
  File "/usr/local/lib/python3.10/site-packages/rest_framework/viewsets.py", line 125, in view
    return self.dispatch(request, *args, **kwargs)
  File "/usr/local/lib/python3.10/site-packages/rest_framework/views.py", line 509, in dispatch
    response = self.handle_exception(exc)
  File "/usr/local/lib/python3.10/site-packages/rest_framework/views.py", line 469, in handle_exception
    self.raise_uncaught_exception(exc)
  File "/usr/local/lib/python3.10/site-packages/rest_framework/views.py", line 480, in raise_uncaught_exception
    raise exc
  File "/usr/local/lib/python3.10/site-packages/rest_framework/views.py", line 506, in dispatch
    response = handler(request, *args, **kwargs)
  File "/home/app/apps/stocks/views.py", line 72, in retrieve
    snapshot = self.stocks_service.get_portfolio_snapshot(
  File "/home/app/lib/services/stocks.py", line 26, in get_portfolio_snapshot
    return cls.get_portfolio_snapshot_series(portfolios, [snapshot_date])[
  File "/home/app/lib/services/stocks.py", line 58, in get_portfolio_snapshot_series
    while action.date > snapshot_dates[0]:
TypeError: can't compare datetime.datetime to datetime.date

Specifications