Ejemplo n.º 1
0
def detail(request, id):
    task = get_object_or_404(Task, id=id)

    perm = task.get_user_permissions(request.user)
    if VIEW not in perm:
        return (403, "Not allowed to view this task!")
    if not check_prerequisites_for_task(task, request.user, perm):
        return (403, "Prerequisites not met, not allowed to view the task!")

    # Remember my solution.
    try:
        solution = Solution.objects.get(author_id=request.user.id, task_id=task.id)
    except:
        solution = None
    task.cache_solution = solution

    data = {"task": task, "can_edit": EDIT in perm, "solution": solution}

    featured_folder_id = getattr(settings, "FEATURED_LECTURES_FOLDER_ID", None)
    if task.is_lecture and featured_folder_id and can_edit_featured_lectures(request.user):
        # The case where task is hidden is handled in the template.
        data["can_select_as_featured"] = True
        data["is_featured"] = FolderTask.objects.filter(folder_id=featured_folder_id, task_id=id).exists()

    folder_data = get_task_folder_data(task, request.user)
    if folder_data:
        data.update(folder_data)

    return data
Ejemplo n.º 2
0
def featured_lecture(request):
    if not can_edit_featured_lectures(request.user):
        return (403, "Not allowed to modify featured lectures.")

    folder_id = getattr(settings, "FEATURED_LECTURES_FOLDER_ID", None)
    if not folder_id:
        return (400, "Featured lectures not enabled.")

    featured = request.POST["featured"]
    if featured not in ["yes", "no"]:
        return (400, "Argument `featured` should be 'yes' or 'no'.")

    task = get_object_or_404(Task, id=request.POST["task_id"])
    if featured == "yes" and (task.hidden or not task.is_lecture):
        return (403, "Task hidden or not a lecture.")  # Allow to remove.

    add = True if featured == "yes" else False
    add_or_remove_folder_task(folder_id, task.id, add)
    return (task.get_absolute_url(),)