From af65433c55c3ec8e5601385fa80e7c7559adbaa2 Mon Sep 17 00:00:00 2001 From: Mark Veidemanis Date: Sat, 11 Mar 2023 18:17:14 +0000 Subject: [PATCH] Fix creating ads with the incorrect provider when not whitelisted --- core/clients/platform.py | 35 +++++++++++++++++------------------ core/models.py | 8 ++++++++ 2 files changed, 25 insertions(+), 18 deletions(-) diff --git a/core/clients/platform.py b/core/clients/platform.py index 4733832..90d34ac 100644 --- a/core/clients/platform.py +++ b/core/clients/platform.py @@ -685,22 +685,21 @@ class LocalPlatformClient(ABC): to_return = [] for asset, countrycode, currency, provider in dist_list: if (asset, countrycode, currency, provider) not in our_ads: - if currency in supported_currencies: - if currency not in account_info: - continue - # Create the actual ad and pass in all the stuff - rtrn = await self.create_ad( - asset, - countrycode, - currency, - provider, - payment_details=account_info[currency], - ad=ad, - ) - # Bail on first error, let's not continue - if rtrn is False: - return False - to_return.append(rtrn) + if currency not in supported_currencies: + continue + # Create the actual ad and pass in all the stuff + rtrn = await self.create_ad( + asset, + countrycode, + currency, + provider, + payment_details=account_info[currency], + ad=ad, + ) + # Bail on first error, let's not continue + if rtrn is False: + return False + to_return.append(rtrn) return to_return async def redist_countries(self, ad): @@ -1141,9 +1140,9 @@ class LocalPlatformClient(ABC): distlist.append([l_currency, l_country]) # Iterate providers like REVOLUT, NATIONAL_BANK - for provider in self.instance.ads_providers: + for provider in ad.providers: # Iterate assets like XMR, BTC - for asset in self.instance.ads_assets: + for asset in ad.assets: # Iterate pairs of currency and country like EUR, GB for currency, countrycode in distlist: if filter_asset: diff --git a/core/models.py b/core/models.py index 0cdf8d9..26fa357 100644 --- a/core/models.py +++ b/core/models.py @@ -246,6 +246,14 @@ class Ad(models.Model): visible = models.BooleanField(default=True) enabled = models.BooleanField(default=True) + @property + def providers(self): + return [x.code for x in self.provider_list.all()] + + @property + def assets(self): + return [x.code for x in self.asset_list.all()] + @classmethod def get_by_id(cls, ad_id, user): return cls.objects.filter(id=ad_id, user=user, enabled=True).first()