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 51a15b6..5f5e931 100644 Binary files a/db/moona_data.db and b/db/moona_data.db differ 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 %}