Изменены css и html файлы страницы diary, добавлено корректное отображение вопросов, возможность отвечать на них и редактировать ответы.

This commit is contained in:
mrmur 2022-04-08 22:48:49 +05:00
parent 2040c3fde6
commit c00724f5e2
10 changed files with 233 additions and 85 deletions

Binary file not shown.

8
forms/answer_quest.py Normal file
View File

@ -0,0 +1,8 @@
from flask_wtf import FlaskForm
from wtforms import StringField, SubmitField
from wtforms.validators import DataRequired
class AnswerQuest(FlaskForm):
answer = StringField('Ваш ответ:', validators=[DataRequired()])
submit = SubmitField('Сохранить')

45
main.py
View File

@ -13,6 +13,7 @@ from data.diary_post import DiaryPost
from data.questions import Quest
from data.users import User
from forms.add_question import AddQuest
from forms.answer_quest import AnswerQuest
from forms.login import LoginForm
from forms.post import AddPost
from forms.recovery import RecoveryForm, Conf, Finish
@ -69,6 +70,35 @@ def main_page():
return render_template('base.html', title='moona')
@app.route('/answer_quest/<int:id>', methods=['GET', 'POST'])
def answer_quest(id):
session = db_session.create_session()
answer = AnswerQuest()
quest = session.query(Quest).filter(Quest.id == id).first()
if request.method == 'GET':
if session.query(Answer).filter(Answer.id_question == id).first():
ans_quest = session.query(Answer).filter(Answer.id_question == id).first()
answer.answer.data = ans_quest.answer
if answer.validate_on_submit():
if not session.query(Answer).filter(Answer.id_question == id).first():
answer_user = Answer(id_question=id,
answer=answer.answer.data,
user=current_user.id,
date=datetime.date.today())
quest.one_used = True
if len(session.query(Answer).filter(Answer.id_question == id).all()) == len(session.query(User).all()):
quest.all_used = True
session.add(answer_user)
session.commit()
return redirect('/diary')
else:
ans_quest = session.query(Answer).filter(Answer.id_question == id).first()
ans_quest.answer = answer.answer.data
session.commit()
return redirect('/diary')
return render_template('answer_quest.html', tetle='Ответ на вопрос', form=answer, message='', quest=quest)
@app.route('/delete_quest/<int:id>', methods=['GET', 'POST'])
def delete_quest(id):
session = db_session.create_session()
@ -212,9 +242,18 @@ def diary():
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())
ans = []
for i in post_quest:
ans_id = db_sess.query(Answer).filter(Answer.id_question == i.id and Answer.user == current_user.id).first()
if ans_id:
ans.append(ans_id)
if ans:
ls = [i.id_question for i in ans]
else:
posts = None
return render_template('diary.html', title='moona', my_post=posts, message='', question=post_quest)
return render_template('diary.html', title='moona', my_post=posts, message='', question=post_quest[::-1],
ans=ans[::-1], ls=ls, ln=len(ans))
@app.route('/logout')
@ -255,7 +294,6 @@ def confirmation():
send_msg = True
if conf.validate_on_submit():
if str(conf.code_key.data).strip() == str(secret_code).strip():
print(secret_code)
if form.photo.data:
user = User(
name=form.name.data,
@ -275,7 +313,8 @@ def confirmation():
age=form.age.data,
about=form.about.data,
email=form.email.data,
role='user'
role='user',
photo='../static/img/Икона.png'
)
user.set_password(form.password.data)
session.add(user)

View File

@ -18,7 +18,6 @@ text-align: center;
width: 70%;
}
#all_my_post {
width: 35%;
margin-left: auto;
margin-right: auto;
}
@ -48,4 +47,24 @@ margin-left: 85%;
}
#edit_btn {
background-color: #c5f1ff;
}
#row2 {
width: 35%;
}
#all_my_question {
width: 30%;
}
#row1 {
width: 35%;
}
.question, .my_post {
background-color:#7fc3ff;
border-radius: 22px;
width: 90%;
margin-left: 5%;
}
.is_ans {
background-color:#ddefff;
border:2px solid #FFFFFF;
border-radius: 25px;
}

View File

@ -2,7 +2,15 @@
margin-left: auto;
margin-right: auto;
width: 50%;
.add_q{
width: 50%;
}
}
.h_q {
text-align: center;
}
form {
width: 60%;
margin-left: auto;
margin-right: auto;
}

BIN
static/img/MoonCcircl.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

View File

@ -1,5 +1,5 @@
<link rel="stylesheet" href="../static/css/diary.css">
<link rel="stylesheet" href="../static/css/add_question.css">
<link rel="stylesheet" href="../static/css/question.css">
{% extends "base.html" %}
{% block content %}

View File

@ -0,0 +1,43 @@
<link rel="stylesheet" href="../static/css/diary.css">
<link rel="stylesheet" href="../static/css/question.css">
{% extends "base.html" %}
{% block content %}
{% if current_user.is_authenticated %}
<div class="add_q">
<h1 class="h_q">Ответьте на вопрос</h1>
<div class="alert alert-primary" role="alert"
style="background-color:#ddefff; border:2px solid #FFFFFF; border-radius: 25px;width: 60%;text-align:
center;margin-left: auto;
margin-right: auto;">
<h2 class="h_q">{{quest.quest}}</h2>
</div>
<form action="" method="POST" enctype="multipart/form-data">
{{ form.hidden_tag() }}
{{ form.csrf_token }}
<p>
{{ form.answer.label }}<br>
{{ form.answer(class="form-control") }}<br>
{% for error in form.answer.errors %}
<div class="alert alert-danger" role="alert">
{{ error }}
</div>
{% endfor %}
</p>
<p>{{ form.submit(type="submit", class="btn btn-primary") }}</p>
{% if message != '' %}
<div class="alert alert-danger" role="alert">{{ message }}</div>
{% endif %}
</form>
</div>
{% else %}
<div class="bad_user">
<div class="bad_centre">
<h1 id="hz1">Вы не авторизованы в системе</h1>
<h2 id="hz2">Поэтому вам не доступна эта страница</h2>
<p></p>
<img id="image" src="../static/img/Надпись Moona без фона.png"></div>
</div>
{% endif %}
{% endblock %}

View File

@ -7,6 +7,7 @@
href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css"
integrity="sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh"
crossorigin="anonymous">
<link rel="icon" href="../static/img/MoonCcircl.ico" type="image/x-icon">
<link href="https://fonts.googleapis.com/css2?family=Comfortaa:wght@700&family=Montserrat+Alternates:wght@600&display=swap" rel="stylesheet">
<link rel="stylesheet" href="../static/css/base.css">
<title>{{title}}</title>

View File

@ -3,92 +3,122 @@
{% block content %}
{% if current_user.is_authenticated %}
<div>
<a href="/add_post" id="add_post" class="btn btn-primary" style="background-color:#1daff0"><strong>Добавить
<a href="/add_post" id="add_post" class="btn btn-primary"
style="background-color:#1daff0;border-radius: 15px;"><strong>Добавить
запись</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">
<details>
<summary style="color:#ffffff">{% if item.name != None %}
<h2 class="card-title" id="my_post_zag" style="color:#c5f1ff">{{item.name}}</h2>
</div>
<table>
<td id="row1">
</td>
<td id="row2">
<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">
<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 %}
<strong>{{item2}}</strong>
{% endfor %}
</div>
{% 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 %}
<strong>{{item2}}</strong>
{% endfor %}
</div>
{% endif %}
{% if item.nig_emot != None %}
<div class="nig_emot">
{% for item2 in item.nig_emot %}
<strong>{{item2}}</strong>
{% endfor %}
</div>
{% endif %}
{% if item.case != None %}
<div class="case">
{% for item2 in item.case %}
<strong>{{item2}}</strong>
{% endfor %}
</div>
{% endif %}
{% if item.photo != None %}
<p></p>
<div class="photo">
<img width="90%" src="{{ item.photo }}">
</div>
<p></p>
{% endif %}
{% if item.link != None %}
{% for item2 in item.link %}
<div class="link">
<a href="{{ item2 }}">Ссылка {{ loop.index }}</a>
</div>
{% endfor %}
{% endif %}
{% if item.public == 1 or item.public == 'True' %}
<div class="alert alert-success" role="alert" id="pub">Запись опубликована</div>
{% else %}
<div class="alert alert-danger" role="alert" id="ptivate">Запись приватная</div>
{% endif %}
<div class="my_author" style="style=position:absolute; width:148px; height:44px; left:255px; -webkit-border-radius:
{% if item.nig_emot != None %}
<div class="nig_emot">
{% for item2 in item.nig_emot %}
<strong>{{item2}}</strong>
{% endfor %}
</div>
{% endif %}
{% if item.case != None %}
<div class="case">
{% for item2 in item.case %}
<strong>{{item2}}</strong>
{% endfor %}
</div>
{% endif %}
{% if item.photo != None %}
<p></p>
<div class="photo">
<img width="90%" src="{{ item.photo }}"
style="border-radius: 22px; border:2px solid #FFFFFF;">
</div>
<p></p>
{% endif %}
{% if item.link != None %}
{% for item2 in item.link %}
<div class="link">
<a href="{{ item2 }}">Ссылка {{ loop.index }}</a>
</div>
{% endfor %}
{% endif %}
{% if item.public == 1 or item.public == 'True' %}
<div style="border-radius: 22px;" class="alert alert-success" role="alert" id="pub">Запись
опубликована
</div>
{% else %}
<div style="border-radius: 22px;" class="alert alert-danger" role="alert" id="ptivate">Запись
приватная
</div>
{% endif %}
<div class="my_author" style="style=position:absolute; width:148px; height:44px; left:255px; -webkit-border-radius:
22px;-moz-border-radius: 22px;border-radius: 22px; border:2px solid #FFFFFF; background-color:#1daff0; top:
98px;"><img src="../{{ current_user.photo }}" width="40" height="40" style="border-radius: 50%">
<strong style="color: #ffffff">{{ current_user.name }}</strong>
98px;"><img src="../{{ current_user.photo }}" width="40" height="40" style="border-radius: 22px">
<strong style="color: #ffffff">{{ current_user.name }}</strong>
</div>
<strong style="color:#ffffff">{{item.date}}</strong>
<div>
<a style="border-radius: 15px;" href="/post/{{ item.id }}" class="btn" id="edit_btn">
Изменить
</a>
<a style="border-radius: 15px;" href="/post_deleted/{{ item.id }}" class="btn btn-danger">
Удалить
</a>
</div>
</div>
{% endfor %}
{% else %}
<div class="bad_centre" style="background-color:#1daff0; border-radius: 22px;color:#ffffff">
<h1 class="hz1">Ничего не нашлось :с</h1>
</div>
{% endif %}
</div>
<strong style="color:#ffffff">{{item.date}}</strong>
<div>
<a href="/post/{{ item.id }}" class="btn" id="edit_btn">
Изменить
</a>
<a href="/post_deleted/{{ item.id }}" class="btn btn-danger">
Удалить
</a>
</td>
<td id="all_my_question">
<h1 class="my_post_zag">Вопросы дня</h1>
<div class="my_post">
<div class="question">
{% for item in question %}
<a href="/answer_quest/{{item.id}}" class="btn">
{% if item.id in ls %}
<div class="is_ans">
<strong>{{item.quest}}</strong>
<div class="alert alert-success" role="alert" style="border-radius: 25px;">Ответ есть</div>
<strong>{{ans[ln - loop.index0].answer}}</strong>
</div>
{% else %}
<div class="is_ans">
<strong>{{item.quest}}</strong>
<div class="alert alert-danger" role="alert" style="border-radius: 25px;">Ответа нет</div>
</div>
{% endif %}
</a>
{% endfor %}
</div>
</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>
</td>
</table>
{% else %}
<div class="bad_user">
<div class="bad_centre">