diff --git a/server/vbv_lernwelt/completion/migrations/0001_initial.py b/server/vbv_lernwelt/completion/migrations/0001_initial.py
index eab576fb..f6e70be8 100644
--- a/server/vbv_lernwelt/completion/migrations/0001_initial.py
+++ b/server/vbv_lernwelt/completion/migrations/0001_initial.py
@@ -1,4 +1,4 @@
-# Generated by Django 3.2.13 on 2022-06-22 16:53
+# Generated by Django 3.2.13 on 2022-07-04 09:58
from django.conf import settings
from django.db import migrations, models
@@ -23,6 +23,7 @@ class Migration(migrations.Migration):
('page_key', models.UUIDField()),
('page_type', models.CharField(blank=True, default='', max_length=255)),
('circle_key', models.UUIDField()),
+ ('learning_path_key', models.UUIDField()),
('completed', models.BooleanField(default=False)),
('json_data', models.JSONField(blank=True, default=dict)),
('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)),
diff --git a/server/vbv_lernwelt/completion/models.py b/server/vbv_lernwelt/completion/models.py
index d46c28bf..5eff0fbc 100644
--- a/server/vbv_lernwelt/completion/models.py
+++ b/server/vbv_lernwelt/completion/models.py
@@ -15,6 +15,7 @@ class CircleCompletion(models.Model):
page_key = models.UUIDField()
page_type = models.CharField(max_length=255, default='', blank=True)
circle_key = models.UUIDField()
+ learning_path_key = models.UUIDField()
completed = models.BooleanField(default=False)
json_data = models.JSONField(default=dict, blank=True)
diff --git a/server/vbv_lernwelt/completion/serializers.py b/server/vbv_lernwelt/completion/serializers.py
index 92d5bef4..4a26ac73 100644
--- a/server/vbv_lernwelt/completion/serializers.py
+++ b/server/vbv_lernwelt/completion/serializers.py
@@ -8,6 +8,6 @@ class CircleCompletionSerializer(serializers.ModelSerializer):
model = CircleCompletion
fields = [
'id', 'created_at', 'updated_at', 'user', 'page_key', 'page_type', 'circle_key',
- 'completed', 'json_data',
+ 'learning_path_key', 'completed', 'json_data',
]
diff --git a/server/vbv_lernwelt/completion/urls.py b/server/vbv_lernwelt/completion/urls.py
index 3530697b..891712bf 100644
--- a/server/vbv_lernwelt/completion/urls.py
+++ b/server/vbv_lernwelt/completion/urls.py
@@ -1,8 +1,10 @@
from django.urls import path
-from vbv_lernwelt.completion.views import request_circle_completion, mark_circle_completion
+from vbv_lernwelt.completion.views import request_circle_completion, mark_circle_completion, \
+ request_learning_path_completion
urlpatterns = [
path(r"circle//", request_circle_completion, name="request_circle_completion"),
+ path(r"learning_path//", request_learning_path_completion, name="request_learning_path_completion"),
path(r"circle/mark/", mark_circle_completion, name="mark_circle_completion"),
]
diff --git a/server/vbv_lernwelt/completion/views.py b/server/vbv_lernwelt/completion/views.py
index c195ebc1..9cb5fba0 100644
--- a/server/vbv_lernwelt/completion/views.py
+++ b/server/vbv_lernwelt/completion/views.py
@@ -5,7 +5,7 @@ from wagtail.models import Page
from vbv_lernwelt.completion.models import CircleCompletion
from vbv_lernwelt.completion.serializers import CircleCompletionSerializer
-from vbv_lernwelt.learnpath.models import Circle
+from vbv_lernwelt.learnpath.models import Circle, LearningPath
from vbv_lernwelt.learnpath.utils import get_wagtail_type
logger = structlog.get_logger(__name__)
@@ -21,6 +21,16 @@ def request_circle_completion(request, circle_key):
return Response(status=200, data=response_data)
+@api_view(['GET'])
+def request_learning_path_completion(request, learning_path_key):
+ response_data = CircleCompletionSerializer(
+ CircleCompletion.objects.filter(user=request.user, learning_path_key=learning_path_key),
+ many=True,
+ ).data
+
+ return Response(status=200, data=response_data)
+
+
@api_view(['POST'])
def mark_circle_completion(request):
page_key = request.data.get('page_key')
@@ -29,11 +39,13 @@ def mark_circle_completion(request):
page = Page.objects.get(translation_key=page_key, locale__language_code='de-CH')
page_type = get_wagtail_type(page.specific)
circle = Circle.objects.ancestor_of(page).first()
+ learning_path = LearningPath.objects.ancestor_of(page).first()
cc, created = CircleCompletion.objects.get_or_create(
user=request.user,
page_key=page_key,
circle_key=circle.translation_key,
+ learning_path_key=learning_path.translation_key,
)
cc.page_type = page_type
cc.completed = completed
diff --git a/server/vbv_lernwelt/learnpath/models.py b/server/vbv_lernwelt/learnpath/models.py
index 04cd7171..67534a3c 100644
--- a/server/vbv_lernwelt/learnpath/models.py
+++ b/server/vbv_lernwelt/learnpath/models.py
@@ -98,16 +98,12 @@ class Circle(Page):
FieldPanel('experts'),
]
- @property
- def learning_sequences(self):
- return self.get_children().filter(content_type__model='learningsequence').values('id', 'title')
-
@classmethod
def get_serializer_class(cls):
return get_it_serializer_class(
cls,
field_names=[
- 'id', 'title', 'slug', 'type', 'translation_key', 'learning_sequences', 'children',
+ 'id', 'title', 'slug', 'type', 'translation_key', 'children',
'description', 'job_situations', 'goals', 'experts',
]
)
diff --git a/server/vbv_lernwelt/learnpath/serializers.py b/server/vbv_lernwelt/learnpath/serializers.py
index 8e868ee3..3aa8d494 100644
--- a/server/vbv_lernwelt/learnpath/serializers.py
+++ b/server/vbv_lernwelt/learnpath/serializers.py
@@ -17,4 +17,4 @@ class LearningPathSerializer(get_it_serializer_class(LearningPath, [])):
class Meta:
model = Circle
- fields = ['id', 'title', 'slug', 'children', 'type']
+ fields = ['id', 'title', 'slug', 'type', 'translation_key', 'children']