def quiz(): questions = db.collection(u'quiz').stream() user_doc = db.collection(u'users').document(current_user.username) user_correct_answers = user_doc.get().to_dict()['num_of_correct_answers'] if user_correct_answers >= 3: flash("<i class='fa fa-exclamation-circle'></i>\tYou've already won the free tickets.", 'flash-success') return redirect(url_for('index')) elif user_correct_answers == 0: if request.method == 'POST': d = {} num_correct_answers = 0 for q in questions: qid = q.id d = {qid: request.form[qid]} for i in d.keys(): q_doc = db.collection(u'quiz').document(i).get().to_dict() if d[i] == q_doc['correct_answer']: num_correct_answers += 1 user_doc.update({u'num_of_correct_answers': num_correct_answers}) if num_correct_answers >= 3: flash(f"<i class='fa fa-check circle'></i>\tCongratulations! You've just won 2 free tickets. Check your email for more details.", 'flash-success') return redirect(url_for('index')) else: flash(f"<i class='fa fa-exclamation-circle'></i>\tHard luck! You answered {num_correct_answers} questions correctly. Free tickets are given to people who got 3 questions or more correct.") return redirect(url_for('index')) else: flash("<i class='fa fa-exclamation-circle'></i>\tYou've already attempted this quiz once.", 'flash-alert') return redirect(url_for('index')) return render_template('quiz.html', questions=questions)
def discuss_post(post_id): discussions = db.collection(u'discussions') post = discussions.document(post_id).get().to_dict() title = post['title'] content = post['content'] posted_by_user = post['posted_by_user'] posting_time = post['posting_time'] comments_on_post = db.collection(u'comments').where( u'on_post_id', u'==', post_id).stream() form = CommentForm() if form.validate_on_submit(): db.collection(u'comments').add({ u'on_post_id': post_id, u'comment_author': current_user.username, u'comment': form.comment.data, u'likes': 0, u'liked_by': list(), }) return redirect(url_for('discussion.discuss') + post_id) return render_template('post.html', title=title, content=content, posted_by_user=posted_by_user, comments_on_post=comments_on_post, form=form, time=posting_time)
def register(): form = RegisterForm() if form.validate_on_submit(): hashed_password = generate_password_hash(form.password.data, method='sha256') new_user = User(username=form.username.data, email=form.email.data, password=hashed_password) sql_db.session.add(new_user) sql_db.session.commit() db.collection(u'users').document(form.username.data).set({ u'name': form.name.data, u'username': form.username.data, u'email': form.email.data, u'num_of_correct_answers': 0, }) return redirect(url_for('auth.login')) return render_template('register.html', form=form)
def create_discussion(): form = NewDiscussionForm() if form.validate_on_submit(): db.collection(u'discussions').add({ u'title': form.title.data, u'description': form.description.data, u'content': form.content.data, u'posted_by_user': current_user.username, u'posting_time': datetime.now( timezone('Asia/Calcutta')).strftime("%I:%M %p, %d %B %Y") }) return redirect(url_for('discussion.discuss')) return render_template('create_discussion.html', form=form)
def like_comment(cid): comment = db.collection(u'comments').document(cid) comment_get = comment.get().to_dict() likes = comment_get['likes'] liked_by = comment_get['liked_by'] liked_by.append(current_user.username) comment.update({ u'likes': likes + 1, u'liked_by': liked_by, }) return redirect( url_for('discussion.discuss_post', post_id=comment_get['on_post_id']))
def discuss(): discussions = db.collection(u'discussions').stream() return render_template('discuss.html', discussions=discussions)