def popular_posts(self, request): try: posts = Post.objects.all().filter( isMatch=True).order_by('hearts').distinct() serializer = PostSendSerializer(posts, many=True) return Response(serializer.data, status=status.HTTP_200_OK) except Exception as e: print(e) return Response({}, status=status.HTTP_400_BAD_REQUEST)
def get_post_preferences(self, request, pk=None, limit=None): # post by user preferences preferences = self.helper_profile_preferences(pk) posts = self.queryset.filter( group__theme__in=preferences).order_by('hearts').distinct() serializer = PostSendSerializer(posts, many=True) return Response(serializer.data, status=status.HTTP_200_OK)
def get_specific_posts(self, request, pk=None, limit=None): # posts in user's groups groups = Groups.views.GroupViewSet.helper_user_groups(pk) posts = self.queryset.filter( group__in=groups).order_by('hearts').distinct() serializer = PostSendSerializer(posts, many=True) return Response(serializer.data, status=status.HTTP_200_OK)
def get_posts(self, request, pk=None): try: posts = Post.objects.all().filter(group=pk) serializer = PostSendSerializer(posts, many=True, context={"request": request}) return Response(serializer.data, status=status.HTTP_200_OK) except Exception as e: print(e) return Response({}, status=status.HTTP_400_BAD_REQUEST)
def theme_posts(self, request, theme=None): try: print(theme) posts = Post.objects.all().filter(group__theme=theme).distinct() serializer = PostSendSerializer(posts, many=True) return Response(serializer.data, status=status.HTTP_200_OK) except Exception as e: print(e) return Response({}, status=status.HTTP_400_BAD_REQUEST)
def similar_posts(self, request, pk=None, post_id=None): try: theme = ActionGroup.objects.all().filter(pk=pk).first().theme posts = Post.objects.all().filter(group__theme=theme).filter( isMatch=True).distinct().exclude(id=post_id).exclude( author=request.user.id) serializer = PostSendSerializer(posts, many=True) return Response(serializer.data, status=status.HTTP_200_OK) except Exception as e: print(e) return Response({}, status=status.HTTP_400_BAD_REQUEST)