Пример #1
0
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)
Пример #2
0
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)
Пример #3
0
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)
Пример #4
0
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)
Пример #5
0
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']))
Пример #6
0
def discuss():
    discussions = db.collection(u'discussions').stream()
    return render_template('discuss.html', discussions=discussions)