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.

67 lines
1.8 KiB
Python

from django.contrib.auth.mixins import LoginRequiredMixin
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