Улучшена файловая система
This commit is contained in:
parent
adeadaa8bd
commit
af3c59f92e
@ -9,13 +9,13 @@ class DiaryPost(SqlAlchemyBase, UserMixin):
|
|||||||
|
|
||||||
id = sqlalchemy.Column(sqlalchemy.Integer,
|
id = sqlalchemy.Column(sqlalchemy.Integer,
|
||||||
primary_key=True, autoincrement=True)
|
primary_key=True, autoincrement=True)
|
||||||
name = sqlalchemy.Column(sqlalchemy.String, nullable=True)
|
name = sqlalchemy.Column(sqlalchemy.String, nullable=True, default=None)
|
||||||
text = sqlalchemy.Column(sqlalchemy.String, nullable=True)
|
text = sqlalchemy.Column(sqlalchemy.String, nullable=True, default=None)
|
||||||
author = sqlalchemy.Column(sqlalchemy.Integer,
|
author = sqlalchemy.Column(sqlalchemy.Integer,
|
||||||
sqlalchemy.ForeignKey("users.id"), nullable=True)
|
sqlalchemy.ForeignKey("users.id"), nullable=True, default=None)
|
||||||
date = sqlalchemy.Column(sqlalchemy.DateTime, nullable=True)
|
date = sqlalchemy.Column(sqlalchemy.DateTime, nullable=True, default=None)
|
||||||
photo = sqlalchemy.Column(sqlalchemy.Text)
|
photo = sqlalchemy.Column(sqlalchemy.Text, default=None)
|
||||||
public = sqlalchemy.Column(sqlalchemy.Boolean, nullable=True)
|
public = sqlalchemy.Column(sqlalchemy.Boolean, nullable=True, default=None)
|
||||||
pos_emot = sqlalchemy.Column(sqlalchemy.Text, nullable=True)
|
pos_emot = sqlalchemy.Column(sqlalchemy.Text, nullable=True, default=None)
|
||||||
nig_emot = sqlalchemy.Column(sqlalchemy.Text, nullable=True)
|
nig_emot = sqlalchemy.Column(sqlalchemy.Text, nullable=True, default=None)
|
||||||
link = sqlalchemy.Column(sqlalchemy.Text, nullable=True)
|
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 import FlaskForm
|
||||||
from flask_wtf.file import FileAllowed
|
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
|
from wtforms.validators import DataRequired
|
||||||
|
|
||||||
|
|
||||||
@ -12,3 +12,4 @@ class AddPost(FlaskForm):
|
|||||||
pos_emot = TextAreaField('Какие позитивные эмоции вы испытываете?')
|
pos_emot = TextAreaField('Какие позитивные эмоции вы испытываете?')
|
||||||
nig_emot = TextAreaField('Какие негативные эмоции вы испытываете?')
|
nig_emot = TextAreaField('Какие негативные эмоции вы испытываете?')
|
||||||
link = TextAreaField('Вы можете оставить тут ссылки через пробел')
|
link = TextAreaField('Вы можете оставить тут ссылки через пробел')
|
||||||
|
submit = SubmitField('Добавить')
|
||||||
|
|||||||
65
main.py
65
main.py
@ -1,3 +1,4 @@
|
|||||||
|
import datetime
|
||||||
from random import randint
|
from random import randint
|
||||||
|
|
||||||
from flask import Flask, render_template
|
from flask import Flask, render_template
|
||||||
@ -8,8 +9,9 @@ from data import db_session
|
|||||||
from data.diary_post import DiaryPost
|
from data.diary_post import DiaryPost
|
||||||
from data.users import User
|
from data.users import User
|
||||||
from forms.login import LoginForm
|
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.recovery import RecoveryForm, Conf, Finish
|
||||||
|
from forms.register import RegisterForm, Confirmation
|
||||||
from post import mail
|
from post import mail
|
||||||
|
|
||||||
app = Flask(__name__)
|
app = Flask(__name__)
|
||||||
@ -23,10 +25,28 @@ photo = None
|
|||||||
user_email = ""
|
user_email = ""
|
||||||
|
|
||||||
|
|
||||||
def save_photo(photo, login):
|
def norm_data(datatime, date_or_time, r=False):
|
||||||
with open(f'static/img/user_photo/{login}_logo.png', 'wb') as f:
|
if date_or_time == 'date':
|
||||||
photo.save(f)
|
return '.'.join(str(datatime).split()[0].split('-')[::-1])
|
||||||
return f'static/img/user_photo/{login}_logo.png'
|
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():
|
def secret_key():
|
||||||
@ -46,7 +66,40 @@ def main_page():
|
|||||||
|
|
||||||
@app.route('/add_post', methods=['GET', 'POST'])
|
@app.route('/add_post', methods=['GET', 'POST'])
|
||||||
def add_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'])
|
@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">
|
<div class="card" style="width: 18rem;" id="all_my_post">
|
||||||
{% for item in post %}
|
{% for item in post %}
|
||||||
<div class="card-body" id="my_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>
|
<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>
|
<strong class="card-text" id="my_text" style="color:#ffffff">{{item.text}}</strong>
|
||||||
|
{% endif %}
|
||||||
{% if item.pos_emot != None %}
|
{% if item.pos_emot != None %}
|
||||||
<div class="pos_emot">
|
<div class="pos_emot">
|
||||||
{% for item2 in item.pos_emot %}
|
{% for item2 in item.pos_emot %}
|
||||||
@ -46,7 +50,7 @@
|
|||||||
{% endfor %}
|
{% endfor %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% if item.public == 1 or item.public == 'True' %}
|
{% 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 %}
|
{% else %}
|
||||||
<div class="alert alert-danger" role="alert" id="ptivate">Запись приватная</div>
|
<div class="alert alert-danger" role="alert" id="ptivate">Запись приватная</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|||||||
@ -3,7 +3,83 @@
|
|||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
{% if current_user.is_authenticated %}
|
{% 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 %}
|
{% else %}
|
||||||
<div class="bad_user">
|
<div class="bad_user">
|
||||||
<div class="bad_centre">
|
<div class="bad_centre">
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user