Refactor
This commit is contained in:
parent
5425c1b22c
commit
79c0fb8b11
|
|
@ -16,7 +16,7 @@ def main():
|
|||
)
|
||||
|
||||
response = client.get(
|
||||
'http://localhost:8000/api/learnpath/page/unit-test-lernpfad/',
|
||||
'http://localhost:8000/api/course/page/unit-test-lernpfad/',
|
||||
)
|
||||
print(response.status_code)
|
||||
print(response.json())
|
||||
|
|
|
|||
|
|
@ -19,7 +19,7 @@ export const useLearningPathStore = defineStore({
|
|||
if (this.learningPath && !reload) {
|
||||
return this.learningPath;
|
||||
}
|
||||
const learningPathData = await itGet(`/api/learnpath/page/${slug}/`);
|
||||
const learningPathData = await itGet(`/api/course/page/${slug}/`);
|
||||
const completionData = await itGet(`/api/completion/learning_path/${learningPathData.translation_key}/`);
|
||||
|
||||
if (!learningPathData) {
|
||||
|
|
|
|||
|
|
@ -515,7 +515,7 @@ if "django_redis.cache.RedisCache" in env("IT_DJANGO_CACHE_BACKEND", default="")
|
|||
},
|
||||
}
|
||||
|
||||
CACHES["learning_path_cache"] = {
|
||||
CACHES["api_page_cache"] = {
|
||||
"BACKEND": "django.core.cache.backends.db.DatabaseCache",
|
||||
"LOCATION": "django_cache_learning_path",
|
||||
}
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@ from vbv_lernwelt.core.views import (
|
|||
rate_limit_exceeded_view,
|
||||
permission_denied_view,
|
||||
check_rate_limit, cypress_reset_view, vue_home, vue_login, me_user_view, vue_logout, generate_web_component_icons, )
|
||||
from vbv_lernwelt.learnpath.views import page_api_view
|
||||
from vbv_lernwelt.course.views import page_api_view
|
||||
|
||||
|
||||
def raise_example_error(request):
|
||||
|
|
@ -47,8 +47,8 @@ urlpatterns = [
|
|||
# core
|
||||
re_path(r"server/core/icons/$", generate_web_component_icons, name="generate_web_component_icons"),
|
||||
|
||||
# learnpath
|
||||
path(r"api/learnpath/page/<slug:slug>/", page_api_view, name="page_api_view"),
|
||||
# course
|
||||
path(r"api/course/page/<slug:slug>/", page_api_view, name="page_api_view"),
|
||||
|
||||
# completion
|
||||
path(r"api/completion/circle/<uuid:circle_key>/", request_circle_completion, name="request_circle_completion"),
|
||||
|
|
|
|||
|
|
@ -4,3 +4,10 @@ from django.apps import AppConfig
|
|||
class CourseConfig(AppConfig):
|
||||
default_auto_field = 'django.db.models.BigAutoField'
|
||||
name = 'vbv_lernwelt.course'
|
||||
|
||||
def ready(self):
|
||||
try:
|
||||
# pylint: disable=unused-import,import-outside-toplevel
|
||||
import vbv_lernwelt.course.signals # noqa F401
|
||||
except ImportError:
|
||||
pass
|
||||
|
|
|
|||
|
|
@ -0,0 +1,16 @@
|
|||
import structlog
|
||||
from django.core.cache import caches
|
||||
from django.db.models.signals import post_delete, post_save
|
||||
from wagtail.models import Page
|
||||
|
||||
logger = structlog.get_logger(__name__)
|
||||
|
||||
|
||||
def invalidate_api_page_cache(sender, **kwargs):
|
||||
logger.debug('invalidate api_page_cache', label='api_page_cache')
|
||||
caches['api_page_cache'].clear()
|
||||
|
||||
|
||||
for subclass in Page.__subclasses__():
|
||||
post_save.connect(invalidate_api_page_cache, subclass)
|
||||
post_delete.connect(invalidate_api_page_cache, subclass)
|
||||
|
|
@ -1,3 +1,19 @@
|
|||
from django.shortcuts import render
|
||||
import structlog
|
||||
from django.views.decorators.cache import cache_page
|
||||
from rest_framework.decorators import api_view
|
||||
from rest_framework.response import Response
|
||||
from wagtail.models import Page
|
||||
|
||||
# Create your views here.
|
||||
logger = structlog.get_logger(__name__)
|
||||
|
||||
|
||||
@api_view(['GET'])
|
||||
@cache_page(60 * 60 * 8, cache="api_page_cache")
|
||||
def page_api_view(request, slug):
|
||||
try:
|
||||
page = Page.objects.get(slug=slug, locale__language_code='de-CH')
|
||||
serializer = page.specific.get_serializer_class()(page.specific)
|
||||
return Response(serializer.data)
|
||||
except Exception as e:
|
||||
logger.error(e)
|
||||
return Response({"error": str(e)}, status=404)
|
||||
|
|
|
|||
|
|
@ -1,16 +0,0 @@
|
|||
import structlog
|
||||
from django.core.cache import caches
|
||||
from django.db.models.signals import post_delete, post_save
|
||||
from wagtail.models import Page
|
||||
|
||||
logger = structlog.get_logger(__name__)
|
||||
|
||||
|
||||
def invalidate_learning_path_cache(sender, **kwargs):
|
||||
logger.debug('invalidate learning_path_cache', label='learning_path_cache')
|
||||
caches['learning_path_cache'].clear()
|
||||
|
||||
|
||||
for subclass in Page.__subclasses__():
|
||||
post_save.connect(invalidate_learning_path_cache, subclass)
|
||||
post_delete.connect(invalidate_learning_path_cache, subclass)
|
||||
|
|
@ -18,7 +18,7 @@ class TestRetrieveLearingPathContents(APITestCase):
|
|||
|
||||
def test_get_learnpathPage(self):
|
||||
learning_path = LearningPath.objects.get(slug='unit-test-lernpfad')
|
||||
response = self.client.get('/api/learnpath/page/unit-test-lernpfad/')
|
||||
response = self.client.get('/api/course/page/unit-test-lernpfad/')
|
||||
print(response)
|
||||
self.assertEqual(response.status_code, 200)
|
||||
data = response.json()
|
||||
|
|
|
|||
|
|
@ -1,23 +0,0 @@
|
|||
# Create your views here.
|
||||
|
||||
import structlog
|
||||
from django.views.decorators.cache import cache_page
|
||||
from rest_framework.decorators import api_view
|
||||
from rest_framework.response import Response
|
||||
from wagtail.models import Page
|
||||
|
||||
logger = structlog.get_logger(__name__)
|
||||
|
||||
|
||||
@api_view(['GET'])
|
||||
@cache_page(60 * 60 * 8, cache="learning_path_cache")
|
||||
def page_api_view(request, slug):
|
||||
try:
|
||||
page = Page.objects.get(slug=slug, locale__language_code='de-CH')
|
||||
serializer = page.specific.get_serializer_class()(page.specific)
|
||||
return Response(serializer.data)
|
||||
except Exception as e:
|
||||
logger.error(e)
|
||||
return Response({"error": str(e)}, status=404)
|
||||
|
||||
|
||||
|
|
@ -1,3 +0,0 @@
|
|||
from django.shortcuts import render
|
||||
|
||||
# Create your views here.
|
||||
Loading…
Reference in New Issue