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 channel(request, channel_id): channel = get_object_or_404(Channel, id=channel_id, deleted=False) channel_serializer = ChannelSerializer(channel) accessible_channel_list = Channel.objects.filter( Q(deleted=False, public=True) | Q(deleted=False, editors__email__contains= request.user.email)) accessible_channel_list = ChannelListSerializer.setup_eager_loading(accessible_channel_list) accessible_channel_list_serializer = ChannelListSerializer(accessible_channel_list, many=True) channel_list = accessible_channel_list.filter(editors__email__contains= request.user.email).exclude(id=channel_id).values("id", "name") fileformats = get_or_set_cached_constants(FileFormat, FileFormatSerializer) licenses = get_or_set_cached_constants(License, LicenseSerializer) formatpresets = get_or_set_cached_constants(FormatPreset, FormatPresetSerializer) contentkinds = get_or_set_cached_constants(ContentKind, ContentKindSerializer) channel_tags = ContentTag.objects.filter(channel = channel) channel_tags_serializer = TagSerializer(channel_tags, many=True) json_renderer = JSONRenderer() return render(request, 'channel_edit.html', {"channel" : json_renderer.render(channel_serializer.data), "channel_id" : channel_id, "channel_name": channel.name, "accessible_channels" : json_renderer.render(accessible_channel_list_serializer.data), "channel_list" : channel_list, "fileformat_list" : fileformats, "license_list" : licenses, "fpreset_list" : formatpresets, "ckinds_list" : contentkinds, "ctags": json_renderer.render(channel_tags_serializer.data), "current_user" : json_renderer.render(CurrentUserSerializer(request.user).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): channel_list = Channel.objects.filter(deleted=False, editors__email__contains= request.user.email) channel_list = ChannelListSerializer.setup_eager_loading(channel_list) channel_serializer = ChannelListSerializer(channel_list, many=True) licenses = get_or_set_cached_constants(License, LicenseSerializer) return render(request, 'channel_list.html', {"channels" : JSONRenderer().render(channel_serializer.data), "license_list" : licenses, "channel_list" : channel_list.values("id", "name"), "current_user" : JSONRenderer().render(UserSerializer(request.user).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) })