._.
This commit is contained in:
parent
15cf93cceb
commit
561d45b991
6
.gitignore
vendored
Normal file
6
.gitignore
vendored
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
/egg.txt
|
||||||
|
/venv/
|
||||||
|
.idea/
|
||||||
|
/.idea
|
||||||
|
/static
|
||||||
|
static/
|
||||||
@ -7,6 +7,7 @@ SqlAlchemyBase = dec.declarative_base()
|
|||||||
|
|
||||||
__factory = None
|
__factory = None
|
||||||
|
|
||||||
|
|
||||||
def global_init(db_file):
|
def global_init(db_file):
|
||||||
global __factory
|
global __factory
|
||||||
|
|
||||||
@ -25,6 +26,7 @@ def global_init(db_file):
|
|||||||
|
|
||||||
SqlAlchemyBase.metadata.create_all(engine)
|
SqlAlchemyBase.metadata.create_all(engine)
|
||||||
|
|
||||||
|
|
||||||
def create_session() -> Session:
|
def create_session() -> Session:
|
||||||
global __factory
|
global __factory
|
||||||
return __factory()
|
return __factory()
|
||||||
|
|||||||
@ -10,4 +10,4 @@ class Roles(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=False)
|
name = sqlalchemy.Column(sqlalchemy.String, nullable=False)
|
||||||
rights = sqlalchemy.Column(sqlalchemy.Integer)
|
rights = sqlalchemy.Column(sqlalchemy.Integer)
|
||||||
6
forms/egg.py
Normal file
6
forms/egg.py
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
from flask_wtf import FlaskForm
|
||||||
|
from wtforms import BooleanField
|
||||||
|
|
||||||
|
|
||||||
|
class EggForm(FlaskForm):
|
||||||
|
egg = BooleanField('Пасхалка')
|
||||||
25
main.py
25
main.py
@ -13,6 +13,7 @@ from sqlalchemy import or_
|
|||||||
from json import loads
|
from json import loads
|
||||||
from waitress import serve
|
from waitress import serve
|
||||||
|
|
||||||
|
from forms.egg import EggForm
|
||||||
from functions import check_password, mail, init_db_default, get_projects_data, get_user_data, save_project_logo, \
|
from functions import check_password, mail, init_db_default, get_projects_data, get_user_data, save_project_logo, \
|
||||||
overdue_quest_project, save_proof_quest, find_files_answer, file_tree, delete_project_data, delete_quest_data, \
|
overdue_quest_project, save_proof_quest, find_files_answer, file_tree, delete_project_data, delete_quest_data, \
|
||||||
copy_template, save_admin_data
|
copy_template, save_admin_data
|
||||||
@ -110,7 +111,14 @@ def admin():
|
|||||||
roles, users = data_session.query(Roles).all(), \
|
roles, users = data_session.query(Roles).all(), \
|
||||||
data_session.query(User).filter(User.id != current_user.id).all()
|
data_session.query(User).filter(User.id != current_user.id).all()
|
||||||
form = EncryptForm()
|
form = EncryptForm()
|
||||||
|
egg_form = EggForm()
|
||||||
if request.method == 'POST':
|
if request.method == 'POST':
|
||||||
|
if egg_form.egg.data:
|
||||||
|
with open('egg.txt', 'w', encoding='utf-8') as file_egg:
|
||||||
|
file_egg.write('1')
|
||||||
|
else:
|
||||||
|
with open('egg.txt', 'w', encoding='utf-8') as file_egg:
|
||||||
|
file_egg.write('2')
|
||||||
data_form = request.form.to_dict()
|
data_form = request.form.to_dict()
|
||||||
del data_form['csrf_token'], data_form['submit']
|
del data_form['csrf_token'], data_form['submit']
|
||||||
data_form = list(map(lambda x: (x[0], x[1]), data_form.items()))
|
data_form = list(map(lambda x: (x[0], x[1]), data_form.items()))
|
||||||
@ -128,7 +136,10 @@ def admin():
|
|||||||
user.banned = 0
|
user.banned = 0
|
||||||
user.activated = 1
|
user.activated = 1
|
||||||
data_session.commit()
|
data_session.commit()
|
||||||
return render_template('admin.html', title='Панель админа', roles=roles, users=users, form=form)
|
with open('egg.txt', 'r', encoding='utf-8') as file_egg:
|
||||||
|
egg_form.egg.data = True if int(file_egg.read()) == 1 else False
|
||||||
|
return render_template('admin.html', title='Панель админа', roles=roles, users=users,
|
||||||
|
form=form, egg_form=egg_form)
|
||||||
abort(404)
|
abort(404)
|
||||||
|
|
||||||
|
|
||||||
@ -771,17 +782,21 @@ def logout():
|
|||||||
@app.route('/register', methods=['GET', 'POST'])
|
@app.route('/register', methods=['GET', 'POST'])
|
||||||
def register():
|
def register():
|
||||||
if not current_user.is_authenticated:
|
if not current_user.is_authenticated:
|
||||||
|
with open('egg.txt', 'r', encoding='utf-8') as file_egg:
|
||||||
|
egg = int(file_egg.read())
|
||||||
form = RegisterForm()
|
form = RegisterForm()
|
||||||
if form.validate_on_submit():
|
if form.validate_on_submit():
|
||||||
data_session = db_session.create_session()
|
data_session = db_session.create_session()
|
||||||
if data_session.query(User).filter(User.login == form.login.data).first():
|
if data_session.query(User).filter(User.login == form.login.data).first():
|
||||||
return render_template('register.html', form=form, message="Такой пользователь уже есть",
|
return render_template('register.html', form=form, message="Такой пользователь уже есть",
|
||||||
title='Регистрация')
|
title='Регистрация', egg=0)
|
||||||
if data_session.query(User).filter(User.email == form.email.data).first():
|
if data_session.query(User).filter(User.email == form.email.data).first():
|
||||||
return render_template('register.html', form=form, message="Такая почта уже есть", title='Регистрация')
|
return render_template('register.html', form=form, message="Такая почта уже есть", egg=0,
|
||||||
|
title='Регистрация')
|
||||||
status_password = check_password(form.password.data)
|
status_password = check_password(form.password.data)
|
||||||
if status_password != 'OK':
|
if status_password != 'OK':
|
||||||
return render_template('register.html', form=form, message=status_password, title='Регистрация')
|
return render_template('register.html', form=form, message=status_password, egg=0,
|
||||||
|
title='Регистрация')
|
||||||
user = User(
|
user = User(
|
||||||
email=form.email.data,
|
email=form.email.data,
|
||||||
name=form.name.data,
|
name=form.name.data,
|
||||||
@ -800,7 +815,7 @@ def register():
|
|||||||
'Подтверждение регистрации')
|
'Подтверждение регистрации')
|
||||||
logging.info(f'{form.login.data} was registered')
|
logging.info(f'{form.login.data} was registered')
|
||||||
return redirect('/login?message=Мы выслали ссылку для подтверждения почты')
|
return redirect('/login?message=Мы выслали ссылку для подтверждения почты')
|
||||||
return render_template('register.html', form=form, message='', title='Регистрация')
|
return render_template('register.html', form=form, message='', title='Регистрация', egg=egg)
|
||||||
else:
|
else:
|
||||||
return redirect('/projects')
|
return redirect('/projects')
|
||||||
|
|
||||||
|
|||||||
@ -1,6 +1,9 @@
|
|||||||
#navbar {
|
#navbar {
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
|
#btn_cooc {
|
||||||
|
display: none
|
||||||
|
}
|
||||||
.register_page {
|
.register_page {
|
||||||
margin-top: -1.1vw;
|
margin-top: -1.1vw;
|
||||||
display: flex;
|
display: flex;
|
||||||
|
|||||||
@ -3,37 +3,41 @@
|
|||||||
<div class="admin_page">
|
<div class="admin_page">
|
||||||
<h2 class="admine_title">Изменение данных пользователей</h2>
|
<h2 class="admine_title">Изменение данных пользователей</h2>
|
||||||
<form action="" method="post" class="edit_user_form" enctype="multipart/form-data">
|
<form action="" method="post" class="edit_user_form" enctype="multipart/form-data">
|
||||||
{{ form.hidden_tag() }}
|
{{ form.hidden_tag() }}
|
||||||
<div class="admin_block">
|
<div class="admin_block">
|
||||||
<div class="users_block">
|
<div class="users_block">
|
||||||
{% for user in users %}
|
{% for user in users %}
|
||||||
<div class="user">
|
<div class="user">
|
||||||
<a class="link_to_user" href="/admin/user/{{ user.login }}">
|
<a class="link_to_user" href="/admin/user/{{ user.login }}">
|
||||||
<img class="user_logo" src="{{user.photo}}">
|
<img class="user_logo" src="{{user.photo}}">
|
||||||
<p class="user_names">{{user.name}}</p>
|
<p class="user_names">{{user.name}}</p>
|
||||||
</a>
|
</a>
|
||||||
<select name="role_{{ user.id }}" class="form-select role_div" aria-label="Default select example">
|
<select name="role_{{ user.id }}" class="form-select role_div" aria-label="Default select example">
|
||||||
{% for role in roles %}
|
{% for role in roles %}
|
||||||
<option class="role" value="{{ loop.index }}" {% if user.role == loop.index %}selected{%
|
<option class="role" value="{{ loop.index }}" {% if user.role== loop.index %}selected{%
|
||||||
endif %}>{{ roles[loop.index0].name }}
|
endif %}>{{ roles[loop.index0].name }}
|
||||||
</option>
|
</option>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</select>
|
</select>
|
||||||
{% if user.role != 1 %}
|
{% if user.role != 1 %}
|
||||||
<div class="user_active">
|
<div class="user_active">
|
||||||
<label class="active_label">Активирован</label>
|
<label class="active_label">Активирован</label>
|
||||||
<input class="choose_active" name="active_{{user.id}}" type="checkbox" value="y" {% if user.activated == 1 %}checked="yes"{% endif %}>
|
<input class="choose_active" name="active_{{user.id}}" type="checkbox" value="y" {% if
|
||||||
|
user.activated== 1 %}checked="yes" {% endif %}>
|
||||||
|
</div>
|
||||||
|
<div class="user_banned">
|
||||||
|
<label class="banned_label">Бан</label>
|
||||||
|
<input class="choose_banned" name="banned_{{user.id}}" type="checkbox" value="y" {% if
|
||||||
|
user.banned== 1 %}checked="yes" {% endif %}>
|
||||||
|
</div>
|
||||||
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
<div class="user_banned">
|
{% endfor %}
|
||||||
<label class="banned_label">Бан</label>
|
|
||||||
<input class="choose_banned" name="banned_{{user.id}}" type="checkbox" value="y" {% if user.banned == 1 %}checked="yes"{% endif %}>
|
|
||||||
</div>
|
|
||||||
{% endif %}
|
|
||||||
</div>
|
</div>
|
||||||
{% endfor %}
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<label>Пасхалка</label>
|
||||||
{{ form.submit(type="submit", class="save_button") }}
|
{{egg_form.egg}}
|
||||||
|
{{ form.submit(type="submit", class="save_button") }}
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
@ -1,6 +1,43 @@
|
|||||||
<link rel="stylesheet" href="../static/css/register.css"/>
|
<link rel="stylesheet" href="../static/css/register.css"/>
|
||||||
{% extends "base.html" %} {% block content %}
|
{% extends "base.html" %} {% block content %}
|
||||||
<div class="register_page">
|
<div class="register_page">
|
||||||
|
{% if egg == 1 %}
|
||||||
|
<!-- Button trigger modal -->
|
||||||
|
<button type="button" class="btn btn-primary" id="btn_cooc" data-bs-toggle="modal" data-bs-target="#staticBackdrop">
|
||||||
|
Launch static backdrop modal
|
||||||
|
</button>
|
||||||
|
|
||||||
|
<!-- Modal -->
|
||||||
|
<div class="modal fade" id="staticBackdrop" data-bs-backdrop="static" data-bs-keyboard="false" tabindex="-1"
|
||||||
|
aria-labelledby="staticBackdropLabel" aria-hidden="true">
|
||||||
|
<div class="modal-dialog">
|
||||||
|
<div class="modal-content">
|
||||||
|
<div class="modal-header">
|
||||||
|
<h3 class="modal-title fs-5" id="staticBackdropLabel">Да, мы собираем сраные куки. Вам не
|
||||||
|
похуй?</h3>
|
||||||
|
</div>
|
||||||
|
<div class="modal-footer">
|
||||||
|
<button type="button" class="btn btn-primary" data-bs-toggle="modal"
|
||||||
|
data-bs-target="#staticBackdrop2">Ну похуй
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="modal fade" id="staticBackdrop2" data-bs-backdrop="static" data-bs-keyboard="false" tabindex="-1"
|
||||||
|
aria-labelledby="staticBackdropLabel" aria-hidden="true">
|
||||||
|
<div class="modal-dialog">
|
||||||
|
<div class="modal-content">
|
||||||
|
<div class="modal-header">
|
||||||
|
<h3 class="modal-title fs-5" id="staticBackdropLabel2">Ну вот и не выебывайся</h3>
|
||||||
|
</div>
|
||||||
|
<div class="modal-footer">
|
||||||
|
<button type="button" class="btn btn-primary" data-bs-dismiss="modal">Заткни ебальник</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{% endif %}
|
||||||
<div class="register">
|
<div class="register">
|
||||||
<h1 class="header_title">Регистрация</h1>
|
<h1 class="header_title">Регистрация</h1>
|
||||||
<div>
|
<div>
|
||||||
@ -51,4 +88,11 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
{% if egg == 1 %}
|
||||||
|
<script type="text/javascript">
|
||||||
|
window.onload = function(){
|
||||||
|
document.getElementById('btn_cooc').click();
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
{% endif %}
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user