def get_user_channels(request): channel_list = Channel.objects.prefetch_related('editors', 'viewers')\ .filter(Q(deleted=False) & (Q(editors=request.user.pk) | Q(viewers=request.user.pk)))\ .annotate(is_view_only=Case(When(editors=request.user, then=Value(0)),default=Value(1),output_field=IntegerField())) channel_serializer = ChannelListSerializer(channel_list, many=True) return Response(channel_serializer.data)
def accept_channel_invite(request): if request.method == 'POST': data = json.loads(request.body) invitation = Invitation.objects.get(pk=data['invitation_id']) channel = invitation.channel channel.is_view_only = invitation.share_mode == VIEW_ACCESS channel_serializer = ChannelListSerializer(channel) add_editor_to_channel(invitation) return HttpResponse(JSONRenderer().render(channel_serializer.data))
def channel_list(request): if not check_supported_browsers(request.META.get('HTTP_USER_AGENT')): return redirect(reverse_lazy('unsupported_browser')) channel_list = Channel.objects.prefetch_related('editors').prefetch_related('viewers').filter(Q(deleted=False) & (Q(editors=request.user.pk) | Q(viewers=request.user.pk)))\ .annotate(is_view_only=Case(When(editors=request.user, then=Value(0)),default=Value(1),output_field=IntegerField())) channel_serializer = ChannelListSerializer(channel_list, many=True) return render( request, 'channel_list.html', { "channels": JSONRenderer().render(channel_serializer.data), "channel_name": False, "current_user": JSONRenderer().render( UserChannelListSerializer(request.user).data) })