From 7b2f8d867ffa8197b25439578c9bcbddb5e66969 Mon Sep 17 00:00:00 2001 From: MagneticNeedle Date: Sun, 15 Dec 2024 22:28:51 +0530 Subject: [PATCH] feat(core:api): add `experience_count` in user api --- bfportal/bfportal/settings/base.py | 2 +- bfportal/core/api/users.py | 2 +- bfportal/core/serializers/users.py | 7 +++++++ docker-compose.yml | 2 -- 4 files changed, 9 insertions(+), 4 deletions(-) diff --git a/bfportal/bfportal/settings/base.py b/bfportal/bfportal/settings/base.py index bec2623..cf0c838 100644 --- a/bfportal/bfportal/settings/base.py +++ b/bfportal/bfportal/settings/base.py @@ -225,7 +225,7 @@ "BACKEND": "wagtail.search.backends.database", } } - +WAGTAILAPI_LIMIT_MAX = None # Base URL to use when referring to full URLs within the Wagtail admin backend - # e.g. in notification emails. Don't include '/admin' or a trailing slash EMAIL_BACKEND = "django.core.mail.backends.dummy.EmailBackend" diff --git a/bfportal/core/api/users.py b/bfportal/core/api/users.py index 1d2bfa7..1f09ce0 100644 --- a/bfportal/core/api/users.py +++ b/bfportal/core/api/users.py @@ -59,7 +59,7 @@ def check_query_parameters(self, queryset): """ Checks if all the parameters are valid, - Overriden here so that we can send custom params in our requests + Override here so that we can send custom params in our requests see `UserFilter` class """ diff --git a/bfportal/core/serializers/users.py b/bfportal/core/serializers/users.py index c38b2ee..651e0a7 100644 --- a/bfportal/core/serializers/users.py +++ b/bfportal/core/serializers/users.py @@ -1,4 +1,5 @@ from django.contrib.auth import get_user_model +from django.contrib.auth.models import User from rest_framework import serializers from ..models.experience import ExperiencePage @@ -23,6 +24,7 @@ class UserModelSerializer(serializers.ModelSerializer): """Serializer for User model.""" social_account = serializers.SerializerMethodField() + experience_count = serializers.SerializerMethodField() class Meta: model = get_user_model() @@ -31,6 +33,7 @@ class Meta: "username", "first_name", "last_name", + "experience_count", "social_account", ] depth = 1 @@ -46,6 +49,10 @@ def get_social_account(self, obj): # no provider internal account return {} + def get_experience_count(self, obj: User): + """Return the count of exp pages a user has created.""" + return len(ExperiencePage.objects.filter(owner_id=obj.id)) + class ProfileSerializer(serializers.ModelSerializer): """Serializer for Profile model.""" diff --git a/docker-compose.yml b/docker-compose.yml index af992fa..fa7e5b3 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,5 +1,3 @@ -version: "3.7" - services: # Dev environment services (on local machine)