Заготовка для отображения ежедневных вопросов

This commit is contained in:
mrmur 2022-04-07 21:13:39 +05:00
parent 8e4edce065
commit 2040c3fde6
8 changed files with 103 additions and 32 deletions

View File

@ -9,6 +9,8 @@ class Answer(SqlAlchemyBase, UserMixin):
id = sqlalchemy.Column(sqlalchemy.Integer,
primary_key=True, autoincrement=True)
id_question = sqlalchemy.Column(sqlalchemy.Integer,
sqlalchemy.ForeignKey("questions.id"), nullable=True)
answer = sqlalchemy.Column(sqlalchemy.Text, nullable=True)
user = sqlalchemy.Column(sqlalchemy.Integer,
sqlalchemy.ForeignKey("users.id"), nullable=True)

View File

@ -10,3 +10,5 @@ class Quest(SqlAlchemyBase, UserMixin):
id = sqlalchemy.Column(sqlalchemy.Integer,
primary_key=True, autoincrement=True)
quest = sqlalchemy.Column(sqlalchemy.Text, nullable=False)
all_used = sqlalchemy.Column(sqlalchemy.Boolean, nullable=True, default=False)
one_used = sqlalchemy.Column(sqlalchemy.Boolean, nullable=True, default=False)

Binary file not shown.

33
main.py
View File

@ -8,6 +8,7 @@ from flask_restful import abort
from werkzeug.utils import redirect
from data import db_session
from data.answer_quest import Answer
from data.diary_post import DiaryPost
from data.questions import Quest
from data.users import User
@ -68,11 +69,23 @@ def main_page():
return render_template('base.html', title='moona')
@app.route('/delete_quest/<int:id>', methods=['GET', 'POST'])
def delete_quest(id):
session = db_session.create_session()
pos = session.query(Quest).filter(Quest.id == id).first()
if pos:
session.delete(pos)
session.commit()
else:
abort(404)
return redirect('/add_question')
@app.route('/add_question', methods=['GET', 'POST'])
def add_question():
que = AddQuest()
if que.validate_on_submit():
session = db_session.create_session()
if que.validate_on_submit():
if que.quest.data in list(map(lambda x: x.quest, session.query(Quest).all())):
return render_template('add_question.html', message='Такой вопрос уже есть!', title='Добавить вопрос',
form=que)
@ -81,7 +94,8 @@ def add_question():
session.add(new_que)
session.commit()
que.quest.data = ''
return render_template('add_question.html', message='', title='Добавить вопрос', form=que)
return render_template('add_question.html', message='', title='Добавить вопрос', form=que,
question=session.query(Quest).all())
@app.route('/post/<int:id>', methods=['GET', 'POST'])
@ -147,11 +161,14 @@ def add_post():
pos = AddPost()
session = db_session.create_session()
if pos.validate_on_submit():
try:
id = session.query(DiaryPost).order_by(DiaryPost.id)[-1].id
if id:
id += 1
else:
id = -1
except Exception:
id = -1
if pos.photo.data:
diart_pos = DiaryPost(name=pos.name.data,
text=pos.text.data,
@ -185,9 +202,19 @@ def diary():
db_sess = db_session.create_session()
if current_user.is_authenticated:
posts = db_sess.query(DiaryPost).filter(DiaryPost.author == current_user.id).all()
quest = db_sess.query(Answer).filter(Answer.user == current_user.id).all()
days_reg = current_user.data_reg - datetime.date.today()
days_reg = abs(days_reg.days) + 1
if quest:
post_quest = db_sess.query(Quest).filter(Quest.id.in_([i.id_question for i in quest])).all()
else:
post_quest = []
while len(post_quest) < days_reg:
post_quest.append(
db_sess.query(Quest).filter(Quest.id.notin_([i.id for i in post_quest])).first())
else:
posts = None
return render_template('diary.html', title='moona', my_post=posts, message='')
return render_template('diary.html', title='moona', my_post=posts, message='', question=post_quest)
@app.route('/logout')

Binary file not shown.

After

Width:  |  Height:  |  Size: 141 KiB

View File

@ -0,0 +1,8 @@
.all_div {
margin-left: auto;
margin-right: auto;
width: 50%;
}
.h_q {
text-align: center;
}

View File

@ -1,10 +1,12 @@
<link rel="stylesheet" href="../static/css/diary.css">
<link rel="stylesheet" href="../static/css/add_question.css">
{% extends "base.html" %}
{% block content %}
{% if current_user.is_authenticated and (current_user.role == 'admin' or current_user.role == 'moder') %}
<div>
<h1>Введите новый вопрос</h1>
<div class="all_div">
<div class="add_q">
<h1 class="h_q">Введите новый вопрос</h1>
<form action="" method="POST" enctype="multipart/form-data">
{{ form.hidden_tag() }}
{{ form.csrf_token }}
@ -22,6 +24,20 @@
<div class="alert alert-danger" role="alert">{{ message }}</div>
{% endif %}
</form>
</div>
<div class="edit_q">
<details>
<summary>
Все вопросы
</summary>
{% for item in question %}
<div class="alert alert-primary" role="alert">
<strong>{{item.quest}}</strong>
<a href="/delete_quest/{{item.id}}" class="alert alert-danger" role="alert"><strong>Удалить</strong></a>
</div>
{% endfor %}
</details>
</div>
</div>
{% else %}
<div class="bad_user">

View File

@ -8,14 +8,18 @@
запись</strong></a>
</div><h1 class="my_post_zag">Мои мысли</h1>
<div id="all_my_post">
{% if my_post != [] %}
{% for item in my_post %}
<div class="card-body" id="my_post">
{% if item.name != None %}
<details>
<summary style="color:#ffffff">{% if item.name != None %}
<h2 class="card-title" id="my_post_zag" style="color:#c5f1ff">{{item.name}}</h2>
{% endif %}
</summary>
{% if item.text != None %}
<strong class="card-text" id="my_text" style="color:#ffffff">{{item.text}}</strong>
{% endif %}
</details>
{% if item.pos_emot != None %}
<div class="pos_emot">
{% for item2 in item.pos_emot %}
@ -72,6 +76,18 @@
</div>
</div>
{% endfor %}
{% else %}
<div class="bad_centre" style="background-color:#1daff0; border-radius: 22px;color:#ffffff">
<h1 class="hz1">Ничего не нашлось :с</h1>
</div>
{% endif %}
</div>
<div class="all_my_question">
{% for item in question %}
<div class="alert alert-primary" role="alert">
<strong>{{item.quest}}</strong>
</div>
{% endfor %}
</div>
{% else %}
<div class="bad_user">