Esempio n. 1
0
def _render_workflows(request: HttpRequest, **kwargs) -> TemplateResponse:
    ctx = _get_request_jsonize_context(request, {})

    workflows = (
        Workflow.objects.filter(**kwargs)
        .filter(Q(lesson_slug__isnull=True) | Q(lesson_slug=""))
        .prefetch_related("acl", "owner")
        .order_by("-updated_at")
    )
    json_workflows = [
        jsonize_clientside_workflow(
            w.to_clientside(include_tab_slugs=False, include_block_slugs=False),
            ctx,
            is_init=True,
        )
        for w in workflows
    ]

    init_state = {
        "loggedInUser": (
            None
            if request.user.is_anonymous
            else jsonize_user(request.user, ctx.user_profile)
        ),
        "workflows": json_workflows,
    }

    return TemplateResponse(request, "workflows.html", {"initState": init_state})
Esempio n. 2
0
    def get(self, request: HttpRequest):
        """Render workflow-list page."""

        ctx = JsonizeContext(request.user, request.session, request.locale_id,
                             {})

        def list_workflows_as_json(**kwargs) -> List[Dict[str, Any]]:
            workflows = (Workflow.objects.filter(**kwargs).prefetch_related(
                "acl", "owner",
                "last_delta").order_by("-last_delta__datetime").filter(
                    Q(lesson_slug__isnull=True) | Q(lesson_slug="")))
            return [
                jsonize_clientside_workflow(
                    w.to_clientside(include_tab_slugs=False),
                    ctx,
                    is_init=True) for w in workflows
            ]

        init_state = {
            "loggedInUser": jsonize_user(request.user),
            "workflows": {
                "owned":
                list_workflows_as_json(owner=request.user),
                "shared":
                list_workflows_as_json(acl__email=request.user.email),
                "templates":
                list_workflows_as_json(in_all_users_workflow_lists=True),
            },
        }

        return TemplateResponse(request, "workflows.html",
                                {"initState": init_state})
Esempio n. 3
0
def _render_course(request, course, lesson_url_prefix):
    logged_in_user = None
    if request.user and request.user.is_authenticated:
        logged_in_user = jsonize_user(request.user, request.user.user_profile)

    try:
        courses = AllCoursesByLocale[course.locale_id]
    except KeyError:
        courses = []

    # We render using HTML, not React, to make this page SEO-friendly.
    return TemplateResponse(
        request,
        "course.html",
        {
            "initState":
            json.dumps({
                "loggedInUser":
                logged_in_user,
                "courses": [
                    dict(href=course.href, title=course.title)
                    for course in AllCoursesByLocale.get(
                        request.locale_id, [])
                ],
            }),
            "course":
            course,
            "courses":
            courses,
            "lessons":
            list(course.lessons.values()),
            "lesson_url_prefix":
            lesson_url_prefix,
        },
    )