Commit 4979135894e955547a3565ecc99af745530c5643

Authored by Zambom
1 parent 2ace8926

Adding subject and participants badge in app

@@ -65,7 +65,7 @@ def getToken(request): @@ -65,7 +65,7 @@ def getToken(request):
65 } 65 }
66 66
67 auth = (oauth.client_id, oauth.client_secret) 67 auth = (oauth.client_id, oauth.client_secret)
68 - 68 +
69 response = requests.post(request.build_absolute_uri(reverse('oauth2_provider:token')), data = data, auth = auth) 69 response = requests.post(request.build_absolute_uri(reverse('oauth2_provider:token')), data = data, auth = auth)
70 70
71 json_r = json.loads(response.content.decode('utf-8')) 71 json_r = json.loads(response.content.decode('utf-8'))
@@ -169,7 +169,7 @@ class SubjectViewset(viewsets.ReadOnlyModelViewSet): @@ -169,7 +169,7 @@ class SubjectViewset(viewsets.ReadOnlyModelViewSet):
169 169
170 subjects = Subject.objects.filter(Q(students__pk=pk) | Q(professor__pk=pk) | Q(category__coordinators__pk=pk)).distinct() 170 subjects = Subject.objects.filter(Q(students__pk=pk) | Q(professor__pk=pk) | Q(category__coordinators__pk=pk)).distinct()
171 171
172 - serializer = SubjectSerializer(subjects, many = True) 172 + serializer = SubjectSerializer(subjects, many = True, context = {"request_user": user})
173 173
174 json_r = json.dumps(serializer.data) 174 json_r = json.dumps(serializer.data)
175 json_r = json.loads(json_r) 175 json_r = json.loads(json_r)
@@ -207,7 +207,7 @@ class ParticipantsViewset(viewsets.ReadOnlyModelViewSet): @@ -207,7 +207,7 @@ class ParticipantsViewset(viewsets.ReadOnlyModelViewSet):
207 if not subject_slug == "": 207 if not subject_slug == "":
208 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() 208 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()
209 209
210 - serializer = UserSerializer(participants, many = True) 210 + serializer = UserSerializer(participants, many = True, context = {"request_user": username})
211 211
212 json_r = json.dumps(serializer.data) 212 json_r = json.dumps(serializer.data)
213 json_r = json.loads(json_r) 213 json_r = json.loads(json_r)
subjects/serializers.py
  1 +import datetime
  2 +from django.db.models import Q
  3 +
1 from rest_framework import serializers 4 from rest_framework import serializers
2 5
  6 +from chat.models import ChatVisualizations
  7 +
3 from .models import Subject, Tag 8 from .models import Subject, Tag
4 9
5 class TagSerializer(serializers.ModelSerializer): 10 class TagSerializer(serializers.ModelSerializer):
@@ -24,7 +29,16 @@ class TagSerializer(serializers.ModelSerializer): @@ -24,7 +29,16 @@ class TagSerializer(serializers.ModelSerializer):
24 validators = [] 29 validators = []
25 30
26 class SubjectSerializer(serializers.ModelSerializer): 31 class SubjectSerializer(serializers.ModelSerializer):
  32 + notifications = serializers.SerializerMethodField()
  33 +
  34 + def get_notifications(self, subject):
  35 + user = self.context.get("request_user", None)
  36 +
  37 + if not user is None:
  38 + return ChatVisualizations.objects.filter(Q(user = user) & Q(viewed = False) & Q(message__subject = subject) & (Q(user__is_staff = True) | Q(message__subject__students = user) | Q(message__subject__professor = user) | Q(message__subject__category__coordinators = user))).distinct().count()
  39 +
  40 + return 0
27 41
28 class Meta: 42 class Meta:
29 model = Subject 43 model = Subject
30 - fields = ["name", "slug", "visible", "description_brief", "description"]  
31 \ No newline at end of file 44 \ No newline at end of file
  45 + fields = ["name", "slug", "visible", "description_brief", "description", "notifications"]
32 \ No newline at end of file 46 \ No newline at end of file
users/serializers.py
1 import os 1 import os
2 import zipfile 2 import zipfile
3 import time 3 import time
  4 +from django.db.models import Q
4 from django.conf import settings 5 from django.conf import settings
5 from django.core.files import File 6 from django.core.files import File
  7 +
6 from rest_framework import serializers 8 from rest_framework import serializers
7 9
8 from log.serializers import LogSerializer 10 from log.serializers import LogSerializer
9 from log.models import Log 11 from log.models import Log
10 12
  13 +from chat.models import Conversation, ChatVisualizations
  14 +
11 from .models import User 15 from .models import User
12 16
13 class UserBackupSerializer(serializers.ModelSerializer): 17 class UserBackupSerializer(serializers.ModelSerializer):
@@ -58,7 +62,22 @@ class UserBackupSerializer(serializers.ModelSerializer): @@ -58,7 +62,22 @@ class UserBackupSerializer(serializers.ModelSerializer):
58 validators = [] 62 validators = []
59 63
60 class UserSerializer(serializers.ModelSerializer): 64 class UserSerializer(serializers.ModelSerializer):
  65 + unseen_msgs = serializers.SerializerMethodField()
  66 +
  67 + def get_unseen_msgs(self, user_to):
  68 + user = self.context.get('request_user', None)
  69 +
  70 + if not user is None:
  71 + chat = Conversation.objects.filter((Q(user_one__email = user) & Q(user_two = user_to)) | (Q(user_one = user_to) & Q(user_two__email = user)))
  72 +
  73 + if chat.count() > 0:
  74 + chat = chat[0]
  75 +
  76 + return ChatVisualizations.objects.filter(message__talk = chat, user__email = user, viewed = False).count()
  77 +
  78 + return 0
  79 +
61 class Meta: 80 class Meta:
62 model = User 81 model = User
63 fields = ('username','email','image_url','last_update','date_created','last_name','social_name', 82 fields = ('username','email','image_url','last_update','date_created','last_name','social_name',
64 - 'is_staff','is_active','description') 83 + 'is_staff','is_active','description','unseen_msgs')