def channel_page(request, channel, allow_edit=False, staging=False): channel_serializer = ChannelSerializer(channel) channel_list = Channel.objects.select_related('main_tree').prefetch_related('editors').prefetch_related('viewers')\ .exclude(id=channel.pk).filter(Q(deleted=False) & (Q(editors=request.user) | Q(viewers=request.user)))\ .annotate(is_view_only=Case(When(editors=request.user, then=Value(0)), default=Value(1), output_field=IntegerField()))\ .distinct().values("id", "name", "is_view_only").order_by('name') token = None if channel.secret_tokens.filter(is_primary=True).exists(): token = channel.secret_tokens.filter(is_primary=True).first().token token = token[:5] + "-" + token[5:] json_renderer = JSONRenderer() return render(request, 'channel_edit.html', {"allow_edit": allow_edit, "staging": staging, "is_public": channel.public, "channel": json_renderer.render(channel_serializer.data), "channel_id": channel.pk, "channel_name": channel.name, "ricecooker_version": channel.ricecooker_version, "channel_list": channel_list, "current_user": json_renderer.render(CurrentUserSerializer(request.user).data), "preferences": json.dumps(channel.content_defaults), "messages": get_messages(), "primary_token": token or channel.pk, "title": settings.DEFAULT_TITLE, })
def channel_page(request, channel, allow_edit=False, staging=False): channel_serializer = ChannelSerializer(channel) channel_list = Channel.objects.select_related('main_tree').prefetch_related('editors').prefetch_related('viewers')\ .exclude(id=channel.pk).filter(Q(deleted=False) & (Q(editors=request.user) | Q(viewers=request.user)))\ .annotate(is_view_only=Case(When(editors=request.user, then=Value(0)),default=Value(1),output_field=IntegerField()))\ .distinct().values("id", "name", "is_view_only").order_by('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) languages = get_or_set_cached_constants(Language, LanguageSerializer) json_renderer = JSONRenderer() return render(request, 'channel_edit.html', {"allow_edit":allow_edit, "staging": staging, "channel" : json_renderer.render(channel_serializer.data), "channel_id" : channel.pk, "channel_name": channel.name, "channel_list" : channel_list, "fileformat_list" : fileformats, "license_list" : licenses, "fpreset_list" : formatpresets, "ckinds_list" : contentkinds, "langs_list" : languages, "current_user" : json_renderer.render(CurrentUserSerializer(request.user).data), "preferences" : request.user.preferences, })
def channel_list(request): channel_list = Channel.objects.all() # Todo: only allow access to certain channels? channel_serializer = ChannelSerializer(channel_list, many=True) licenses = ContentLicense.objects.all() license_serializer = LicenseSerializer(licenses, many=True) return render(request, 'channel_list.html', {"channels" : JSONRenderer().render(channel_serializer.data), "license_list" : JSONRenderer().render(license_serializer.data)})
def channel(request, channel_id): channel = get_object_or_404(Channel, id=channel_id) channel_serializer = ChannelSerializer(channel) topictrees = TopicTree.objects.filter(channel=channel) topictree_serializer = TopicTreeSerializer(topictrees, many=True) return render( request, 'channel_edit.html', { "channel": JSONRenderer().render(channel_serializer.data), "topictrees": JSONRenderer().render(topictree_serializer.data) })
def channel(request, channel_id): channel = get_object_or_404(Channel, id=channel_id) channel_serializer = ChannelSerializer(channel) topictrees = TopicTree.objects.filter(channel = channel) topictree_serializer = TopicTreeSerializer(topictrees, many=True) mimetypes = MimeType.objects.all() mimetype_serializer = MimeTypeSerializer(mimetypes, many=True) licenses = ContentLicense.objects.all() license_serializer = LicenseSerializer(licenses, many=True) return render(request, 'channel_edit.html', {"channel" : JSONRenderer().render(channel_serializer.data), "topictrees" : JSONRenderer().render(topictree_serializer.data), "mimetypes" : JSONRenderer().render(mimetype_serializer.data), "license_list" : JSONRenderer().render(license_serializer.data)})
def channel_page(request, channel, allow_edit=False, staging=False): channel_serializer = ChannelSerializer(channel) channel_list = Channel.objects.select_related('main_tree').prefetch_related('editors').prefetch_related('viewers')\ .exclude(id=channel.pk).filter(Q(deleted=False) & (Q(editors=request.user) | Q(viewers=request.user)))\ .annotate(is_view_only=Case(When(editors=request.user, then=Value(0)), default=Value(1), output_field=IntegerField()))\ .distinct().values("id", "name", "is_view_only").order_by('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) languages = get_or_set_cached_constants(Language, LanguageSerializer) token = None if channel.secret_tokens.filter(is_primary=True).exists(): token = channel.secret_tokens.filter(is_primary=True).first().token token = token[:5] + "-" + token[5:] json_renderer = JSONRenderer() return render(request, 'channel_edit.html', {"allow_edit": allow_edit, "staging": staging, "is_public": channel.public, "channel": json_renderer.render(channel_serializer.data), "channel_id": channel.pk, "channel_name": channel.name, "channel_list": channel_list, "fileformat_list": fileformats, "license_list": licenses, "fpreset_list": formatpresets, "ckinds_list": contentkinds, "langs_list": languages, "roles": json.dumps([r[0] for r in roles.choices]), "mastery": json.dumps([m[0] for m in exercises.MASTERY_MODELS if m[0] != exercises.SKILL_CHECK]), "current_user": json_renderer.render(CurrentUserSerializer(request.user).data), "preferences": json.dumps(channel.content_defaults), "messages": get_messages(), "primary_token": token or channel.pk, "title": settings.DEFAULT_TITLE, })