def QuizSubmitView(request, course_slug, lesson_slug): if request.method == 'POST': course = Course.objects.get(slug=course_slug) lesson = Lesson.objects.get(slug=lesson_slug) quiz = Quiz.objects.get(lesson__slug=lesson.slug) quizquestionanswers = Question.objects.filter( quiz__title=quiz.title)[:10] quizscore = 0 quizform = request.POST.copy() processedquiz = {} for quizquestionanswer in quizquestionanswers: processedquiz[f'q{quizquestionanswer.id}'] = quizform[f'q{quizquestionanswer.id}'] if processedquiz[f'q{quizquestionanswer.id}'] == quizquestionanswer.answer: quizscore += 1 else: quizscore += 0 try: quizparticipation = QuizParticipation.objects.get( quiz__title=quiz.title, participator__username=request.user.username) if quizparticipation: print(quizparticipation) schedule_next = quizparticipation.participate_next - \ datetime.datetime.now(tz=timezone.utc) if schedule_next.days > 7: quizparticipation.quiz = quiz quizparticipation.quiz_score = quizscore quizparticipation.participate_date = datetime.datetime.now( tz=timezone.utc) quizparticipation.participate_next = datetime.datetime.now(tz=timezone.utc) + \ datetime.timedelta(days=7) quizparticipation.save() messages.success( request, 'Thank you for your reparticipation') notification = Notification() notification.title = f'Thankyou for your participation in { quiz.title }' notification.message = f'You scored: {quizparticipation.quiz_score}. You can participate after {quizparticipation.participate_next}' notification.user = request.user notification.save() return redirect('courses:lesson-detail', course_slug, lesson_slug) else: messages.success( request, 'You can not retake within 7 days') return redirect('courses:lesson-detail', course_slug, lesson_slug) except: quizparticipation = QuizParticipation() quizparticipation.quiz = quiz quizparticipation.quiz_score = quizscore quizparticipation.participate_date = datetime.datetime.now( tz=timezone.utc) quizparticipation.participate_next = datetime.datetime.now(tz=timezone.utc) + \ datetime.timedelta(days=7) quizparticipation.participator = request.user quizparticipation.save() messages.success(request, 'Thank you for your participation') notification = Notification() notification.title = f'Thankyou for your participation in { quiz.title }' notification.message = f'You scored: {quizparticipation.quiz_score}. You can participate after {quizparticipation.participate_next}' notification.user = request.user notification.save() return redirect('courses:lesson-detail', course_slug, lesson_slug)
def create_notification(request, form): """Create a new notification for the post's author about new comment.""" # validate comment user is not the same than post user post = form.cleaned_data.get('post') if request.user != User.objects.get(pk=post.user.id): notification = Notification() notification.origin_user = request.user notification.target_user = User.objects.get(pk=post.user.id) notification.message = f'@{request.user} ' + _( 'commented in your post:') + f' {post.title}' notification.url = reverse('post', args=[post.id]) notification.save()
def create_notification(user): """Notify a user about its new summary report.""" notification = Notification() notification.target_user = user sr = '' if user.summary_reports == 'D': sr = 'Your daily summary report is here.' elif user.summary_reports == 'W': sr = 'Your weekly summary report is here.' elif user.summary_reports == 'M': sr = 'Your monthly summary report is here.' notification.message = sr notification.url = reverse('summary_report') notification.save()
def emit(self, record): from django.contrib.auth.models import User from notifications.models import Notification for user in User.objects.all(): if user.has_perm('auth.logging_notifications'): notif = Notification() notif.user = user notif.title = "%s [%s:%s]" % (record.levelname, record.funcName, record.lineno) notif.level = str([ item[0] for item in Notification.LEVEL_CHOICES if item[1] == record.levelname ][0]) message = record.getMessage() if record.exc_text: message += "\n\n" message = message + record.exc_text notif.message = message notif.save()