From 98ced15064d246150e94782f38e000cee41bb5b9 Mon Sep 17 00:00:00 2001
From: Jarmil <jarmil.halamicek@seznam.cz>
Date: Wed, 6 Jan 2021 10:50:51 +0100
Subject: [PATCH] Cacheovani dotazu na iapi predelano z requests-cache na
 django cache

---
 .isort.cfg            |  2 +-
 requirements/base.in  |  1 -
 requirements/base.txt |  3 +--
 shared/models.py      | 20 ++++++++++----------
 4 files changed, 12 insertions(+), 14 deletions(-)

diff --git a/.isort.cfg b/.isort.cfg
index 501b4b49..6c8f12c9 100644
--- a/.isort.cfg
+++ b/.isort.cfg
@@ -4,4 +4,4 @@ line_length = 88
 multi_line_output = 3
 default_section = "THIRDPARTY"
 include_trailing_comma = true
-known_third_party = arrow,django,environ,faker,ics,markdown,modelcluster,nbconvert,pirates,pytest,pytz,requests,requests_cache,sentry_sdk,snapshottest,taggit,traitlets,wagtail,wagtailmetadata
+known_third_party = arrow,django,environ,faker,ics,markdown,modelcluster,nbconvert,pirates,pytest,pytz,requests,sentry_sdk,snapshottest,taggit,traitlets,wagtail,wagtailmetadata
diff --git a/requirements/base.in b/requirements/base.in
index 7819bd18..37925a58 100644
--- a/requirements/base.in
+++ b/requirements/base.in
@@ -9,7 +9,6 @@ pirates<=0.4
 whitenoise
 opencv-python
 requests
-requests-cache
 ics
 arrow
 sentry-sdk
diff --git a/requirements/base.txt b/requirements/base.txt
index f87db878..3ca96d79 100644
--- a/requirements/base.txt
+++ b/requirements/base.txt
@@ -69,8 +69,7 @@ python-ldap==3.3.1        # via pirates
 pytz==2020.4              # via django, django-modelcluster, l18n
 pyzmq==19.0.2             # via jupyter-client
 redis==3.5.3              # via django-redis
-requests-cache==0.5.2     # via -r base.in
-requests==2.24.0          # via -r base.in, mozilla-django-oidc, requests-cache, wagtail
+requests==2.24.0          # via -r base.in, mozilla-django-oidc, wagtail
 sentry-sdk==0.19.2        # via -r base.in
 six==1.15.0               # via bleach, cryptography, html5lib, ics, josepy, jsonschema, l18n, mozilla-django-oidc, packaging, pyopenssl, python-dateutil
 soupsieve==2.0.1          # via beautifulsoup4
diff --git a/shared/models.py b/shared/models.py
index e7c67d74..07013d90 100644
--- a/shared/models.py
+++ b/shared/models.py
@@ -2,7 +2,7 @@ import datetime
 import random
 
 import requests
-import requests_cache
+from django.core.cache import cache
 from django.core.validators import MaxValueValidator, MinValueValidator
 from django.db import models
 from modelcluster.contrib.taggit import ClusterTaggableManager
@@ -14,11 +14,6 @@ from wagtail.core.models import Page
 from wagtail.images.edit_handlers import ImageChooserPanel
 from wagtailmetadata.models import MetadataPageMixin
 
-# cacheovani requestu na piratska api, ttl 1 hodina
-requests_cache.install_cache(
-    cache_name="shared_models", backend="memory", expire_after=3600
-)
-
 
 class SharedSubpageMixin:
     """Must be used in class definition before MetadataPageMixin!"""
@@ -116,10 +111,15 @@ class PersonPage(SharedSubpageMixin, MetadataPageMixin, Page):
     ]
 
     def _iapi(self):
-        """ Vrati data o osobe z piratskeho IAPI jako json. Cached via requests_cache """
-        return requests.get(
-            "https://iapi.pirati.cz/v1/user?username=%s" % self.username
-        ).json()
+        """ Vrati data o osobe z piratskeho IAPI jako json. Cached via django cache"""
+        key = f"profile_{self.username}"
+        profile = cache.get(key)
+        if profile is None:
+            profile = requests.get(
+                f"https://iapi.pirati.cz/v1/user?username={self.username}"
+            ).json()
+            cache.set(key, profile, 3600)
+        return profile
 
     @property
     def name(self):
-- 
GitLab