Fix referencing link groups in ad functions

This commit is contained in:
Mark Veidemanis 2023-04-05 17:30:35 +01:00
parent 44b85796fa
commit ae4e5ae964
Signed by: m
GPG Key ID: 5ACFCEED46C0904F
2 changed files with 39 additions and 17 deletions

View File

@ -87,6 +87,14 @@ class LinkGroup(models.Model):
return payees
@property
def platforms(self):
return Platform.objects.filter(link_group=self)
@property
def aggregators(self):
return Aggregator.objects.filter(link_group=self)
class Aggregator(models.Model):
"""

View File

@ -7,19 +7,32 @@ from two_factor.views.mixins import OTPRequiredMixin
from core.clients.platforms.agora import AgoraClient
from core.forms import AdForm
from core.models import Ad
from core.models import Ad, LinkGroup
from core.views.helpers import synchronize_async_helper
def get_linkgroups(user):
return LinkGroup.objects.filter(user=user, enabled=True)
def get_platforms(user):
groups = get_linkgroups(user)
platforms = []
for group in groups:
for platform in group.platforms.all():
platforms.append(platform)
return platforms
class Cheat(LoginRequiredMixin, OTPRequiredMixin, View):
template_name = "mixins/partials/notify.html"
def get(self, request):
ads = Ad.objects.filter(user=request.user, enabled=True)
for ad in ads:
for platform in ad.platforms.all():
run = synchronize_async_helper(AgoraClient(platform))
synchronize_async_helper(run.cheat())
platforms = get_platforms(request.user)
for platform in platforms:
run = synchronize_async_helper(AgoraClient(platform))
synchronize_async_helper(run.cheat())
context = {"class": "success", "message": "Cheat run"}
return render(request, self.template_name, context)
@ -29,11 +42,10 @@ class AdNuke(LoginRequiredMixin, OTPRequiredMixin, View):
template_name = "mixins/partials/notify.html"
def get(self, request):
ads = Ad.objects.filter(user=request.user, enabled=True)
for ad in ads:
for platform in ad.platforms.all():
run = synchronize_async_helper(AgoraClient(platform))
synchronize_async_helper(run.nuke_ads())
platforms = get_platforms(request.user)
for platform in platforms:
run = synchronize_async_helper(AgoraClient(platform))
synchronize_async_helper(run.nuke_ads())
context = {"class": "success", "message": "Ads nuked"}
return render(request, self.template_name, context)
@ -45,9 +57,10 @@ class AdDist(LoginRequiredMixin, OTPRequiredMixin, View):
def get(self, request):
ads = Ad.objects.filter(user=request.user, enabled=True)
for ad in ads:
for platform in ad.platforms.all():
run = synchronize_async_helper(AgoraClient(platform))
synchronize_async_helper(run.dist_countries(ad))
if ad.link_group is not None:
for platform in ad.link_group.platforms.all():
run = synchronize_async_helper(AgoraClient(platform))
synchronize_async_helper(run.dist_countries(ad))
context = {"class": "success", "message": "Ads distributed"}
return render(request, self.template_name, context)
@ -59,9 +72,10 @@ class AdRedist(LoginRequiredMixin, OTPRequiredMixin, View):
def get(self, request):
ads = Ad.objects.filter(user=request.user, enabled=True)
for ad in ads:
for platform in ad.platforms.all():
run = synchronize_async_helper(AgoraClient(platform))
synchronize_async_helper(run.redist_countries(ad))
if ad.link_group is not None:
for platform in ad.link_group.platforms.all():
run = synchronize_async_helper(AgoraClient(platform))
synchronize_async_helper(run.redist_countries(ad))
context = {"class": "success", "message": "Ads updated"}
return render(request, self.template_name, context)