Улучшена файловая система
This commit is contained in:
parent
adeadaa8bd
commit
af3c59f92e
@ -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)
|
||||
|
||||
BIN
db/moona_data.db
BIN
db/moona_data.db
Binary file not shown.
@ -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
65
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'])
|
||||
|
||||
|
Before Width: | Height: | Size: 2.7 MiB After Width: | Height: | Size: 2.7 MiB |
@ -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 %}
|
||||
|
||||
@ -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">
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user