diff --git a/files/models/media.py b/files/models/media.py index 27531527..7f1e0a20 100644 --- a/files/models/media.py +++ b/files/models/media.py @@ -730,15 +730,6 @@ class Media(models.Model): ep["updated_time"] = encoding.update_date return ep - @property - def categories_info(self): - """Property used on serializers""" - - ret = [] - for cat in self.category.all(): - ret.append({"title": cat.title, "url": cat.get_absolute_url(), "is_lms_course": cat.is_lms_course}) - return ret - @property def tags_info(self): """Property used on serializers""" diff --git a/files/serializers.py b/files/serializers.py index 5c574549..f07fd8e8 100644 --- a/files/serializers.py +++ b/files/serializers.py @@ -98,7 +98,27 @@ class MediaSerializer(serializers.ModelSerializer): self.fields['category'].queryset = non_rbac_categories.union(rbac_categories) -class SingleMediaSerializer(serializers.ModelSerializer): +class CategoriesInfoMixin: + categories_info = serializers.SerializerMethodField() + + def get_categories_info(self, obj): + request = self.context.get("request") + user = getattr(request, "user", None) + + if user and user.is_authenticated: + accessible_rbac = set(user.get_rbac_categories_as_member().values_list("pk", flat=True)) + else: + accessible_rbac = set() + + ret = [] + for cat in obj.category.all(): + if cat.is_rbac_category and cat.pk not in accessible_rbac: + continue + ret.append({"title": cat.title, "url": cat.get_absolute_url(), "is_lms_course": cat.is_lms_course}) + return ret + + +class SingleMediaSerializer(CategoriesInfoMixin, serializers.ModelSerializer): user = serializers.ReadOnlyField(source="user.username") url = serializers.SerializerMethodField() is_shared = serializers.SerializerMethodField() @@ -177,7 +197,7 @@ class SingleMediaSerializer(serializers.ModelSerializer): ) -class MediaSearchSerializer(serializers.ModelSerializer): +class MediaSearchSerializer(CategoriesInfoMixin, serializers.ModelSerializer): url = serializers.SerializerMethodField() api_url = serializers.SerializerMethodField() diff --git a/lms-plugins/mediacms-moodle/dist/mediacms-moodle-v1.0.0.zip b/lms-plugins/mediacms-moodle/dist/mediacms-moodle-v1.0.0.zip deleted file mode 100644 index 62a32b78..00000000 Binary files a/lms-plugins/mediacms-moodle/dist/mediacms-moodle-v1.0.0.zip and /dev/null differ