This commit is contained in:
Андрей Дувакин 2024-11-01 15:09:49 +05:00
parent 15cf93cceb
commit 561d45b991
8 changed files with 115 additions and 35 deletions

6
.gitignore vendored Normal file
View File

@ -0,0 +1,6 @@
/egg.txt
/venv/
.idea/
/.idea
/static
static/

View File

@ -7,6 +7,7 @@ SqlAlchemyBase = dec.declarative_base()
__factory = None
def global_init(db_file):
global __factory
@ -25,6 +26,7 @@ def global_init(db_file):
SqlAlchemyBase.metadata.create_all(engine)
def create_session() -> Session:
global __factory
return __factory()
return __factory()

View File

@ -10,4 +10,4 @@ class Roles(SqlAlchemyBase, UserMixin):
id = sqlalchemy.Column(sqlalchemy.Integer,
primary_key=True, autoincrement=True)
name = sqlalchemy.Column(sqlalchemy.String, nullable=False)
rights = sqlalchemy.Column(sqlalchemy.Integer)
rights = sqlalchemy.Column(sqlalchemy.Integer)

6
forms/egg.py Normal file
View File

@ -0,0 +1,6 @@
from flask_wtf import FlaskForm
from wtforms import BooleanField
class EggForm(FlaskForm):
egg = BooleanField('Пасхалка')

25
main.py
View File

@ -13,6 +13,7 @@ from sqlalchemy import or_
from json import loads
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, \
overdue_quest_project, save_proof_quest, find_files_answer, file_tree, delete_project_data, delete_quest_data, \
copy_template, save_admin_data
@ -110,7 +111,14 @@ def admin():
roles, users = data_session.query(Roles).all(), \
data_session.query(User).filter(User.id != current_user.id).all()
form = EncryptForm()
egg_form = EggForm()
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()
del data_form['csrf_token'], data_form['submit']
data_form = list(map(lambda x: (x[0], x[1]), data_form.items()))
@ -128,7 +136,10 @@ def admin():
user.banned = 0
user.activated = 1
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)
@ -771,17 +782,21 @@ def logout():
@app.route('/register', methods=['GET', 'POST'])
def register():
if not current_user.is_authenticated:
with open('egg.txt', 'r', encoding='utf-8') as file_egg:
egg = int(file_egg.read())
form = RegisterForm()
if form.validate_on_submit():
data_session = db_session.create_session()
if data_session.query(User).filter(User.login == form.login.data).first():
return render_template('register.html', form=form, message="Такой пользователь уже есть",
title='Регистрация')
title='Регистрация', egg=0)
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)
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(
email=form.email.data,
name=form.name.data,
@ -800,7 +815,7 @@ def register():
'Подтверждение регистрации')
logging.info(f'{form.login.data} was registered')
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:
return redirect('/projects')

View File

@ -1,6 +1,9 @@
#navbar {
display: none;
}
#btn_cooc {
display: none
}
.register_page {
margin-top: -1.1vw;
display: flex;

View File

@ -3,37 +3,41 @@
<div class="admin_page">
<h2 class="admine_title">Изменение данных пользователей</h2>
<form action="" method="post" class="edit_user_form" enctype="multipart/form-data">
{{ form.hidden_tag() }}
<div class="admin_block">
<div class="users_block">
{% for user in users %}
<div class="user">
<a class="link_to_user" href="/admin/user/{{ user.login }}">
<img class="user_logo" src="{{user.photo}}">
<p class="user_names">{{user.name}}</p>
</a>
<select name="role_{{ user.id }}" class="form-select role_div" aria-label="Default select example">
{% for role in roles %}
<option class="role" value="{{ loop.index }}" {% if user.role == loop.index %}selected{%
endif %}>{{ roles[loop.index0].name }}
</option>
{% endfor %}
</select>
{% if user.role != 1 %}
<div class="user_active">
<label class="active_label">Активирован</label>
<input class="choose_active" name="active_{{user.id}}" type="checkbox" value="y" {% if user.activated == 1 %}checked="yes"{% endif %}>
{{ form.hidden_tag() }}
<div class="admin_block">
<div class="users_block">
{% for user in users %}
<div class="user">
<a class="link_to_user" href="/admin/user/{{ user.login }}">
<img class="user_logo" src="{{user.photo}}">
<p class="user_names">{{user.name}}</p>
</a>
<select name="role_{{ user.id }}" class="form-select role_div" aria-label="Default select example">
{% for role in roles %}
<option class="role" value="{{ loop.index }}" {% if user.role== loop.index %}selected{%
endif %}>{{ roles[loop.index0].name }}
</option>
{% endfor %}
</select>
{% if user.role != 1 %}
<div class="user_active">
<label class="active_label">Активирован</label>
<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 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 %}
{% endfor %}
</div>
{% endfor %}
</div>
</div>
{{ form.submit(type="submit", class="save_button") }}
<label>Пасхалка</label>
{{egg_form.egg}}
{{ form.submit(type="submit", class="save_button") }}
</form>
</div>
{% endblock %}

View File

@ -1,6 +1,43 @@
<link rel="stylesheet" href="../static/css/register.css"/>
{% extends "base.html" %} {% block content %}
<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">
<h1 class="header_title">Регистрация</h1>
<div>
@ -51,4 +88,11 @@
</div>
</div>
</div>
{% if egg == 1 %}
<script type="text/javascript">
window.onload = function(){
document.getElementById('btn_cooc').click();
}
</script>
{% endif %}
{% endblock %}