From af3c59f92ebbd896b2fac7f23f57309f2c15efeb Mon Sep 17 00:00:00 2001 From: mrmur Date: Wed, 6 Apr 2022 19:52:20 +0500 Subject: [PATCH] =?UTF-8?q?=D0=A3=D0=BB=D1=83=D1=87=D1=88=D0=B5=D0=BD?= =?UTF-8?q?=D0=B0=20=D1=84=D0=B0=D0=B9=D0=BB=D0=BE=D0=B2=D0=B0=D1=8F=20?= =?UTF-8?q?=D1=81=D0=B8=D1=81=D1=82=D0=B5=D0=BC=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- data/diary_post.py | 18 ++-- db/moona_data.db | Bin 24576 -> 24576 bytes forms/post.py | 3 +- main.py | 65 +++++++++++++-- .../users_photo}/Duvakin_logo.png | Bin templates/diary.html | 6 +- templates/post.html | 78 +++++++++++++++++- 7 files changed, 152 insertions(+), 18 deletions(-) rename static/{img/user_photo => app_image/users_photo}/Duvakin_logo.png (100%) diff --git a/data/diary_post.py b/data/diary_post.py index d4f896b..a1a8687 100644 --- a/data/diary_post.py +++ b/data/diary_post.py @@ -9,13 +9,13 @@ class DiaryPost(SqlAlchemyBase, UserMixin): id = sqlalchemy.Column(sqlalchemy.Integer, primary_key=True, autoincrement=True) - name = sqlalchemy.Column(sqlalchemy.String, nullable=True) - text = sqlalchemy.Column(sqlalchemy.String, nullable=True) + name = sqlalchemy.Column(sqlalchemy.String, nullable=True, default=None) + text = sqlalchemy.Column(sqlalchemy.String, nullable=True, default=None) author = sqlalchemy.Column(sqlalchemy.Integer, - sqlalchemy.ForeignKey("users.id"), nullable=True) - date = sqlalchemy.Column(sqlalchemy.DateTime, nullable=True) - photo = sqlalchemy.Column(sqlalchemy.Text) - public = sqlalchemy.Column(sqlalchemy.Boolean, nullable=True) - pos_emot = sqlalchemy.Column(sqlalchemy.Text, nullable=True) - nig_emot = sqlalchemy.Column(sqlalchemy.Text, nullable=True) - link = sqlalchemy.Column(sqlalchemy.Text, nullable=True) + sqlalchemy.ForeignKey("users.id"), nullable=True, default=None) + date = sqlalchemy.Column(sqlalchemy.DateTime, nullable=True, default=None) + photo = sqlalchemy.Column(sqlalchemy.Text, default=None) + public = sqlalchemy.Column(sqlalchemy.Boolean, nullable=True, default=None) + pos_emot = sqlalchemy.Column(sqlalchemy.Text, nullable=True, default=None) + nig_emot = sqlalchemy.Column(sqlalchemy.Text, nullable=True, default=None) + link = sqlalchemy.Column(sqlalchemy.Text, nullable=True, default=None) diff --git a/db/moona_data.db b/db/moona_data.db index 51a15b623258b5733c989dff38bf88935ced0130..5f5e93102c413fe294c6505d7591994c641c923e 100644 GIT binary patch delta 235 zcmZoTz}Rqrae_3X+C&*=MzxIz%lKKu8TiFF3o7vP^E9S0@-e7tN;8`CrcYLvw~;L_ zNi4}sj!7&ih|kPTOizs|Elw>ejxWf_FUgPDTqED7z{K}uv!K9hKBuJ&-szl<`5e5w zycZ^2Y`U=TV#9@f7j`OK*bihjUTjjhut~u;KR+)~@xoe=w8F*a3)?R20t&+vPd?)> z?P{WHV5VSbX=Q3*WoW5qW@KV&Zmg%L4{?Y-+#&h}`Nbs=cj&v6mL+Cq=EZ}BjPwff L(l^iaPZt0H!;V{I delta 100 zcmZoTz}Rqrae_1>|3n#QM*fWn%lKKO8Th3)3n~cm^E4(g@-e7tN;8`C#!pt3w~^G- z(=RSbEXhpP&&*BNFD*_jiZ95>FUi;6TqED70MyjX&r@bz%IU};&Hw~yn`io`3jhE* C9~&e9 diff --git a/forms/post.py b/forms/post.py index 3c68a1c..1e3574e 100644 --- a/forms/post.py +++ b/forms/post.py @@ -1,6 +1,6 @@ from flask_wtf import FlaskForm from flask_wtf.file import FileAllowed -from wtforms import StringField, TextAreaField, FileField, BooleanField +from wtforms import StringField, TextAreaField, FileField, BooleanField, SubmitField from wtforms.validators import DataRequired @@ -12,3 +12,4 @@ class AddPost(FlaskForm): pos_emot = TextAreaField('Какие позитивные эмоции вы испытываете?') nig_emot = TextAreaField('Какие негативные эмоции вы испытываете?') link = TextAreaField('Вы можете оставить тут ссылки через пробел') + submit = SubmitField('Добавить') diff --git a/main.py b/main.py index d68efed..2942396 100644 --- a/main.py +++ b/main.py @@ -1,3 +1,4 @@ +import datetime from random import randint from flask import Flask, render_template @@ -8,8 +9,9 @@ from data import db_session from data.diary_post import DiaryPost from data.users import User from forms.login import LoginForm -from forms.register import RegisterForm, Confirmation +from forms.post import AddPost from forms.recovery import RecoveryForm, Conf, Finish +from forms.register import RegisterForm, Confirmation from post import mail app = Flask(__name__) @@ -23,10 +25,28 @@ photo = None user_email = "" -def save_photo(photo, login): - with open(f'static/img/user_photo/{login}_logo.png', 'wb') as f: - photo.save(f) - return f'static/img/user_photo/{login}_logo.png' +def norm_data(datatime, date_or_time, r=False): + if date_or_time == 'date': + return '.'.join(str(datatime).split()[0].split('-')[::-1]) + elif date_or_time == 'time': + return ':'.join(str(datatime).split()[1].split(':')[0:2]) + elif date_or_time == 'datetime': + date = '.'.join(str(datatime).split()[0].split('-')[::-1]) + times = ':'.join(str(datatime).split()[1].split(':')[0:2]) + datatimes = date + ' ' + times if r else times + ' ' + date + datatimes = datetime + return datatimes + + +def save_photo(photo, login, post=False, id_post=None): + if not post: + with open(f'static/app_image/users_photo/{login}_logo.png', 'wb') as f: + photo.save(f) + return f'../static/app_image/users_photo/{login}_logo.png' + elif post and id_post != None: + with open(f'static/app_image/post_photo/{login}_post_{id_post}.png', 'wb') as f: + photo.save(f) + return f'../static/app_image/post_photo/{login}_post_{id_post}.png' def secret_key(): @@ -46,7 +66,40 @@ def main_page(): @app.route('/add_post', methods=['GET', 'POST']) def add_post(): - return render_template('post.html') + 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: + id = -1 + if pos.photo.data: + diart_pos = DiaryPost(name=pos.name.data, + text=pos.text.data, + author=current_user.id, + date=datetime.datetime.now(), + photo=save_photo(pos.photo.data, current_user.login, post=True, id_post=id), + public=pos.public.data, + pos_emot=pos.pos_emot.data, + nig_emot=pos.nig_emot.data, + link=pos.link.data) + session.add(diart_pos) + session.commit() + return redirect("/diary") + else: + diart_pos = DiaryPost(name=pos.name.data, + text=pos.text.data, + author=current_user.id, + date=datetime.datetime.now(), + public=pos.public.data, + pos_emot=pos.pos_emot.data, + nig_emot=pos.nig_emot.data, + link=pos.link.data) + session.add(diart_pos) + session.commit() + return redirect("/diary") + return render_template('post.html', form=pos) @app.route('/diary', methods=['GET', 'POST']) diff --git a/static/img/user_photo/Duvakin_logo.png b/static/app_image/users_photo/Duvakin_logo.png similarity index 100% rename from static/img/user_photo/Duvakin_logo.png rename to static/app_image/users_photo/Duvakin_logo.png diff --git a/templates/diary.html b/templates/diary.html index 4c75a09..bbd26bc 100644 --- a/templates/diary.html +++ b/templates/diary.html @@ -10,8 +10,12 @@
{% for item in post %}
+ {% 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 %} @@ -46,7 +50,7 @@ {% endfor %} {% endif %} {% if item.public == 1 or item.public == 'True' %} - + {% else %} {% endif %} diff --git a/templates/post.html b/templates/post.html index c3e1875..aaf7eac 100644 --- a/templates/post.html +++ b/templates/post.html @@ -3,7 +3,83 @@ {% block content %} {% if current_user.is_authenticated %} - +
+
+

Привет, {{current_user.name}}!

+

Расскажите, что у вас нового?

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

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

+ {% endfor %} +

+

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

+ {% endfor %} +

+

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

+ {% endfor %} +

+

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

+ {% endfor %} +

+

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

+ {% endfor %} +

+

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

+ {% endfor %} +

+

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

+ {% endfor %} +

+

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

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