Implement more detailed link group withdrawal simulations

This commit is contained in:
2023-05-05 14:39:02 +01:00
parent 35607898f0
commit 0be1b98072
7 changed files with 157 additions and 47 deletions

View File

@@ -1,6 +1,8 @@
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 (
ObjectCreate,
ObjectDelete,
@@ -15,6 +17,7 @@ from core.clients.aggregators.nordigen import NordigenClient
from core.clients.platforms.agora import AgoraClient
from core.forms import LinkGroupForm
from core.lib.money import Money
from core.management.commands.scheduling import withdrawal_job
from core.models import (
Aggregator,
LinkGroup,
@@ -46,7 +49,9 @@ class LinkGroupInfo(LoginRequiredMixin, OTPRequiredMixin, ObjectRead):
self.extra_buttons = [
{
"url": "#",
"url": reverse(
"linkgroup_withdraw", kwargs={"pk": self.object.id, "type": "modal"}
),
"action": "withdraw",
"method": "get",
"label": "Withdraw profit",
@@ -205,19 +210,17 @@ class LinkGroupSimulation(LoginRequiredMixin, OTPRequiredMixin, ObjectRead):
return HttpResponse(status=status.HTTP_404_NOT_FOUND)
money = Money()
checks = synchronize_async_helper(
money.check_all(
user=self.request.user, nordigen=NordigenClient, agora=AgoraClient
)
money.check_all(link_group=pk, nordigen=NordigenClient, agora=AgoraClient)
)
print("CHECKS", checks)
aggregators = Aggregator.objects.filter(
user=self.request.user,
link_group=self.object,
link_group=linkgroup,
)
platforms = Platform.objects.filter(
user=self.request.user,
link_group=self.object,
link_group=linkgroup,
)
requisitions = Requisition.objects.filter(
user=self.request.user,
@@ -234,4 +237,24 @@ class LinkGroupSimulation(LoginRequiredMixin, OTPRequiredMixin, ObjectRead):
print("PAY LIST", pay_list)
collapsed = money.collapse_pay_list(pay_list)
print("COLLAPSED", collapsed)
return collapsed
self.extra_context = {"collapsed": collapsed}
self.extra_context["pay_list"] = pay_list
self.extra_context["total_profit"] = checks["total_profit"]
return pay_list
class LinkGroupWithdraw(LoginRequiredMixin, OTPRequiredMixin, View):
template_name = "mixins/partials/notify.html"
def get(self, request, **kwargs):
pk = self.kwargs.get("pk")
linkgroup = LinkGroup.objects.filter(
user=self.request.user,
id=pk,
).first()
if not linkgroup:
return HttpResponse(status=status.HTTP_404_NOT_FOUND)
run = synchronize_async_helper(withdrawal_job(linkgroup))
print("RUN", run)
context = {"class": "success", "message": "Withdrawal run"}
return render(request, self.template_name, context)