71 lines
1.9 KiB
Python
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
|