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))
def course_reviews(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() 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)) 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] return render_to_response('peerreview/reviews.html', { 'course': course, 'assignments': assignments, 'user_submissions': user_submissions, 'is_enrolled': is_enrolled, }, context_instance=RequestContext(request))
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), )
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))
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), )
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))
def course_reservations(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() 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)) active_reservations = [] for i in user_course_get_active_reservations(request.user, course): base = model_to_dict(i) base['concurrent'] = get_concurrent_reservations(i) base['asset'] = i.asset base['reserved_from'] = i.reserved_from active_reservations.append(base) past_reservations = [] for i in user_course_get_past_reservations(request.user, course): base = model_to_dict(i) base['concurrent'] = get_concurrent_reservations(i) base['asset'] = i.asset base['reserved_from'] = i.reserved_from past_reservations.append(base) pending_reservations = [] for i in user_course_get_pending_reservations(request.user, course): base = model_to_dict(i) base['concurrent'] = get_concurrent_reservations(i) base['asset'] = i.asset base['reserved_from'] = i.reserved_from pending_reservations.append(base) return render_to_response('assets/reservations.html', { 'course': course, 'is_enrolled': is_enrolled, 'active_reservations': active_reservations, 'past_reservations': past_reservations, 'pending_reservations': pending_reservations, }, context_instance=RequestContext(request))
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))
def course_reservations(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() 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) 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)) active_reservations = [] for i in user_course_get_active_reservations(request.user, course): base = model_to_dict(i) base['concurrent'] = get_concurrent_reservations(i) base['asset'] = i.asset base['reserved_from'] = i.reserved_from active_reservations.append(base) past_reservations = [] for i in user_course_get_past_reservations(request.user, course): base = model_to_dict(i) base['concurrent'] = get_concurrent_reservations(i) base['asset'] = i.asset base['reserved_from'] = i.reserved_from past_reservations.append(base) pending_reservations = [] for i in user_course_get_pending_reservations(request.user, course): base = model_to_dict(i) base['concurrent'] = get_concurrent_reservations(i) base['asset'] = i.asset base['reserved_from'] = i.reserved_from pending_reservations.append(base) return render_to_response('assets/reservations.html', { 'course': course, 'is_enrolled': is_enrolled, 'active_reservations': active_reservations, 'past_reservations': past_reservations, 'pending_reservations': pending_reservations, }, context_instance=RequestContext(request))
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))
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))
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), )
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), )
def course_reviews(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() 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)) 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] return render_to_response('peerreview/reviews.html', { 'course': course, 'assignments': assignments, 'user_submissions': user_submissions, 'is_enrolled': is_enrolled, }, context_instance=RequestContext(request))
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))