From 66bfb4bea121882cf4cb1c10b7c27deafdff8afd Mon Sep 17 00:00:00 2001 From: Jillian Vogel Date: Wed, 29 Jan 2025 08:53:47 +1030 Subject: [PATCH 1/3] fix: errors during swagger api-docs generation * ObjectTag.name is no longer a field, using export_id instead * KeyError: 'pk' --- openedx_tagging/core/tagging/rest_api/v1/serializers.py | 3 +-- openedx_tagging/core/tagging/rest_api/v1/views.py | 4 ++-- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/openedx_tagging/core/tagging/rest_api/v1/serializers.py b/openedx_tagging/core/tagging/rest_api/v1/serializers.py index 9214453b..46f614f3 100644 --- a/openedx_tagging/core/tagging/rest_api/v1/serializers.py +++ b/openedx_tagging/core/tagging/rest_api/v1/serializers.py @@ -157,8 +157,7 @@ class ObjectTagSerializer(ObjectTagMinimalSerializer): class Meta: model = ObjectTag fields = ObjectTagMinimalSerializer.Meta.fields + [ - # The taxonomy name - "name", + "export_id", "taxonomy_id", # If the Tag or Taxonomy has been deleted, this ObjectTag shouldn't be shown to users. "is_deleted", diff --git a/openedx_tagging/core/tagging/rest_api/v1/views.py b/openedx_tagging/core/tagging/rest_api/v1/views.py index 9fe44c66..dd73f433 100644 --- a/openedx_tagging/core/tagging/rest_api/v1/views.py +++ b/openedx_tagging/core/tagging/rest_api/v1/views.py @@ -782,8 +782,8 @@ def get_taxonomy(self) -> Taxonomy: The current taxonomy is cached in the view. """ if not self._taxonomy: - taxonomy_id = int(self.kwargs["pk"]) - taxonomy = get_taxonomy(taxonomy_id) + taxonomy_id = self.kwargs.get("pk") + taxonomy = get_taxonomy(int(taxonomy_id)) if taxonomy_id else None if not taxonomy: raise Http404("Taxonomy not found") self.check_object_permissions(self.request, taxonomy) From 95c475c4c1a0c7b008048cf3f63ac0799026157b Mon Sep 17 00:00:00 2001 From: Jillian Vogel Date: Wed, 29 Jan 2025 10:34:46 +1030 Subject: [PATCH 2/3] chore: bumps package version --- openedx_learning/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openedx_learning/__init__.py b/openedx_learning/__init__.py index 68f4482f..8c8f8f0a 100644 --- a/openedx_learning/__init__.py +++ b/openedx_learning/__init__.py @@ -2,4 +2,4 @@ Open edX Learning ("Learning Core"). """ -__version__ = "0.18.1" +__version__ = "0.18.2" From 37928e02786d4f7272984750fd38354fc9aefdde Mon Sep 17 00:00:00 2001 From: Navin Karkera Date: Wed, 29 Jan 2025 12:42:30 +0530 Subject: [PATCH 3/3] fix: swagger docs missing queryset issue --- openedx_tagging/core/tagging/rest_api/v1/views.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/openedx_tagging/core/tagging/rest_api/v1/views.py b/openedx_tagging/core/tagging/rest_api/v1/views.py index dd73f433..97761286 100644 --- a/openedx_tagging/core/tagging/rest_api/v1/views.py +++ b/openedx_tagging/core/tagging/rest_api/v1/views.py @@ -799,6 +799,9 @@ def get_serializer_context(self): context['request'] = self.request serializer = self.serializer_class(self, context=context) + if getattr(self, 'swagger_fake_view', False): + # queryset just for schema generation metadata + return context # Instead of checking permissions for each TagData instance, we just check them once for the whole taxonomy # (since that's currently how our rules work). This might change if Tag-specific permissions are needed. taxonomy = self.get_taxonomy() @@ -814,6 +817,9 @@ def get_queryset(self) -> TagDataQuerySet: """ Builds and returns the queryset to be paginated. """ + if getattr(self, 'swagger_fake_view', False): + # queryset just for schema generation metadata + return Taxonomy.objects.none() # type: ignore[return-value] taxonomy = self.get_taxonomy() parent_tag_value = self.request.query_params.get("parent_tag", None) include_counts = "include_counts" in self.request.query_params