Example #1
0
def see_assignments(request, id):
    user = get_current_user(request)
    course = Course.objects.get(id=id)
    can_delete = True if user == course.teacher or user in course.assistants.all() else False
    AssignmentFormSet = modelformset_factory(Assignment,
                                             fields=('id', 'name', 'description', 'deadline', 'type', 'group'),
                                             can_delete=can_delete, form=AssignmentForm, max_num=0)
    if request.method == 'POST':
        formset = AssignmentFormSet(request.POST, request.FILES)
        if formset.is_valid():
            formset.save()
            messages.success(request, "Assignments successfully saved.")
        return redirect('index')
    else:
        if user.is_in_group("student"):
            AssignmentFormSet.form = ReadOnlyAssignmentForm
            formset = AssignmentFormSet(queryset=Assignment.objects.filter(Q(students__user=request.user) and
                                                                           Q(course=course)).all())
        else:
            formset = AssignmentFormSet(queryset=Assignment.objects.filter(course=course).all())
    if len(formset) == 0:
        messages.info(request, "There are no assignments for this course")
        return redirect('index')
    else:
        return render(request, 'course/see_assignments.html',
                      {'formset': formset, 'course': course, 'user_elearning': user})
Example #2
0
def see_assignments(request, id):
    user = get_current_user(request)
    course = Course.objects.get(id=id)
    can_delete = True if user == course.teacher or user in course.assistants.all(
    ) else False
    AssignmentFormSet = modelformset_factory(Assignment,
                                             fields=('id', 'name',
                                                     'description', 'deadline',
                                                     'type', 'group'),
                                             can_delete=can_delete,
                                             form=AssignmentForm,
                                             max_num=0)
    if request.method == 'POST':
        formset = AssignmentFormSet(request.POST, request.FILES)
        if formset.is_valid():
            formset.save()
            messages.success(request, "Assignments successfully saved.")
        return redirect('index')
    else:
        if user.is_in_group("student"):
            AssignmentFormSet.form = ReadOnlyAssignmentForm
            formset = AssignmentFormSet(queryset=Assignment.objects.filter(
                Q(students__user=request.user) and Q(course=course)).all())
        else:
            formset = AssignmentFormSet(queryset=Assignment.objects.filter(
                course=course).all())
    if len(formset) == 0:
        messages.info(request, "There are no assignments for this course")
        return redirect('index')
    else:
        return render(request, 'course/see_assignments.html', {
            'formset': formset,
            'course': course,
            'user_elearning': user
        })
Example #3
0
def see_courses(request):
    user = get_current_user(request)
    user_is_admin = request.user.groups.filter(name='admin').exists()
    can_delete = True if user_is_admin else False
    used_form = AdminEditCourseForm if user_is_admin else TeacherEditCourseForm
    if user_is_admin:
        CourseFormSet = modelformset_factory(Course, fields=('name', 'subject', 'teacher', 'assistants', 'students'),
                                             can_delete=can_delete, form=used_form, max_num=1)
    else:
        CourseFormSet = modelformset_factory(Course, fields=('name', 'subject', 'assistants', 'students'),
                                             can_delete=can_delete, form=used_form, max_num=1)
    if request.method == 'POST':
        formset = CourseFormSet(request.POST, request.FILES)
        if user_is_admin:
            if formset.is_valid():
                for form in formset:
                    course = form.save(commit=False)
                    # TODO get rid of this UGLY WAY
                    Enrollment.objects.filter(course=course).delete()
                    for student in form.clean_students():
                        Enrollment.objects.create(user=student, course=course)
                    AssistantCourse.objects.filter(course=course).delete()
                    for assistant in form.clean_assistants():
                        AssistantCourse.objects.create(user=assistant, course=course)
                    course.save()
                messages.success(request, "Courses successfully edited.")
            else:
                messages.error(request, str(formset.errors))
            return redirect('index')
        else:
            if formset.is_valid():
                for form in formset:
                    course = form.save(commit=False)
                    course.teacher = user
                    Enrollment.objects.filter(course=course).delete()
                    for student in form.clean_students():
                        Enrollment.objects.create(user=student, course=course)
                    AssistantCourse.objects.filter(course=course).delete()
                    for assistant in form.clean_assistants():
                        AssistantCourse.objects.create(user=assistant, course=course)
                    course.save()
                messages.success(request, "Courses successfully edited.")
            else:
                messages.error(request, str(formset.errors))

            return redirect('index')
    else:
        if user_is_admin:
            formset = CourseFormSet(queryset=Course.objects.all())
        else:
            formset = CourseFormSet(queryset=Course.objects.filter(teacher=user))
    return render(request, 'course/see_courses.html', {'formset': formset})
Example #4
0
def add_course(request):
    if request.method == 'POST':
        user = get_current_user(request)
        form = SimpleCourseForm(request.POST)
        if form.is_valid():
            course = Course.objects.create(name=form.cleaned_data['name'], subject=form.cleaned_data['subject'],
                                           teacher=user)
            create_forums_course(course)

            messages.success(request, "Course created")
            return redirect('index')
    else:
        form = SimpleCourseForm()

    return render(request, 'course/add_course.html', {'form': form})
Example #5
0
def add_course(request):
    if request.method == 'POST':
        user = get_current_user(request)
        form = SimpleCourseForm(request.POST)
        if form.is_valid():
            course = Course.objects.create(
                name=form.cleaned_data['name'],
                subject=form.cleaned_data['subject'],
                teacher=user)
            create_forums_course(course)

            messages.success(request, "Course created")
            return redirect('index')
    else:
        form = SimpleCourseForm()

    return render(request, 'course/add_course.html', {'form': form})
Example #6
0
def index(request):
    user = get_current_user(request)

    if user.is_student():
        courses = Course.objects.filter(students__user=request.user).all()
        # enrollments = Enrollment.objects.filter(user=user).all()
        # courses = []
        # for e in enrollments:
        #     courses.append((e.course, e.enroll_date))
    elif user.is_teacher():
        courses = Course.objects.filter(teacher=user).all()
    elif user.is_assistant():
        courses = Course.objects.filter(assistants__user=request.user).all()
    else:
        courses = Course.objects.all()

    rc = RequestContext(request, {"user_elearning": user, "courses": courses})
    return render(request, 'index.html', context_instance=rc)
Example #7
0
def index(request):
    user = get_current_user(request)

    if user.is_student():
        courses = Course.objects.filter(students__user=request.user).all()
        # enrollments = Enrollment.objects.filter(user=user).all()
        # courses = []
        # for e in enrollments:
        #     courses.append((e.course, e.enroll_date))
    elif user.is_teacher():
        courses = Course.objects.filter(teacher=user).all()
    elif user.is_assistant():
        courses = Course.objects.filter(assistants__user=request.user).all()
    else:
        courses = Course.objects.all()

    rc = RequestContext(request, {"user_elearning": user, "courses": courses})
    return render(request, "index.html", context_instance=rc)
Example #8
0
def add_assignment(request, id):
    if request.method == "POST":
        form = AssignmentForm(request.POST)
        if form.is_valid():
            assignment = form.save(commit=False)
            assignment.course = Course.objects.get(id=id)
            assignment.save()
            messages.success(request, "Assignment created")
        else:
            messages.error(request, "Assignment not created")
        return redirect('index')
    else:
        course = Course.objects.get(id=id)
        user = get_current_user(request)
        if course.teacher != user and user not in course.assistants.all():
            messages.error(request, "You are not allowed to add an assignment to this course.")
            return redirect('index')
        form = AssignmentForm()
        return render(request, 'course/add_assignment.html', {'form': form, 'course': course})
Example #9
0
def add_assignment(request, id):
    if request.method == "POST":
        form = AssignmentForm(request.POST)
        if form.is_valid():
            assignment = form.save(commit=False)
            assignment.course = Course.objects.get(id=id)
            assignment.save()
            messages.success(request, "Assignment created")
        else:
            messages.error(request, "Assignment not created")
        return redirect('index')
    else:
        course = Course.objects.get(id=id)
        user = get_current_user(request)
        if course.teacher != user and user not in course.assistants.all():
            messages.error(
                request,
                "You are not allowed to add an assignment to this course.")
            return redirect('index')
        form = AssignmentForm()
        return render(request, 'course/add_assignment.html', {
            'form': form,
            'course': course
        })
Example #10
0
def see_courses(request):
    user = get_current_user(request)
    user_is_admin = request.user.groups.filter(name='admin').exists()
    can_delete = True if user_is_admin else False
    used_form = AdminEditCourseForm if user_is_admin else TeacherEditCourseForm
    if user_is_admin:
        CourseFormSet = modelformset_factory(Course,
                                             fields=('name', 'subject',
                                                     'teacher', 'assistants',
                                                     'students'),
                                             can_delete=can_delete,
                                             form=used_form,
                                             max_num=1)
    else:
        CourseFormSet = modelformset_factory(Course,
                                             fields=('name', 'subject',
                                                     'assistants', 'students'),
                                             can_delete=can_delete,
                                             form=used_form,
                                             max_num=1)
    if request.method == 'POST':
        formset = CourseFormSet(request.POST, request.FILES)
        if user_is_admin:
            if formset.is_valid():
                for form in formset:
                    course = form.save(commit=False)
                    # TODO get rid of this UGLY WAY
                    Enrollment.objects.filter(course=course).delete()
                    for student in form.clean_students():
                        Enrollment.objects.create(user=student, course=course)
                    AssistantCourse.objects.filter(course=course).delete()
                    for assistant in form.clean_assistants():
                        AssistantCourse.objects.create(user=assistant,
                                                       course=course)
                    course.save()
                messages.success(request, "Courses successfully edited.")
            else:
                messages.error(request, str(formset.errors))
            return redirect('index')
        else:
            if formset.is_valid():
                for form in formset:
                    course = form.save(commit=False)
                    course.teacher = user
                    Enrollment.objects.filter(course=course).delete()
                    for student in form.clean_students():
                        Enrollment.objects.create(user=student, course=course)
                    AssistantCourse.objects.filter(course=course).delete()
                    for assistant in form.clean_assistants():
                        AssistantCourse.objects.create(user=assistant,
                                                       course=course)
                    course.save()
                messages.success(request, "Courses successfully edited.")
            else:
                messages.error(request, str(formset.errors))

            return redirect('index')
    else:
        if user_is_admin:
            formset = CourseFormSet(queryset=Course.objects.all())
        else:
            formset = CourseFormSet(queryset=Course.objects.filter(
                teacher=user))
    return render(request, 'course/see_courses.html', {'formset': formset})