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.

71 lines
1.9 KiB
Python

from django.contrib.auth.mixins import LoginRequiredMixin
from django.http import HttpResponse
from django.shortcuts import render
from django.urls import reverse
from django.views import View
from mixins.views import ( # ObjectRead,
ObjectCreate,
ObjectDelete,
ObjectList,
ObjectUpdate,
)
from two_factor.views.mixins import OTPRequiredMixin
from core.clients.platforms.agora import AgoraClient
from core.forms import PlatformForm
from core.models import Platform
from core.util import logs
from core.views.helpers import synchronize_async_helper
log = logs.get_logger(__name__)
class PlatformTrades(LoginRequiredMixin, OTPRequiredMixin, ObjectList):
list_template = "partials/platform-trades.html"
page_title = "List of trades"
list_url_name = "trades"
list_url_args = ["type"]
context_object_name_singular = "trade"
context_object_name = "trades"
def get_queryset(self, **kwargs):
platforms = Platform.get_for_user(self.request.user)
total_trades = {}
for platform in platforms:
run = synchronize_async_helper(AgoraClient(platform))
dash = synchronize_async_helper(run.wrap_dashboard())
total_trades[platform.name] = dash
return total_trades
class PlatformList(LoginRequiredMixin, OTPRequiredMixin, ObjectList):
list_template = "partials/platform-list.html"
model = Platform
page_title = "List of platform connections"
list_url_name = "platforms"
list_url_args = ["type"]
submit_url_name = "platform_create"
class PlatformCreate(LoginRequiredMixin, OTPRequiredMixin, ObjectCreate):
model = Platform
form_class = PlatformForm
submit_url_name = "platform_create"
class PlatformUpdate(LoginRequiredMixin, OTPRequiredMixin, ObjectUpdate):
model = Platform
form_class = PlatformForm
submit_url_name = "platform_update"
class PlatformDelete(LoginRequiredMixin, OTPRequiredMixin, ObjectDelete):
model = Platform