diff --git a/data/answer_quest.py b/data/answer_quest.py index f6a318e..1e18f02 100644 --- a/data/answer_quest.py +++ b/data/answer_quest.py @@ -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) diff --git a/data/questions.py b/data/questions.py index 9d19261..ac55d20 100644 --- a/data/questions.py +++ b/data/questions.py @@ -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) diff --git a/db/moona_data.db b/db/moona_data.db index 8696ad6..e3c406a 100644 Binary files a/db/moona_data.db and b/db/moona_data.db differ diff --git a/main.py b/main.py index 832d895..b7e33e6 100644 --- a/main.py +++ b/main.py @@ -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/', 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() + session = db_session.create_session() if que.validate_on_submit(): - session = db_session.create_session() 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/', methods=['GET', 'POST']) @@ -147,10 +161,13 @@ def add_post(): pos = AddPost() session = db_session.create_session() if pos.validate_on_submit(): - id = session.query(DiaryPost).order_by(DiaryPost.id)[-1].id - if id: - id += 1 - else: + 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, @@ -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') diff --git a/static/app_image/post_photo/Duvakin_post_-1.png b/static/app_image/post_photo/Duvakin_post_-1.png new file mode 100644 index 0000000..06b2298 Binary files /dev/null and b/static/app_image/post_photo/Duvakin_post_-1.png differ diff --git a/static/css/add_question.css b/static/css/add_question.css new file mode 100644 index 0000000..31ba6ba --- /dev/null +++ b/static/css/add_question.css @@ -0,0 +1,8 @@ +.all_div { +margin-left: auto; + margin-right: auto; + width: 50%; +} +.h_q { +text-align: center; +} \ No newline at end of file diff --git a/templates/add_question.html b/templates/add_question.html index d82bfb4..5578bb1 100644 --- a/templates/add_question.html +++ b/templates/add_question.html @@ -1,27 +1,43 @@ + {% extends "base.html" %} {% block content %} {% if current_user.is_authenticated and (current_user.role == 'admin' or current_user.role == 'moder') %} -
-

Введите новый вопрос

-
- {{ form.hidden_tag() }} - {{ form.csrf_token }} -

- {{ form.quest.label }}
- {{ form.quest(class="form-control") }}
- {% for error in form.quest.errors %} -

- {% endfor %} -

-

{{ form.submit(type="submit", class="btn btn-primary") }}

- {% if message != '' %} - - {% endif %} -
+
+
+

Введите новый вопрос

+
+ {{ form.hidden_tag() }} + {{ form.csrf_token }} +

+ {{ form.quest.label }}
+ {{ form.quest(class="form-control") }}
+ {% for error in form.quest.errors %} +

+ {% endfor %} +

+

{{ form.submit(type="submit", class="btn btn-primary") }}

+ {% if message != '' %} + + {% endif %} +
+
+
+
+ + Все вопросы + + {% for item in question %} + + {% endfor %} +
+
{% else %}
diff --git a/templates/diary.html b/templates/diary.html index 9cbccd0..1095793 100644 --- a/templates/diary.html +++ b/templates/diary.html @@ -8,14 +8,18 @@ запись

Мои мысли

+ {% if my_post != [] %} {% for item in my_post %}
- {% if item.name != None %} -

{{item.name}}

- {% endif %} - {% if item.text != None %} - {{item.text}} - {% endif %} +
+ {% if item.name != None %} +

{{item.name}}

+ {% endif %} +
+ {% if item.text != None %} + {{item.text}} + {% endif %} +
{% if item.pos_emot != None %}
{% for item2 in item.pos_emot %} @@ -72,6 +76,18 @@
{% endfor %} + {% else %} +
+

Ничего не нашлось :с

+
+ {% endif %} +
+
+ {% for item in question %} + + {% endfor %}
{% else %}