diff --git a/apps/establishment/management/commands/add_establishment_currency.py b/apps/establishment/management/commands/add_establishment_currency.py index 5f24d473..d43ae41f 100644 --- a/apps/establishment/management/commands/add_establishment_currency.py +++ b/apps/establishment/management/commands/add_establishment_currency.py @@ -2,6 +2,7 @@ from django.core.management.base import BaseCommand import requests from establishment.models import Establishment from main.models import Currency +from location.models import Country class Command(BaseCommand): @@ -10,35 +11,29 @@ class Command(BaseCommand): def handle(self, *args, **kwargs): count = 0 - queryset = list(Establishment.objects.filter(address__city__country__isnull=False)) url = 'https://restcountries.eu/rest/v2/name/{country}' - for est in queryset: - if not est.currency: - try: - country = est.address.city.country.name_translated - resp = requests.get(url=url.format(country=country)) - except requests.exceptions.Timeout: - continue - except Establishment.DoesNotExist: - continue - else: - if resp.status_code == requests.codes.ok: - country_list = resp.json() - if isinstance(country_list, list): - currency_dict = country_list[0].get("currency") - if currency_dict: - name = currency_dict.get("name") - if name: - currency, created = Currency.objects.get_or_create( - slug=currency_dict.get("name").lower(), - ) - if created: - currency.name = {"en-GB": name}, - currency.sign = currency_dict.get("symbol"), - currency.save() - est.currency = currency - count += 1 - Establishment.objects.bulk_update(queryset, ['currency']) + countries = Country.objects.all() + for country in countries: + + country_name = country.name_translated + resp = requests.get(url=url.format(country=country_name)) + if resp.status_code == requests.codes.ok: + country_list = resp.json() + if isinstance(country_list, list): + currency_dict = country_list[0].get("currency") + if currency_dict: + name = currency_dict.get("name") + if name: + currency, created = Currency.objects.get_or_create( + slug=currency_dict.get("name").lower(), + ) + if created: + currency.name = {"en-GB": name}, + currency.sign = currency_dict.get("symbol"), + currency.save() + establishments = Establishment.objects.filter(address__city__country=country) + establishments.update(currency=currency) + count += 1 self.stdout.write(self.style.WARNING(f'Created/updated {count} objects.'))