andrei 1 rok pred
rodič
commit
561d45b991
8 zmenil súbory, kde vykonal 115 pridanie a 35 odobranie
  1. 6 0
      .gitignore
  2. 3 1
      data/db_session.py
  3. 1 1
      data/roles.py
  4. 6 0
      forms/egg.py
  5. 20 5
      main.py
  6. 3 0
      static/css/register.css
  7. 32 28
      templates/admin.html
  8. 44 0
      templates/register.html

+ 6 - 0
.gitignore

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

+ 3 - 1
data/db_session.py

@@ -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()

+ 1 - 1
data/roles.py

@@ -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 - 0
forms/egg.py

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

+ 20 - 5
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')
 

+ 3 - 0
static/css/register.css

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

+ 32 - 28
templates/admin.html

@@ -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 %}

+ 44 - 0
templates/register.html

@@ -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 %}