diff --git a/openedx/features/edly/api/serializers.py b/openedx/features/edly/api/serializers.py index a3dbf28d4c45..2623ea4b4a83 100644 --- a/openedx/features/edly/api/serializers.py +++ b/openedx/features/edly/api/serializers.py @@ -6,6 +6,8 @@ from rest_framework import serializers from openedx.features.edly.utils import get_marketing_link +from openedx.features.edly.models import EdlyMultiSiteAccess, EdlySubOrganization +from django.contrib.auth import get_user_model class UserSiteSerializer(serializers.Serializer): @@ -49,3 +51,25 @@ def get_mobile_enabled(self, obj): # pylint: disable=unused-argument Returns mobile_enabled flag """ return self.context['site_configuration'].get('MOBILE_ENABLED', False) + + +class UserSerializer(serializers.ModelSerializer): + class Meta: + model = get_user_model() + fields = '__all__' + + +class EdlySubOrganizationSerializer(serializers.ModelSerializer): + class Meta: + model = EdlySubOrganization + fields = '__all__' + + +class EdlyMultisiteAccessSerializer(serializers.ModelSerializer): + + user = UserSerializer() + sub_org = EdlySubOrganizationSerializer() + + class Meta: + model = EdlyMultiSiteAccess + fields = ['user', 'sub_org'] diff --git a/openedx/features/edly/api/v1/urls.py b/openedx/features/edly/api/v1/urls.py index c7075bf4ddf7..f774c6410d89 100644 --- a/openedx/features/edly/api/v1/urls.py +++ b/openedx/features/edly/api/v1/urls.py @@ -2,9 +2,11 @@ from openedx.features.edly.api.v1.views.course_enrollments import EdlyCourseEnrollmentViewSet from openedx.features.edly.api.v1.views.user_sites import UserSitesViewSet +from openedx.features.edly.api.v1.views.edly_multisite_access import EdlyMultisiteAccessViewSet router = routers.SimpleRouter() router.register(r'user_sites', UserSitesViewSet, base_name='user_sites') +router.register(r'edly_multisite_access', EdlyMultisiteAccessViewSet , base_name='edly_multisite_access') router.register( r'course_enrollment', EdlyCourseEnrollmentViewSet, diff --git a/openedx/features/edly/api/v1/views/edly_multisite_access.py b/openedx/features/edly/api/v1/views/edly_multisite_access.py new file mode 100644 index 000000000000..4856ca8d3983 --- /dev/null +++ b/openedx/features/edly/api/v1/views/edly_multisite_access.py @@ -0,0 +1,38 @@ +""" +Views for user sites API +""" +from rest_framework import viewsets +from rest_framework.permissions import IsAuthenticated +from rest_framework.response import Response + +from lms.djangoapps.mobile_api.decorators import mobile_view +from openedx.features.edly.models import EdlyMultiSiteAccess +from openedx.features.edly.api.serializers import EdlyMultisiteAccessSerializer + +@mobile_view() +class EdlyMultisiteAccessViewSet(viewsets.ViewSet): + """ + **Use Case** + + Get information about the organizations associated with a user. + + **Example Request** + + GET /api/v1/courses/multisite_access/ + + **Response Values** + + If the request is successful, the request returns an HTTP 200 "OK" response. + + The HTTP 200 response has the following values. + """ + permission_classes = (IsAuthenticated,) + + def list(self, request, *args, **kwargs): + """ + Get information about the organizations associated with a user. + """ + serializer = EdlyMultisiteAccessSerializer( + EdlyMultiSiteAccess.objects.filter(user=request.user), many=True + ) + return Response(serializer.data)