diff --git a/api/urls.py b/api/urls.py index 6c12ad3..5a4356b 100644 --- a/api/urls.py +++ b/api/urls.py @@ -14,6 +14,7 @@ router.register(r'logs', LogViewSet) router.register(r'usersapi', UserViewSet) router.register(r'users', views.LoginViewset) router.register(r'subjects', views.SubjectViewset) +router.register(r'participants', views.ParticipantsViewset) urlpatterns = [ #API REST diff --git a/api/views.py b/api/views.py index a56b0eb..1d13de0 100644 --- a/api/views.py +++ b/api/views.py @@ -2,11 +2,14 @@ import requests, json from django.shortcuts import get_object_or_404, reverse from django.contrib.auth import authenticate from django.views.decorators.csrf import csrf_exempt + from rest_framework import viewsets from rest_framework.response import Response from rest_framework.decorators import detail_route, list_route from rest_framework.permissions import IsAuthenticated, IsAuthenticatedOrReadOnly +from django.db.models import Q + from security.models import Security from subjects.serializers import SubjectSerializer @@ -139,4 +142,42 @@ class SubjectViewset(viewsets.ReadOnlyModelViewSet): response = json.dumps(sub_info) + return HttpResponse(response) + +class ParticipantsViewset(viewsets.ReadOnlyModelViewSet): + queryset = User.objects.all() + permissions_classes = (IsAuthenticated, ) + + @csrf_exempt + @list_route(methods = ['POST'], permissions_classes = [IsAuthenticated]) + def get_participants(self, request): + username = request.data['email'] + subject_slug = request.data['subject_slug'] + + participants = None + + response = "" + + if not subject_slug == "": + participants = User.objects.filter(Q(is_staff = True) | Q(subject_student__slug = subject_slug) | Q(professors__slug = subject_slug) | Q(coordinators__subject_category__slug = subject_slug)).exclude(email = username).distinct() + + serializer = UserSerializer(participants, many = True) + + json_r = json.dumps(serializer.data) + json_r = json.loads(json_r) + + info = {} + + info["data"] = {} + info["data"]["participants"] = json_r + + info["message"] = "" + info["type"] = "" + info["title"] = "" + info["success"] = True + info["number"] = 1 + info['extra'] = 0 + + response = json.dumps(info) + return HttpResponse(response) \ No newline at end of file diff --git a/subjects/serializers.py b/subjects/serializers.py index 5ecdf54..4e80c9f 100644 --- a/subjects/serializers.py +++ b/subjects/serializers.py @@ -26,8 +26,7 @@ class TagSerializer(serializers.ModelSerializer): validators = [] class SubjectSerializer(serializers.ModelSerializer): - participants = UserSerializer(many = True, source = 'get_participants') - + class Meta: model = Subject - fields = ["name", "slug", "visible", "participants"] \ No newline at end of file + fields = ["name", "slug", "visible"] \ No newline at end of file diff --git a/users/serializers.py b/users/serializers.py index 932f99a..6e0c928 100644 --- a/users/serializers.py +++ b/users/serializers.py @@ -60,5 +60,5 @@ class UserBackupSerializer(serializers.ModelSerializer): class UserSerializer(serializers.ModelSerializer): class Meta: model = User - fields = ('username','email','image','last_update','date_created','last_name','social_name', + fields = ('username','email','image_url','last_update','date_created','last_name','social_name', 'is_staff','is_active','description') -- libgit2 0.21.2