def get_context_data(self, **kwargs): context = super().get_context_data() # context['rates'] = Rate.objects.filter(source=mch.SR_PRIVAT, currency=mch.CURR_USD).last() # cache_key_base = 'latest-rates-{}-{}' rates = [] for bank in mch.SOURCE_CHOICES: source = bank[0] for curr in mch.CURRENCY_CHOICES: currency = curr[0] cache_key = generate_rate_cache_key(source, currency) rate = cache.get(cache_key) if rate is None: rate = Rate.objects.filter( source=source, currency=currency).order_by('created').last() if rate: rate_dict = { 'currency': rate.currency, 'source': rate.source, 'sale': rate.sale, 'buy': rate.sale, 'created': rate.created } rates.append(rate_dict) cache.set(cache_key, rate_dict, CACHE_RATES_TIMEOUT) else: rates.append(rate) context['rates'] = rates return context
def save(self, *args, **kwargs): if not self.id: cache_key = generate_rate_cache_key(self.source, self.currency) cache.delete(cache_key) super().save(*args, **kwargs)
def get_context_data(self, *args, **kwargs): context = super().get_context_data(*args, **kwargs) rates = [] for bank in mch.SOURCE_CHOICES: source = bank[0] for curr in mch.CURRENCY_CHOICES: currency = curr[0] cache_key = generate_rate_cache_key(source, currency) rate = cache.get(cache_key) if rate is None: rate = Rate.objects.filter( source=source, currency=currency).order_by('created').last() if rate: rate_dict = { 'currency': rate.currency, 'source': rate.source, 'sale': rate.sale, 'buy': rate.buy, 'created': rate.created, } rates.append(rate_dict) cache.set(cache_key, rate_dict, 60 * 15) else: rates.append(rate) context["rates"] = rates return context
def save(self, *args, **kwargs): from django.core.cache import cache if not self.id: from currency.utils import generate_rate_cache_key cache_key = generate_rate_cache_key(self.source, self.currency) cache.delete(cache_key) super().save(*args, **kwargs)
def get_context_data(self, **kwargs): from currency import model_choices as mch from django.core.cache import cache context = super().get_context_data(**kwargs) # rates = { # 'privatBank': [Rate.objects.filter(source=mch.SR_PRIVAT, currency=mch.CURR_USD).last(), # Rate.objects.filter(source=mch.SR_PRIVAT, currency=mch.CURR_EUR).last()], # 'MonoBank': [Rate.objects.filter(source=mch.SR_MONO, currency=mch.CURR_USD).last(), # Rate.objects.filter(source=mch.SR_MONO, currency=mch.CURR_EUR).last()] # } rates = [] for bank in mch.SOURCE_CHOICES: source = bank[0] for curr in mch.CURRENCY_CHOICES: currency = curr[0] from currency.utils import generate_rate_cache_key cache_key = generate_rate_cache_key(source, currency) rate = cache.get(cache_key) if rate is None: rate = Rate.objects.filter( source=source, currency=currency).order_by('created').last() if rate: rate_dict = { 'currency': rate.currency, 'source': rate.source, 'sale': rate.sale, 'buy': rate.buy, 'created': rate.created, } rates.append(rate_dict) cache.set(cache_key, rate_dict, 60 * 15) # 15 minutes # cache.set(cache_key, rate_dict, 5) # 5 seconds else: rates.append(rate) context['rates'] = rates # Rate.objects.filter(source=mch.SR_PRIVAT, currency=mch.CURR_USD).order_by('-created')[0] return context