You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

43 lines
1.3 KiB
Python

from decimal import Decimal as D
from django.contrib.auth.mixins import LoginRequiredMixin
from mixins.views import ObjectList
from two_factor.views.mixins import OTPRequiredMixin
from core.exchanges import GenericAPIError
from core.models import Account
from core.util import logs
log = logs.get_logger(__name__)
class Profit(LoginRequiredMixin, OTPRequiredMixin, ObjectList):
list_template = "partials/profit-list.html"
page_title = "Profit by account"
page_subtitle = None
context_object_name_singular = "profit"
context_object_name = "profit"
list_url_name = "profit"
list_url_args = ["type"]
def get_queryset(self, **kwargs):
items = []
# Only get enabled accounts
accounts = Account.objects.filter(user=self.request.user, enabled=True)
for account in accounts:
try:
details = account.client.get_account()
item = {
"account": account,
"pl": D(details["balance"]) - D(account.initial_balance),
"unrealizedPL": D(details["unrealizedPL"]),
"balance": details["balance"],
"currency": details["currency"],
}
items.append(item)
except GenericAPIError:
continue
return items