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})
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})
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, }, )