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 })
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
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 })
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 })
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 })
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)