._.
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
|
||||
|
||||
|
||||
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()
|
||||
|
||||
@ -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
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 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')
|
||||
|
||||
|
||||
@ -1,6 +1,9 @@
|
||||
#navbar {
|
||||
display: none;
|
||||
}
|
||||
#btn_cooc {
|
||||
display: none
|
||||
}
|
||||
.register_page {
|
||||
margin-top: -1.1vw;
|
||||
display: flex;
|
||||
|
||||
@ -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 %}
|
||||
@ -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 %}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user