Exemplo n.º 1
0
def question_list(request, course_slug, **kwargs):
    course = get_object_or_404(Course, slug=course_slug)

    group, bridge = group_and_bridge(kwargs)

    questions = Question.objects.filter(course=course)
    questions = questions.order_by("-score", "created", "id")

    if group:
        questions = group.content_objects(questions)
    else:
        questions = questions.filter(group_content_type=None)
    is_enrolled = course.students.filter(id=request.user.id).exists()
    is_teacher = is_teacher_test(request.user, course)
    ctx = group_context(group, bridge)
    ctx.update({
        "course": course,
        "show_material": True,
        "is_enrolled": is_enrolled,
        "is_teacher": is_teacher,
        "group": group,
        "questions": questions,
    })

    ctx = RequestContext(request, ctx)
    return render_to_response("discussion/question_list.html", ctx)
Exemplo n.º 2
0
def question_list(request, course_slug, **kwargs):
    course = get_object_or_404(Course, slug=course_slug)

    group, bridge = group_and_bridge(kwargs)

    questions = Question.objects.filter(course=course)
    questions = questions.order_by("-score", "created", "id")

    if group:
        questions = group.content_objects(questions)
    else:
        questions = questions.filter(group_content_type=None)
    is_enrolled = course.students.filter(id=request.user.id).exists()
    is_teacher = is_teacher_test(request.user, course)
    ctx = group_context(group, bridge)
    ctx.update({
        "course": course,
        "show_material": True,
        "is_enrolled": is_enrolled,
        "is_teacher": is_teacher,
        "group": group,
        "questions": questions,
    })

    ctx = RequestContext(request, ctx)
    return render_to_response("discussion/question_list.html", ctx)
Exemplo n.º 3
0
def course_progress(request, course_slug):
    course = get_object_or_404(Course, slug=course_slug)

    is_enrolled = course.students.filter(id=request.user.id).exists()
    if not is_enrolled:
        messages.error(request, _('You are not enrolled in this course'))
        return HttpResponseRedirect(reverse('course_overview', args=[course_slug]))

    is_ready, ask_admin = is_course_ready(course)

    if not is_ready:
        return render_to_response('courses/no_content.html', {
            'course': course,
            'is_enrolled': is_enrolled,
            'ask_admin': ask_admin,
        }, context_instance=RequestContext(request))

    units = []
    for u in get_units_available_for_user(course, request.user):
        unit = {
            'id': u.id,
            'title': u.title,
            'unittype': u.unittype,
            'badge_class': get_unit_badge_class(u),
            'badge_tooltip': u.get_unit_type_name(),
        }
        units.append(unit)

    return render_to_response('courses/progress.html', {
        'course': course,
        'unit_list': units,
        'is_enrolled': is_enrolled,  # required due course nav templatetag
        'is_teacher': is_teacher_test(request.user, course),
    }, context_instance=RequestContext(request))
Exemplo n.º 4
0
def question_create(request, course_slug, **kwargs):
    course = get_object_or_404(Course, slug=course_slug)
    group, bridge = group_and_bridge(kwargs)

    if request.method == "POST":
        form = AskQuestionForm(request.POST)
        if form.is_valid():
            question = form.save(commit=False)
            question.user = request.user
            question.course = course
            question.save()
            return HttpResponseRedirect(question.get_absolute_url())
    else:
        form = AskQuestionForm()

    is_enrolled = course.students.filter(id=request.user.id).exists()
    is_teacher = is_teacher_test(request.user, course)
    ctx = group_context(group, bridge)
    ctx.update({
        "course": course,
        "show_material": True,
        "is_enrolled": is_enrolled,
        "is_teacher": is_teacher,
        "group": group,
        "form": form,
    })

    ctx = RequestContext(request, ctx)
    return render_to_response("discussion/question_create.html", ctx)
Exemplo n.º 5
0
def course_progress(request, course_slug):
    course = get_object_or_404(Course, slug=course_slug)
    unit_list = get_list_or_404(Unit, course=course)

    units = []
    for u in unit_list:
        unit = {
            'id': u.id,
            'title': u.title,
            'unittype': u.unittype,
            'badge_class': unit_badge_classes[u.unittype],
        }
        units.append(unit)

    is_enrolled = course.students.filter(id=request.user.id).exists()
    if not is_enrolled:
        return HttpResponseForbidden(_('You are not enrolled in this course'))

    show_material = show_material_checker(course, request.user)
    if not show_material:
        return HttpResponseForbidden(
            _('You are enrolled in this course but it has not yet begun') +
            course.start_date.strftime(' (%d / %m / %Y)'))

    return render_to_response(
        'courses/progress.html',
        {
            'course': course,
            'unit_list': units,
            'is_enrolled': is_enrolled,  #required due course nav templatetag
            'show_material': show_material,
            'is_teacher': is_teacher_test(request.user, course),
        },
        context_instance=RequestContext(request))
Exemplo n.º 6
0
def course_progress(request, course_slug):
    course = get_object_or_404(Course, slug=course_slug)

    is_enrolled = course.students.filter(id=request.user.id).exists()
    if not is_enrolled:
        return HttpResponseForbidden(_("You are not enrolled in this course"))

    is_ready, ask_admin = is_course_ready(course)

    if not is_ready:
        return render_to_response(
            "courses/no_content.html",
            {"course": course, "is_enrolled": is_enrolled, "ask_admin": ask_admin},
            context_instance=RequestContext(request),
        )

    units = []
    for u in course.unit_set.all():
        unit = {"id": u.id, "title": u.title, "unittype": u.unittype, "badge_class": get_unit_badge_class(u)}
        units.append(unit)

    return render_to_response(
        "courses/progress.html",
        {
            "course": course,
            "unit_list": units,
            "is_enrolled": is_enrolled,  # required due course nav templatetag
            "is_teacher": is_teacher_test(request.user, course),
        },
        context_instance=RequestContext(request),
    )
Exemplo n.º 7
0
def drglearning_careers(request, course_slug, **kwargs):
    course = get_object_or_404(Course, slug=course_slug)
    careers = Career.get_objects_for(course)
    if not careers:
        raise Http404(u"Dr. Glearning course not found")
    if not request.user.players.count():
        reversed_url = reverse("drglearning_settings", args=[course_slug])
        return HttpResponseRedirect(reversed_url)
    else:
        #TODO: Manage multiple players
        default_player = request.user.players.filter(default=True)[0]
    import_player_form = ImportPlayerForm()
    is_enrolled = course.students.filter(id=request.user.id).exists()
    is_teacher = is_teacher_test(request.user, course)
    ctx = {
        "course": course,
        "show_material": True,
        "is_enrolled": is_enrolled,
        "is_teacher": is_teacher,
        "careers": careers,
        "players": request.user.players.all(),
        "default_player": default_player,
        "import_player_form": import_player_form,
        "drglearning_host": DRGLEARNING_HOST,
        "drglearning_embed_url": DRGLEARNING_EMBED_URL,
    }
    ctx = RequestContext(request, ctx)
    return render_to_response("drglearning/careers.html", ctx)
Exemplo n.º 8
0
def course_progress(request, course_slug):
    course = get_object_or_404(Course, slug=course_slug)
    unit_list = get_list_or_404(Unit, course=course)

    units = []
    for u in unit_list:
        unit = {
            'id': u.id,
            'title': u.title,
            'unittype': u.unittype,
            'badge_class': unit_badge_classes[u.unittype],
        }
        units.append(unit)

    is_enrolled = course.students.filter(id=request.user.id).exists()
    if not is_enrolled:
        return HttpResponseForbidden(_('You are not enrolled in this course'))

    show_material = show_material_checker(course, request.user)
    if not show_material:
        return HttpResponseForbidden(_('You are enrolled in this course but it has not yet begun') + course.start_date.strftime(' (%d / %m / %Y)'))

    return render_to_response('courses/progress.html', {
        'course': course,
        'unit_list': units,
        'is_enrolled': is_enrolled, #required due course nav templatetag
        'show_material': show_material,
        'is_teacher': is_teacher_test(request.user, course),
    }, context_instance=RequestContext(request))
Exemplo n.º 9
0
def course_progress(request, course_slug):
    course = get_object_or_404(Course, slug=course_slug)

    is_enrolled = course.students.filter(id=request.user.id).exists()
    if not is_enrolled:
        return HttpResponseForbidden(_('You are not enrolled in this course'))

    is_ready, ask_admin = is_course_ready(course)

    if not is_ready:
        return render_to_response('courses/no_content.html', {
            'course': course,
            'is_enrolled': is_enrolled,
            'ask_admin': ask_admin,
        }, context_instance=RequestContext(request))

    units = []
    for u in course.unit_set.all():
        unit = {
            'id': u.id,
            'title': u.title,
            'unittype': u.unittype,
            'badge_class': get_unit_badge_class(u),
        }
        units.append(unit)

    return render_to_response('courses/progress.html', {
        'course': course,
        'unit_list': units,
        'is_enrolled': is_enrolled,  # required due course nav templatetag
        'is_teacher': is_teacher_test(request.user, course),
    }, context_instance=RequestContext(request))
Exemplo n.º 10
0
def drglearning_careers(request, course_slug, **kwargs):
    course = get_object_or_404(Course, slug=course_slug)
    careers = Career.get_objects_for(course)
    if not careers:
        raise Http404(u"Dr. Glearning course not found")
    if not request.user.players.count():
        reversed_url = reverse("drglearning_settings", args=[course_slug])
        return HttpResponseRedirect(reversed_url)
    else:
        #TODO: Manage multiple players
        default_player = request.user.players.filter(default=True)[0]
    import_player_form = ImportPlayerForm()
    is_enrolled = course.students.filter(id=request.user.id).exists()
    is_teacher = is_teacher_test(request.user, course)
    ctx = {
        "course": course,
        "show_material": True,
        "is_enrolled": is_enrolled,
        "is_teacher": is_teacher,
        "careers": careers,
        "players": request.user.players.all(),
        "default_player": default_player,
        "import_player_form": import_player_form,
        "drglearning_host": DRGLEARNING_HOST,
        "drglearning_embed_url": DRGLEARNING_EMBED_URL,
    }
    ctx = RequestContext(request, ctx)
    return render_to_response("drglearning/careers.html", ctx)
Exemplo n.º 11
0
def course_overview(request, course_slug):
    course = get_object_or_404(Course, slug=course_slug)

    check_user_can_view_course(course, request)

    if request.user.is_authenticated():
        is_enrolled = course.students.filter(id=request.user.id).exists()
        is_teacher = is_teacher_test(request.user, course)
    else:
        is_enrolled = False
        is_teacher = False

    course_teachers = CourseTeacher.objects.filter(course=course)
    announcements = Announcement.objects.filter(course=course).order_by("datetime").reverse()[:5]
    units = get_units_available_for_user(course, request.user, True)
    use_old_calculus = course.slug in settings.COURSES_USING_OLD_TRANSCRIPT

    return render_to_response(
        "courses/overview.html",
        {
            "course": course,
            "units": units,
            "is_enrolled": is_enrolled,
            "is_teacher": is_teacher,
            "request": request,
            "course_teachers": course_teachers,
            "announcements": announcements,
            "use_old_calculus": use_old_calculus,
        },
        context_instance=RequestContext(request),
    )
Exemplo n.º 12
0
def question_create(request, course_slug, **kwargs):
    course = get_object_or_404(Course, slug=course_slug)
    group, bridge = group_and_bridge(kwargs)

    if request.method == "POST":
        form = AskQuestionForm(request.POST)
        if form.is_valid():
            question = form.save(commit=False)
            question.user = request.user
            question.course = course
            question.save()
            return HttpResponseRedirect(question.get_absolute_url())
    else:
        form = AskQuestionForm()

    is_enrolled = course.students.filter(id=request.user.id).exists()
    is_teacher = is_teacher_test(request.user, course)
    ctx = group_context(group, bridge)
    ctx.update({
        "course": course,
        "show_material": True,
        "is_enrolled": is_enrolled,
        "is_teacher": is_teacher,
        "group": group,
        "form": form,
    })

    ctx = RequestContext(request, ctx)
    return render_to_response("discussion/question_create.html", ctx)
Exemplo n.º 13
0
def course_extra_info(request, course_slug):
    course = get_object_or_404(Course, slug=course_slug)
    is_enrolled = course.students.filter(id=request.user.id).exists()

    return render_to_response('courses/static_page.html', {
        'course': course,
        'is_enrolled': is_enrolled,  # required due course nav templatetag
        'is_teacher': is_teacher_test(request.user, course),
        'static_page': course.static_page,
    }, context_instance=RequestContext(request))
Exemplo n.º 14
0
def course_classroom(request, course_slug):

    """
    Main view of the course content (class). If the user is not enrolled we
    show him a message. If the course is not ready and the user is not admin
    we redirect the user to a denied access page.

    :permissions: login
    :context: course, is_enrolled, ask_admin, unit_list, is_teacher, peer_view

    .. versionadded:: 0.1
    """
    course = get_object_or_404(Course, slug=course_slug)

    is_enrolled = course.students.filter(id=request.user.id).exists()
    if not is_enrolled:
        messages.error(request, _("You are not enrolled in this course"))
        return HttpResponseRedirect(reverse("course_overview", args=[course_slug]))

    is_ready, ask_admin = is_course_ready(course)

    if not is_ready and not request.user.is_superuser:
        return render_to_response(
            "courses/no_content.html",
            {"course": course, "is_enrolled": is_enrolled, "ask_admin": ask_admin},
            context_instance=RequestContext(request),
        )

    units = []
    for u in get_units_available_for_user(course, request.user):
        unit = {
            "id": u.id,
            "title": u.title,
            "unittype": u.unittype,
            "badge_class": get_unit_badge_class(u),
            "badge_tooltip": u.get_unit_type_name(),
        }
        units.append(unit)

    peer_review = {
        "text_max_size": settings.PEER_REVIEW_TEXT_MAX_SIZE,
        "file_max_size": settings.PEER_REVIEW_FILE_MAX_SIZE,
    }

    return render_to_response(
        "courses/classroom.html",
        {
            "course": course,
            "unit_list": units,
            "is_enrolled": is_enrolled,
            "is_teacher": is_teacher_test(request.user, course),
            "peer_review": peer_review,
        },
        context_instance=RequestContext(request),
    )
Exemplo n.º 15
0
def course_classroom(request, course_slug):
    """
    Main view of the course content (class). If the user is not enrolled we
    show him a message. If the course is not ready and the user is not admin
    we redirect the user to a denied access page.

    :permissions: login
    :context: course, is_enrolled, ask_admin, unit_list, is_teacher, peer_view

    .. versionadded:: 0.1
    """
    course = get_object_or_404(Course, slug=course_slug)

    is_enrolled = course.students.filter(id=request.user.id).exists()
    if not is_enrolled:
        messages.error(request, _('You are not enrolled in this course'))
        return HttpResponseRedirect(
            reverse('course_overview', args=[course_slug]))

    is_ready, ask_admin = is_course_ready(course)

    if not is_ready and not request.user.is_superuser:
        return render_to_response('courses/no_content.html', {
            'course': course,
            'is_enrolled': is_enrolled,
            'ask_admin': ask_admin,
        },
                                  context_instance=RequestContext(request))

    units = []
    for u in get_units_available_for_user(course, request.user):
        unit = {
            'id': u.id,
            'title': u.title,
            'unittype': u.unittype,
            'badge_class': get_unit_badge_class(u),
            'badge_tooltip': u.get_unit_type_name(),
        }
        units.append(unit)

    peer_review = {
        'text_max_size': settings.PEER_REVIEW_TEXT_MAX_SIZE,
        'file_max_size': settings.PEER_REVIEW_FILE_MAX_SIZE,
    }

    return render_to_response(
        'courses/classroom.html', {
            'course': course,
            'unit_list': units,
            'is_enrolled': is_enrolled,
            'is_teacher': is_teacher_test(request.user, course),
            'peer_review': peer_review
        },
        context_instance=RequestContext(request))
Exemplo n.º 16
0
def course_overview(request, course_slug):
    course = get_object_or_404(Course, slug=course_slug)

    show_material = False
    if request.user.is_authenticated():
        is_enrolled = course.students.filter(id=request.user.id).exists()
        is_teacher = is_teacher_test(request.user, course)
        if is_enrolled:
            show_material = show_material_checker(course, request.user)
    else:
        is_enrolled = False
        is_teacher = False

    if request.method == 'POST':
        if not is_enrolled:
            is_member = course.institutions.is_member(request.user)
            if not is_member:
                institutions = [i.name for i in course.institutions.all()]
                error(
                    request,
                    _(u'Unfortunately, this course is only available for '
                      u'%(institutions)s. Change your e-mail or contact to a '
                      u'teacher.') %
                    {'institutions': u", ".join(institutions)})
            else:
                course.students.add(request.user)
                course.save()
                success(
                    request,
                    _(u'Congratulations, you have successfully enroll in the course %(course)s'
                      ) % {'course': unicode(course)})
        else:
            course.students.remove(request.user)
            course.save()
            success(
                request,
                _(u'You have successfully unenroll in the course %(course)s') %
                {'course': unicode(course)})
        return HttpResponseRedirect(
            reverse('course_overview', args=(course.slug, )))

    announcements = Announcement.objects.filter(
        course=course).order_by('datetime').reverse()[:5]

    return render_to_response('courses/overview.html', {
        'course': course,
        'is_enrolled': is_enrolled,
        'show_material': show_material,
        'is_teacher': is_teacher,
        'request': request,
        'announcements': announcements,
    },
                              context_instance=RequestContext(request))
Exemplo n.º 17
0
def question_detail(request, course_slug, question_id, **kwargs):
    course = get_object_or_404(Course, slug=course_slug)
    group, bridge = group_and_bridge(kwargs)

    questions = Question.objects.all()

    if group:
        questions = group.content_objects(questions)
    else:
        questions = questions.filter(group_content_type=None)

    question = get_object_or_404(questions, pk=question_id)
    responses = question.responses.order_by("-score", "created", "id")

    # if question.user == request.user:
    #     is_me = True
    # else:
    #     is_me = False

    if request.method == "POST":
        add_response_form = AddResponseForm(request.POST)

        if add_response_form.is_valid():
            response = add_response_form.save(commit=False)
            response.question = question
            response.user = request.user
            response.save()
            return HttpResponseRedirect(response.get_absolute_url())
    else:
        add_response_form = AddResponseForm()
        # if not is_me or request.user.is_staff:
        #     add_response_form = AddResponseForm()
        # else:
        #     add_response_form = None

    is_enrolled = course.students.filter(id=request.user.id).exists()
    is_teacher = is_teacher_test(request.user, course)
    can_mark_accepted = workflow.can_mark_accepted(request.user, question)
    ctx = group_context(group, bridge)
    ctx.update({
        "course": course,
        "show_material": True,
        "is_enrolled": is_enrolled,
        "is_teacher": is_teacher,
        "group": group,
        "can_mark_accepted": can_mark_accepted,
        "question": question,
        "responses": responses,
        "add_response_form": add_response_form,
    })
    ctx = RequestContext(request, ctx)
    return render_to_response("discussion/question_detail.html", ctx)
Exemplo n.º 18
0
def question_detail(request, course_slug, question_id, **kwargs):
    course = get_object_or_404(Course, slug=course_slug)
    group, bridge = group_and_bridge(kwargs)

    questions = Question.objects.all()

    if group:
        questions = group.content_objects(questions)
    else:
        questions = questions.filter(group_content_type=None)

    question = get_object_or_404(questions, pk=question_id)
    responses = question.responses.order_by("-score", "created", "id")

    # if question.user == request.user:
    #     is_me = True
    # else:
    #     is_me = False

    if request.method == "POST":
        add_response_form = AddResponseForm(request.POST)

        if add_response_form.is_valid():
            response = add_response_form.save(commit=False)
            response.question = question
            response.user = request.user
            response.save()
            return HttpResponseRedirect(response.get_absolute_url())
    else:
        add_response_form = AddResponseForm()
        # if not is_me or request.user.is_staff:
        #     add_response_form = AddResponseForm()
        # else:
        #     add_response_form = None

    is_enrolled = course.students.filter(id=request.user.id).exists()
    is_teacher = is_teacher_test(request.user, course)
    can_mark_accepted = workflow.can_mark_accepted(request.user, question)
    ctx = group_context(group, bridge)
    ctx.update({
        "course": course,
        "show_material": True,
        "is_enrolled": is_enrolled,
        "is_teacher": is_teacher,
        "group": group,
        "can_mark_accepted": can_mark_accepted,
        "question": question,
        "responses": responses,
        "add_response_form": add_response_form,
    })
    ctx = RequestContext(request, ctx)
    return render_to_response("discussion/question_detail.html", ctx)
Exemplo n.º 19
0
def course_extra_info(request, course_slug):
    course = get_course_if_user_can_view_or_404(course_slug, request)
    is_enrolled = course.students.filter(id=request.user.id).exists()

    return render_to_response(
        'courses/static_page.html',
        {
            'course': course,
            'is_enrolled': is_enrolled,  # required due course nav templatetag
            'is_teacher': is_teacher_test(request.user, course),
            'static_page': course.static_page,
        },
        context_instance=RequestContext(request))
Exemplo n.º 20
0
def course_classroom(request, course_slug):

    """
    Main view of the course content (class). If the user is not enrolled we
    show him a message. If the course is not ready and the user is not admin
    we redirect the user to a denied access page.

    :permissions: login
    :context: course, is_enrolled, ask_admin, unit_list, is_teacher, peer_view

    .. versionadded:: 0.1
    """
    course = get_course_if_user_can_view_or_404(course_slug, request)
    is_enrolled = course.students.filter(id=request.user.id).exists()
    if not is_enrolled:
        messages.error(request, _('You are not enrolled in this course'))
        return HttpResponseRedirect(reverse('course_overview', args=[course_slug]))

    is_ready, ask_admin = is_course_ready(course)

    if not is_ready and not request.user.is_superuser:
        return render_to_response('courses/no_content.html', {
            'course': course,
            'is_enrolled': is_enrolled,
            'ask_admin': ask_admin,
        }, context_instance=RequestContext(request))

    units = []
    for u in get_units_available_for_user(course, request.user):
        unit = {
            'id': u.id,
            'title': u.title,
            'unittype': u.unittype,
            'badge_class': get_unit_badge_class(u),
            'badge_tooltip': u.get_unit_type_name(),
        }
        units.append(unit)

    peer_review = {
        'text_max_size': settings.PEER_REVIEW_TEXT_MAX_SIZE,
        'file_max_size': settings.PEER_REVIEW_FILE_MAX_SIZE,
    }

    return render_to_response('courses/classroom.html', {
        'course': course,
        'unit_list': units,
        'is_enrolled': is_enrolled,
        'is_teacher': is_teacher_test(request.user, course),
        'peer_review': peer_review
    }, context_instance=RequestContext(request))
Exemplo n.º 21
0
def course_progress(request, course_slug):

    """
    Main view for the user progress in the course. This will return the units for
    the user in the current course.

    :permissions: login
    :context: course, is_enrolled, ask_admin, course, unit_list, is_teacher

    .. versionadded:: 0.1
    """
    course = get_object_or_404(Course, slug=course_slug)

    is_enrolled = course.students.filter(id=request.user.id).exists()
    if not is_enrolled:
        messages.error(request, _("You are not enrolled in this course"))
        return HttpResponseRedirect(reverse("course_overview", args=[course_slug]))

    is_ready, ask_admin = is_course_ready(course)

    if not is_ready:
        return render_to_response(
            "courses/no_content.html",
            {"course": course, "is_enrolled": is_enrolled, "ask_admin": ask_admin},
            context_instance=RequestContext(request),
        )

    units = []
    for u in get_units_available_for_user(course, request.user):
        unit = {
            "id": u.id,
            "title": u.title,
            "unittype": u.unittype,
            "badge_class": get_unit_badge_class(u),
            "badge_tooltip": u.get_unit_type_name(),
        }
        units.append(unit)

    return render_to_response(
        "courses/progress.html",
        {
            "course": course,
            "unit_list": units,
            "is_enrolled": is_enrolled,  # required due course nav templatetag
            "is_teacher": is_teacher_test(request.user, course),
        },
        context_instance=RequestContext(request),
    )
Exemplo n.º 22
0
def course_overview(request, course_slug):
    course = get_object_or_404(Course, slug=course_slug)

    show_material = False
    if request.user.is_authenticated():
        is_enrolled = course.students.filter(id=request.user.id).exists()
        is_teacher = is_teacher_test(request.user, course)
        if is_enrolled:
            show_material = show_material_checker(course, request.user)
    else:
        is_enrolled = False
        is_teacher = False

    if request.method == 'POST':
        if not is_enrolled:
            is_member = course.institutions.is_member(request.user)
            if not is_member:
                institutions = [i.name for i in course.institutions.all()]
                error(request,
                      _(u'Unfortunately, this course is only available for '
                        u'%(institutions)s. Change your e-mail or contact to a '
                        u'teacher.')
                        % {'institutions': u", ".join(institutions)})
            else:
                course.students.add(request.user)
                course.save()
                success(request,
                        _(u'Congratulations, you have successfully enroll in the course %(course)s')
                        % {'course': unicode(course)})
        else:
            course.students.remove(request.user)
            course.save()
            success(request,
                    _(u'You have successfully unenroll in the course %(course)s')
                    % {'course': unicode(course)})
        return HttpResponseRedirect(reverse('course_overview',
                                            args=(course.slug, )))

    announcements = Announcement.objects.filter(course=course).order_by('datetime').reverse()[:5]

    return render_to_response('courses/overview.html', {
            'course': course,
            'is_enrolled': is_enrolled,
            'show_material': show_material,
            'is_teacher': is_teacher,
            'request': request,
            'announcements': announcements,
            }, context_instance=RequestContext(request))
Exemplo n.º 23
0
def course_reviews(request, course_slug, kq_id=None, ignore_langs=False):
    course = get_course_if_user_can_view_or_404(course_slug, request)

    is_enrolled = course.students.filter(id=request.user.id).exists()
    if not is_enrolled:
        messages.error(request, _('You are not enrolled in this course'))
        return HttpResponseRedirect(reverse('course_overview', args=[course_slug]))

    is_ready, ask_admin, is_outdated = is_course_ready(course)
    is_teacher = is_teacher_test(request.user, course)

    if not is_ready and not is_teacher and not request.user.is_staff and not request.user.is_superuser:
        return render_to_response('courses/no_content.html', {
            'course': course,
            'is_enrolled': is_enrolled,
            'ask_admin': ask_admin,
        }, context_instance=RequestContext(request))

    assignments = course_get_visible_peer_review_assignments(request.user,
                                                             course)

    collection = get_db().get_collection('peer_review_submissions')
    submissions = collection.find({
        'author': request.user.id,
        'course': course.id,
    }, {'kq': True, '_id': False})
    submissions = [s['kq'] for s in submissions]

    user_submissions = [a.id for a in assignments if a.kq.id in submissions]
    tasks = get_tasks_available_for_user(course, request.user)
    group = get_group_by_user_and_course(request.user.id, course.id)

    return render_to_response('peerreview/reviews.html', {
        'course': course,
        'assignments': assignments,
        'user_submissions': user_submissions,
        'kq_id': kq_id,
        'ignore_langs': ignore_langs,
        'is_enrolled': is_enrolled,
        'is_ready': is_ready,
        'is_outdated': is_outdated,
        'can_review': date.today() < course.end_date+timedelta(days=14),
        'task_list': tasks[0],
        'tasks_done': tasks[1],
        'progress': get_course_progress_for_user(course, request.user),
        'passed': has_user_passed_course(request.user, course),
        'group': group,
    }, context_instance=RequestContext(request))
Exemplo n.º 24
0
def course_progress(request, course_slug):
    """
    Main view for the user progress in the course. This will return the units for
    the user in the current course.

    :permissions: login
    :context: course, is_enrolled, ask_admin, course, unit_list, is_teacher

    .. versionadded:: 0.1
    """
    course = get_course_if_user_can_view_or_404(course_slug, request)

    is_enrolled = course.students.filter(id=request.user.id).exists()
    if not is_enrolled:
        messages.error(request, _('You are not enrolled in this course'))
        return HttpResponseRedirect(
            reverse('course_overview', args=[course_slug]))

    is_ready, ask_admin = is_course_ready(course)

    if not is_ready:
        return render_to_response('courses/no_content.html', {
            'course': course,
            'is_enrolled': is_enrolled,
            'ask_admin': ask_admin,
        },
                                  context_instance=RequestContext(request))

    units = []
    for u in get_units_available_for_user(course, request.user):
        unit = {
            'id': u.id,
            'title': u.title,
            'unittype': u.unittype,
            'badge_class': get_unit_badge_class(u),
            'badge_tooltip': u.get_unit_type_name(),
        }
        units.append(unit)

    return render_to_response(
        'courses/progress.html',
        {
            'course': course,
            'unit_list': units,
            'is_enrolled': is_enrolled,  # required due course nav templatetag
            'is_teacher': is_teacher_test(request.user, course),
        },
        context_instance=RequestContext(request))
Exemplo n.º 25
0
def drglearning_settings(request, course_slug):
    course = get_object_or_404(Course, slug=course_slug)
    import_player_form = ImportPlayerForm()
    if "nope" in request.GET:
        player_json = create_player(request.get_host())
        if "token" in player_json and "code" in player_json:
            player = Player.objects.create(
                code=player_json["code"],
                display_name=request.user.get_full_name(),
                email=request.user.email,
                token=player_json["token"],
                image_url=player_json["image_url"],
                user=request.user
            )
            player_json = update_player(code=player.code, token=player.token,
                                        display_name=player.display_name,
                                        email=player.email)
            if player_json.get("code", None) == player.code:
                reversed_url = reverse("drglearning_careers",
                                       args=[course_slug])
                return HttpResponseRedirect(reversed_url)
    elif request.POST:
        import_player_form = ImportPlayerForm(request.POST)
        if import_player_form.is_valid():
            player = import_player_form.save(commit=False)
            player_json = get_player(code=player.code)
            if player_json.get("code", None) == player.code:
                player.user = request.user
                player.display_name = request.user.get_full_name()
                player.email = request.user.email
                player.save()
                reversed_url = reverse("drglearning_careers",
                                       args=[course_slug])
                return HttpResponseRedirect(reversed_url)
    is_enrolled = course.students.filter(id=request.user.id).exists()
    is_teacher = is_teacher_test(request.user, course)
    ctx = {
        "course": course,
        "show_material": True,
        "players": request.user.players,
        "import_player_form": import_player_form,
        "is_enrolled": is_enrolled,
        "is_teacher": is_teacher,
    }
    ctx = RequestContext(request, ctx)
    return render_to_response("drglearning/settings.html", ctx)
Exemplo n.º 26
0
def drglearning_settings(request, course_slug):
    course = get_object_or_404(Course, slug=course_slug)
    import_player_form = ImportPlayerForm()
    if "nope" in request.GET:
        player_json = create_player(request.get_host())
        if "token" in player_json and "code" in player_json:
            player = Player.objects.create(
                code=player_json["code"],
                display_name=request.user.get_full_name(),
                email=request.user.email,
                token=player_json["token"],
                image_url=player_json["image_url"],
                user=request.user)
            player_json = update_player(code=player.code,
                                        token=player.token,
                                        display_name=player.display_name,
                                        email=player.email)
            if player_json.get("code", None) == player.code:
                reversed_url = reverse("drglearning_careers",
                                       args=[course_slug])
                return HttpResponseRedirect(reversed_url)
    elif request.POST:
        import_player_form = ImportPlayerForm(request.POST)
        if import_player_form.is_valid():
            player = import_player_form.save(commit=False)
            player_json = get_player(code=player.code)
            if player_json.get("code", None) == player.code:
                player.user = request.user
                player.display_name = request.user.get_full_name()
                player.email = request.user.email
                player.save()
                reversed_url = reverse("drglearning_careers",
                                       args=[course_slug])
                return HttpResponseRedirect(reversed_url)
    is_enrolled = course.students.filter(id=request.user.id).exists()
    is_teacher = is_teacher_test(request.user, course)
    ctx = {
        "course": course,
        "show_material": True,
        "players": request.user.players,
        "import_player_form": import_player_form,
        "is_enrolled": is_enrolled,
        "is_teacher": is_teacher,
    }
    ctx = RequestContext(request, ctx)
    return render_to_response("drglearning/settings.html", ctx)
Exemplo n.º 27
0
def course_overview(request, course_slug):

    """
    Show the course main page. This will show the main information about the
    course and the 'register to this course' button.

    .. note:: **use_old_calculus** is a compatibility method with old evaluation
              methods, which allowed the normal units to be evaluated. The new
              system does not evaluate normal units, only tasks and exams.

    :context: course, units, is_enrolled, is_teacher, request, course_teachers,
              announcements, use_old_calculus

    .. versionadded:: 0.1
    """
    course = get_object_or_404(Course, slug=course_slug)

    check_user_can_view_course(course, request)

    if request.user.is_authenticated():
        is_enrolled = course.students.filter(id=request.user.id).exists()
        is_teacher = is_teacher_test(request.user, course)
    else:
        is_enrolled = False
        is_teacher = False

    course_teachers = CourseTeacher.objects.filter(course=course)
    announcements = Announcement.objects.filter(course=course).order_by("datetime").reverse()[:5]
    units = get_units_available_for_user(course, request.user, True)
    use_old_calculus = course.slug in settings.COURSES_USING_OLD_TRANSCRIPT

    return render_to_response(
        "courses/overview.html",
        {
            "course": course,
            "units": units,
            "is_enrolled": is_enrolled,
            "is_teacher": is_teacher,
            "request": request,
            "course_teachers": course_teachers,
            "announcements": announcements,
            "use_old_calculus": use_old_calculus,
        },
        context_instance=RequestContext(request),
    )
Exemplo n.º 28
0
def course_classroom(request, course_slug):
    course = get_object_or_404(Course, slug=course_slug)

    is_enrolled = course.students.filter(id=request.user.id).exists()
    if not is_enrolled:
        return HttpResponseForbidden(_("You are not enrolled in this course"))

    is_ready, ask_admin = is_course_ready(course)

    if not is_ready:
        return render_to_response(
            "courses/no_content.html",
            {"course": course, "is_enrolled": is_enrolled, "ask_admin": ask_admin},
            context_instance=RequestContext(request),
        )

    units = []
    for u in get_units_available_for_user(course, request.user):
        unit = {
            "id": u.id,
            "title": u.title,
            "unittype": u.unittype,
            "badge_class": get_unit_badge_class(u),
            "badge_tooltip": u.get_unit_type_name(),
        }
        units.append(unit)

    peer_review = {
        "text_max_size": settings.PEER_REVIEW_TEXT_MAX_SIZE,
        "file_max_size": settings.PEER_REVIEW_FILE_MAX_SIZE,
    }

    return render_to_response(
        "courses/classroom.html",
        {
            "course": course,
            "unit_list": units,
            "is_enrolled": is_enrolled,
            "is_teacher": is_teacher_test(request.user, course),
            "peer_review": peer_review,
        },
        context_instance=RequestContext(request),
    )
Exemplo n.º 29
0
def course_overview(request, course_slug):
    """
    Show the course main page. This will show the main information about the
    course and the 'register to this course' button.

    .. note:: **use_old_calculus** is a compatibility method with old evaluation
              methods, which allowed the normal units to be evaluated. The new
              system does not evaluate normal units, only tasks and exams.

    :context: course, units, is_enrolled, is_teacher, request, course_teachers,
              announcements, use_old_calculus

    .. versionadded:: 0.1
    """
    course = get_object_or_404(Course, slug=course_slug)

    check_user_can_view_course(course, request)

    if request.user.is_authenticated():
        is_enrolled = course.students.filter(id=request.user.id).exists()
        is_teacher = is_teacher_test(request.user, course)
    else:
        is_enrolled = False
        is_teacher = False

    course_teachers = CourseTeacher.objects.filter(course=course)
    announcements = Announcement.objects.filter(
        course=course).order_by('datetime').reverse()[:5]
    units = get_units_available_for_user(course, request.user, True)
    use_old_calculus = course.slug in settings.COURSES_USING_OLD_TRANSCRIPT

    return render_to_response('courses/overview.html', {
        'course': course,
        'units': units,
        'is_enrolled': is_enrolled,
        'is_teacher': is_teacher,
        'request': request,
        'course_teachers': course_teachers,
        'announcements': announcements,
        'use_old_calculus': use_old_calculus,
    },
                              context_instance=RequestContext(request))
Exemplo n.º 30
0
def course_overview(request, course_slug):
    course = get_object_or_404(Course, slug=course_slug)

    if request.user.is_authenticated():
        is_enrolled = course.students.filter(id=request.user.id).exists()
        is_teacher = is_teacher_test(request.user, course)
    else:
        is_enrolled = False
        is_teacher = False

    course_teachers = CourseTeacher.objects.filter(course=course)
    announcements = Announcement.objects.filter(course=course).order_by('datetime').reverse()[:5]

    return render_to_response('courses/overview.html', {
        'course': course,
        'is_enrolled': is_enrolled,
        'is_teacher': is_teacher,
        'request': request,
        'course_teachers': course_teachers,
        'announcements': announcements,
    }, context_instance=RequestContext(request))
Exemplo n.º 31
0
def course_classroom(request, course_slug):
    course = get_object_or_404(Course, slug=course_slug)

    is_enrolled = course.students.filter(id=request.user.id).exists()
    if not is_enrolled:
        messages.error(request, _('You are not enrolled in this course'))
        return HttpResponseRedirect(reverse('course_overview', args=[course_slug]))

    is_ready, ask_admin = is_course_ready(course)

    if not is_ready:
        return render_to_response('courses/no_content.html', {
            'course': course,
            'is_enrolled': is_enrolled,
            'ask_admin': ask_admin,
        }, context_instance=RequestContext(request))

    units = []
    for u in get_units_available_for_user(course, request.user):
        unit = {
            'id': u.id,
            'title': u.title,
            'unittype': u.unittype,
            'badge_class': get_unit_badge_class(u),
            'badge_tooltip': u.get_unit_type_name(),
        }
        units.append(unit)

    peer_review = {
        'text_max_size': settings.PEER_REVIEW_TEXT_MAX_SIZE,
        'file_max_size': settings.PEER_REVIEW_FILE_MAX_SIZE,
    }

    return render_to_response('courses/classroom.html', {
        'course': course,
        'unit_list': units,
        'is_enrolled': is_enrolled,
        'is_teacher': is_teacher_test(request.user, course),
        'peer_review': peer_review
    }, context_instance=RequestContext(request))
Exemplo n.º 32
0
def profile_courses(request, id, byid=False):

	if(not id):
		if(not request.user.id):
			return HttpResponseRedirect("/auth/login")
		user = request.user
		id = request.user.id
	else:
		if byid:
			user = User.objects.get(pk=id)
		else:
			user = User.objects.get(username=id)
			id = user.id

	case = _getCase(request,id)

	courses = get_courses_user_is_enrolled(user)
	courses_completed = 0
	for course in courses:
		if request.user.is_authenticated():
			course.is_enrolled = course.students.filter(id=user.id).exists()
			course.is_teacher = is_teacher_test(user, course)
			course.progress = get_course_progress_for_user(course, user)
			if course.progress == 100:
				courses_completed +=1
			course.has_passed = has_user_passed_course(user, course)
		else:
			course.is_enrolled = False
			course.is_teacher = False

	return render_to_response('profile/courses.html', {
		"id":id,
		"case":case,
		'request': request,
		'courses': courses,
		'courses_completed': courses_completed,
		"user_view_profile": user,
		"badges_count": get_db().get_collection('badge').find({"id_user": id}).count()
		}, context_instance=RequestContext(request))
Exemplo n.º 33
0
def can_delete_question(user, question):
    return is_teacher_test(user, question.course)
Exemplo n.º 34
0
def can_delete_response(user, response):
    return is_teacher_test(user, response.question.course)