From 218bae2877cd2db2c50a330167c9236ed565d6f0 Mon Sep 17 00:00:00 2001 From: Andrey Date: Tue, 14 Nov 2017 14:14:37 +0300 Subject: [PATCH] =?UTF-8?q?=D0=AF=D0=BD=D0=B4=D0=B5=D0=BA=D1=81=20=D0=B4?= =?UTF-8?q?=D0=B5=D0=BD=D1=8C=D0=B3=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- journals/default_threads.py | 3 ++- journals/serilizers.py | 9 +++++++-- journals/urls.py | 1 - journals/views.py | 24 +++++++++--------------- 4 files changed, 18 insertions(+), 19 deletions(-) diff --git a/journals/default_threads.py b/journals/default_threads.py index a64b924..8ad6307 100644 --- a/journals/default_threads.py +++ b/journals/default_threads.py @@ -78,11 +78,12 @@ def main_threads(): st_tch.parent.add(support_thread) for i in get_user_model().objects.all(): - Thread.objects.create( + thread = Thread.objects.create( key="""user_%s""" % i.id, text="""Приватный тред пользователя %s""" % i.email, is_recurse=True, ) + thread.subscribers.add(i) if __name__ == '__main__': diff --git a/journals/serilizers.py b/journals/serilizers.py index 1793010..42bd2d0 100644 --- a/journals/serilizers.py +++ b/journals/serilizers.py @@ -7,20 +7,25 @@ class JournalSerializer(serializers.ModelSerializer): class Meta: model = Journal - exclude = ('content_type', 'object_id') + exclude = ('content_type', 'object_id',) class ThreadDetailSerializer(serializers.ModelSerializer): journals = serializers.SerializerMethodField() + children = serializers.SerializerMethodField() class Meta: model = Thread - fields = ('journals', 'id', 'text') + fields = ('journals', 'id', 'text', 'children', 'key',) @staticmethod def get_journals(self): return [JournalSerializer(i).data for i in self.journal_set.all()] + @staticmethod + def get_children(self): + return [ThreadDetailSerializer(i).data for i in self.thread_set.all()] + class ThreadAdminSerializer(serializers.ModelSerializer): count_children = serializers.SerializerMethodField() diff --git a/journals/urls.py b/journals/urls.py index 62a17d7..54907b2 100644 --- a/journals/urls.py +++ b/journals/urls.py @@ -3,6 +3,5 @@ from journals import views as views urlpatterns = [ url(r'thread/$', views.ThreadAdminListView.as_view()), - url(r'thread/teacher/$', views.TeacherThreadListView.as_view()), url(r'thread/(?P[-\w]+)/$', views.ThreadDetailView.as_view()), ] \ No newline at end of file diff --git a/journals/views.py b/journals/views.py index b4687d2..3bb9d2b 100644 --- a/journals/views.py +++ b/journals/views.py @@ -5,7 +5,7 @@ from django.db.models import Q from lms.global_decorators import transaction_decorator from journals.models import Thread -from journals.serilizers import ThreadUserSerializer, ThreadAdminSerializer +from journals.serilizers import ThreadDetailSerializer, ThreadAdminSerializer class ThreadAdminListView(APIView): @@ -35,19 +35,13 @@ class ThreadDetailView(APIView): except Thread.DoesNotExist: return Response("Thread doesn't exist.", self.status_code,) - def get(self, request, key): + @staticmethod + def get(request, key): try: - return Response(ThreadUserSerializer(Thread.objects.get(key=key)).data, self.status_code) - except Thread.DoesNotExist: - return Response("Thread not found", status=404) - - -class TeacherThreadListView(APIView): - renderer_classes = (JSONRenderer,) + thread = Thread.objects.get(key=key) + if thread.check_perm(request.user): + return Response(ThreadDetailSerializer(thread).data, status=200) + return Response("permission denied", status=403) - @transaction_decorator - def get(self, request): - if not request.user.is_authenticated and not 'teachers' in request.user.groups: - return Response("Permission denied", status=403) - threads = Thread.objects.filter(Q(subscribers=request.user) | Q(groups__user=request.user)) - return Response([ThreadUserSerializer(i).data for i in threads]) \ No newline at end of file + except Thread.DoesNotExist: + return Response("Thread not found", status=404) \ No newline at end of file