Улучшена файловая система

This commit is contained in:
mrmur 2022-04-06 19:52:20 +05:00
parent adeadaa8bd
commit af3c59f92e
7 changed files with 152 additions and 18 deletions

View File

@ -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)

Binary file not shown.

View File

@ -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('Добавить')

65
main.py
View File

@ -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'])

View File

Before

Width:  |  Height:  |  Size: 2.7 MiB

After

Width:  |  Height:  |  Size: 2.7 MiB

View File

@ -10,8 +10,12 @@
<div class="card" style="width: 18rem;" id="all_my_post">
{% for item in post %}
<div class="card-body" id="my_post">
{% if item.name != None %}
<h2 class="card-title" id="my_post_zag" style="color:#c5f1ff">{{item.name}}</h2>
{% endif %}
{% if item.text != None %}
<strong class="card-text" id="my_text" style="color:#ffffff">{{item.text}}</strong>
{% endif %}
{% if item.pos_emot != None %}
<div class="pos_emot">
{% for item2 in item.pos_emot %}
@ -46,7 +50,7 @@
{% endfor %}
{% endif %}
{% if item.public == 1 or item.public == 'True' %}
<div class="alert alert-success" role="alert" id="pub">Запись опубликована {{item.public}}</div>
<div class="alert alert-success" role="alert" id="pub">Запись опубликована</div>
{% else %}
<div class="alert alert-danger" role="alert" id="ptivate">Запись приватная</div>
{% endif %}

View File

@ -3,7 +3,83 @@
{% block content %}
{% if current_user.is_authenticated %}
<div class="post_form">
<div class="hello_user">
<h1>Привет, {{current_user.name}}!</h1>
<h2>Расскажите, что у вас нового?</h2>
</div>
<form action="" method="POST" enctype="multipart/form-data">
{{ form.hidden_tag() }}
{{ form.csrf_token }}
<p>
{{ form.name.label }}<br>
{{ form.name(class="form-control") }}<br>
{% for error in form.name.errors %}
<div class="alert alert-danger" role="alert">
{{ error }}
</div>
{% endfor %}
</p>
<p>
{{ form.text.label }}<br>
{{ form.text(class="form-control") }}<br>
{% for error in form.text.errors %}
<div class="alert alert-danger" role="alert">
{{ error }}
</div>
{% endfor %}
</p>
<p>
{{ form.photo.label }}<br>
{{ form.photo(class="form-control") }}<br>
{% for error in form.photo.errors %}
<div class="alert alert-danger" role="alert">
{{ error }}
</div>
{% endfor %}
</p>
<p>
{{ form.public.label }}<br>
{{ form.public(class="form-control") }}<br>
{% for error in form.public.errors %}
<div class="alert alert-danger" role="alert">
{{ error }}
</div>
{% endfor %}
</p>
<p>
{{ form.pos_emot.label }}<br>
{{ form.pos_emot(class="form-control") }}<br>
{% for error in form.pos_emot.errors %}
<div class="alert alert-danger" role="alert">
{{ error }}
</div>
{% endfor %}
</p>
<p>
{{ form.nig_emot.label }}<br>
{{ form.nig_emot(class="form-control") }}<br>
{% for error in form.nig_emot.errors %}
<div class="alert alert-danger" role="alert">
{{ error }}
</div>
{% endfor %}
</p>
<p>
{{ form.link.label }}<br>
{{ form.link(class="form-control") }}<br>
{% for error in form.link.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">