コード例 #1
0
ファイル: views.py プロジェクト: delitamakanda/elearning
def add_review(request, subject):
    subject = get_object_or_404(Course, slug=subject)
    form = ReviewForm(request.POST)
    if form.is_valid():
        rating = form.cleaned_data['rating']
        comment = form.cleaned_data['comment']
        review = Review()
        review.course = subject
        review.user_name = request.user
        review.rating = rating
        review.comment = comment
        review.pub_date = datetime.datetime.now()
        review.save()
        request.user.profile.get_award_points(15)
        possibly_award_badge("reviews_course", user=request.user)
        messages.success(request, 'Review added.')
        return HttpResponseRedirect(
            reverse('courses:course_detail', args=(subject.slug, )))
    else:
        messages.warning(request, 'Error Occured.')
        return HttpResponseRedirect(
            reverse('courses:course_detail', args=(subject.slug, )))
    return render(request, 'courses/course/detail.html', {
        'subject': subject,
        'form': form
    })
コード例 #2
0
 def form_valid(self, form):
     result = super(TeacherRegistrationView, self).form_valid(form)
     cd = form.cleaned_data
     user = authenticate(username=cd['username'], password=cd['password1'])
     user.profile.get_award_points(3)
     possibly_award_badge("teacher_signup", user=user)
     mail_admins("{} is sign up ".format(user.username), "check your admin on myelearning")
     login(self.request, user)
     return result
コード例 #3
0
def take_quiz(request, pk):
    quiz = get_object_or_404(Quiz, pk=pk)
    student = request.user.student

    if student.quizzes.filter(pk=pk).exists():
        return render(request, 'students/student/taken_quiz_list.html')

    total_questions = quiz.questions.count()
    unanswered_questions = student.get_unanswered_questions(quiz)
    total_unanswered_questions = unanswered_questions.count()
    progress = 100 - round(
        ((total_unanswered_questions - 1) / total_questions) * 100)
    question = unanswered_questions.first()

    if request.method == 'POST':
        form = TakeQuizForm(question=question, data=request.POST)
        if form.is_valid():
            with transaction.atomic():
                student_answer = form.save(commit=False)
                student_answer.student = student
                request.user.profile.get_award_points(10)
                possibly_award_badge("take_quiz", user=request.user)
                student_answer.save()
                if student.get_unanswered_questions(quiz).exists():
                    return redirect('students:take_quiz', pk)
                else:
                    correct_answers = student.quiz_answers.filter(
                        answer__question__quiz=quiz,
                        answer__is_correct=True).count()
                    score = round((correct_answers / total_questions) * 100.0,
                                  2)
                    TakenQuiz.objects.create(student=student,
                                             quiz=quiz,
                                             score=score)
                    if score < 50.0:
                        messages.warning(
                            request,
                            'Good luck for next time! Your score for this quiz %s was %s.'
                            % (quiz.name, score))
                    else:
                        messages.success(
                            request,
                            'Fantastic! You completed the quiz %s with success! Your scored %s points.'
                            % (quiz.name, score))
                    return redirect('students:student_quiz_list')
    else:
        form = TakeQuizForm(question=question)

    return render(request, 'students/student/take_quiz_form.html', {
        'quiz': quiz,
        'question': question,
        'form': form,
        'progress': progress
    })
コード例 #4
0
ファイル: views.py プロジェクト: delitamakanda/elearning
def list_videos(request):
    subjects = Subject.objects.all()
    videos = []
    q = None
    max_lengths = [10, 15, 20, 25, 30, 50]
    results = None
    if 'q' and 'results' in request.GET:
        q = request.GET['q'] + ' programming'  # mostly tech targeted
        results = request.GET['results']
        request.user.profile.get_award_points(5)
        possibly_award_badge("list_videos", user=request.user)
        videos = youtube_search(q, results)
    return render(
        request, 'videos/list.html', {
            'videos': videos,
            'q': q,
            'results': results,
            'subjects': subjects,
            'max_lengths': max_lengths
        })
コード例 #5
0
ファイル: views.py プロジェクト: delitamakanda/elearning
def edit(request):
    if request.method == "POST":
        user_form = UserEditForm(instance=request.user, data=request.POST)
        profile_form = ProfileEditForm(instance=request.user.profile,
                                       data=request.POST,
                                       files=request.FILES)
        if user_form.is_valid() and profile_form.is_valid():
            user = user_form.save(commit=False)
            profile = profile_form.save(commit=False)
            request.user.profile.get_award_points(5)
            possibly_award_badge("edit_profile", user=request.user)
            user.save()
            profile.save()
            messages.success(request, _('Profile updated successfully'))
        else:
            messages.error(request, _('Error updating profile'))
    else:
        user_form = UserEditForm(instance=request.user)
        profile_form = ProfileEditForm(instance=request.user.profile)
    return render(request, 'registration/edit.html', {
        'user_form': user_form,
        'profile_form': profile_form
    })
コード例 #6
0
 def form_valid(self, form):
     self.course = form.cleaned_data['course']
     self.course.students.add(self.request.user)
     self.request.user.profile.get_award_points(3)
     possibly_award_badge("enroll_course", user=self.request.user)
     return super(StudentEnrollCourseView, self).form_valid(form)