コード例 #1
0
    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
コード例 #2
0
    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)
コード例 #3
0
ファイル: views.py プロジェクト: qmzrjf/currency_exchange_new
    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
コード例 #4
0
    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)
コード例 #5
0
    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