diff --git a/main.py b/main.py index 3b2838b..3e007b1 100644 --- a/main.py +++ b/main.py @@ -64,6 +64,8 @@ def base(): @app.route('/admin', methods=['GET', 'POST']) def admin(): + if current_user.banned: + return redirect('/logout') if current_user.is_authenticated: if current_user.role == 1: data_session = db_session.create_session() @@ -94,7 +96,9 @@ def admin(): @app.route('/template//create') def create_by_template(id_template): - if current_user.is_authenticated and not current_user.banned: + if current_user.banned: + return redirect('/logout') + if current_user.is_authenticated: data_session = db_session.create_session() current_template = data_session.query(Projects).filter(Projects.id == id_template).first() if current_template: @@ -120,7 +124,9 @@ def create_by_template(id_template): @app.route('/template/') def template_project(id_template): - if current_user.is_authenticated and not current_user.banned: + if current_user.banned: + return redirect('/logout') + if current_user.is_authenticated: data_session = db_session.create_session() current_project = data_session.query(Projects).filter(Projects.id == id_template).first() if current_project: @@ -136,7 +142,9 @@ def template_project(id_template): @app.route('/showcase/link//delete') def delete_link(id_link): - if current_user.is_authenticated and not current_user.banned: + if current_user.banned: + return redirect('/logout') + if current_user.is_authenticated: if current_user.role in [1, 4]: data_session = db_session.create_session() link = data_session.query(ShowCaseLink).filter(ShowCaseLink.id == id_link).first() @@ -153,7 +161,9 @@ def delete_link(id_link): @app.route('/showcase', methods=['GET', 'POST']) def showcase(): - if current_user.is_authenticated and not current_user.banned: + if current_user.banned: + return redirect('/logout') + if current_user.is_authenticated: form = AddLink() if current_user.role in [1, 4] else None data_session = db_session.create_session() if request.method == 'POST' and current_user.role in [1, 4]: @@ -171,14 +181,16 @@ def showcase(): data_session.query(Projects).filter(Projects.is_template == 1).all())) list_links = data_session.query(ShowCaseLink).all() return render_template('showcase.html', title='Витрина', list_template=list_template, list_links=list_links, - form=form, type=type) + form=form) else: return redirect('/login') @app.route('/project//quest//edit', methods=['GET', 'POST']) def edit_quest(id_project, id_task): - if current_user.is_authenticated and not current_user.banned: + if current_user.banned: + return redirect('/logout') + if current_user.is_authenticated: data_session = db_session.create_session() current_project = data_session.query(Projects).filter(Projects.id == id_project).first() current_task = data_session.query(Quests).filter(Quests.id == id_task).first() @@ -215,7 +227,9 @@ def edit_quest(id_project, id_task): @app.route('/project//file//delete') def delete_file(id_project, id_file): - if current_user.is_authenticated and not current_user.banned: + if current_user.banned: + return redirect('/logout') + if current_user.is_authenticated: from_path = request.args.get('from') if request.args.get('from') else '' data_session = db_session.create_session() current_project = data_session.query(Projects).filter(Projects.id == id_project).first() @@ -246,7 +260,9 @@ def delete_file(id_project, id_file): @app.route('/project//quest/', methods=['GET', 'POST']) def task_project(id_project, id_task): - if current_user.is_authenticated and not current_user.banned: + if current_user.banned: + return redirect('/logout') + if current_user.is_authenticated: data_session = db_session.create_session() current_project = data_session.query(Projects).filter(Projects.id == id_project).first() current_task = data_session.query(Quests).filter(Quests.id == id_task).first() @@ -314,7 +330,9 @@ def task_project(id_project, id_task): @app.route('/project//quest/new', methods=['GET', 'POST']) def new_task_project(id_project): - if current_user.is_authenticated and not current_user.banned: + if current_user.banned: + return redirect('/logout') + if current_user.is_authenticated: data_session = db_session.create_session() current_project = data_session.query(Projects).filter(Projects.id == id_project).first() if current_project: @@ -345,7 +363,9 @@ def new_task_project(id_project): @app.route('/project//edit', methods=['GET', 'POST']) def edit_project(id_project): - if current_user.is_authenticated and not current_user.banned: + if current_user.banned: + return redirect('/logout') + if current_user.is_authenticated: data_session = db_session.create_session() current_project = data_session.query(Projects).filter(Projects.id == id_project).first() if current_project: @@ -382,6 +402,7 @@ def edit_project(id_project): data_session.commit() current_project.name = form.name.data current_project.description = form.description.data + current_project.is_template = form.is_template.data data_session.commit() return redirect(f'/project/{current_project.id}') if form.del_photo.data: @@ -391,6 +412,7 @@ def edit_project(id_project): return redirect(f'/project/{current_project.id}/edit') form.name.data = current_project.name form.description.data = current_project.description + form.is_template.data = current_project.is_template return render_template('edit_project.html', title='Изменение проекта', form=form, list_users=list_users, staff=staff, project=current_project) else: @@ -403,7 +425,9 @@ def edit_project(id_project): @app.route('/project/', methods=['POST', 'GET']) def project(id_project): - if current_user.is_authenticated and not current_user.banned: + if current_user.banned: + return redirect('/logout') + if current_user.is_authenticated: data_session = db_session.create_session() current_project = data_session.query(Projects).filter(Projects.id == id_project).first() if current_project: @@ -486,7 +510,9 @@ def recovery(): @app.route('/project//delete', methods=['GET', 'POST']) def delete_project(id_project): - if current_user.is_authenticated and not current_user.banned: + if current_user.banned: + return redirect('/logout') + if current_user.is_authenticated: data_session = db_session.create_session() project_del = data_session.query(Projects).filter(Projects.id == id_project).first() if project_del: @@ -511,7 +537,9 @@ def delete_project(id_project): @app.route('/user/', methods=['GET', 'POST']) def user_view(_login): - if current_user.is_authenticated and not current_user.banned: + if current_user.banned: + return redirect('/logout') + if current_user.is_authenticated: data_session = db_session.create_session() user = data_session.query(User).filter(User.login == _login).first() if user: @@ -532,7 +560,9 @@ def user_view(_login): @app.route('/projects/new', methods=['GET', 'POST']) def new_project(): - if current_user.is_authenticated and not current_user.banned: + if current_user.banned: + return redirect('/logout') + if current_user.is_authenticated: form = ProjectForm() data_session = db_session.create_session() list_users = list( @@ -569,7 +599,9 @@ def new_project(): @app.route('/projects', methods=['GET', 'POST']) def projects(): - if current_user.is_authenticated and not current_user.banned: + if current_user.banned: + return redirect('/logout') + if current_user.is_authenticated: find = False form = FindProjectForm() data_session = db_session.create_session() @@ -597,7 +629,9 @@ def projects(): @app.route('/profile', methods=['GET', 'POST']) def profile(): - if current_user.is_authenticated and not current_user.banned: + if current_user.banned: + return redirect('/logout') + if current_user.is_authenticated: data_session = db_session.create_session() form = EditProfileForm( CombinedMultiDict((request.files, request.form)), diff --git a/static/css/answer.css b/static/css/answer.css index 6107676..ce9e565 100644 --- a/static/css/answer.css +++ b/static/css/answer.css @@ -26,35 +26,6 @@ body { display: flex; flex-direction: row; } -.link_edit_block { - margin-left: 0.5vw; - background-color: #9E795A; - border: #9E795A; - width: 13vw; - height: 4.5vw; - color: #ffffff; - border-radius: 5vw; - vertical-align: middle; - font-size: 1.5vw; -} -.link_edit { - width: 13vw; - height: 4.5vw; -} -.link_edit:hover { - text-decoration: none; - color: #000000; -} -.link_edit_text { - width: 13vw; - height: 4.5vw; - text-align: center; - font-size: 1.5vw; - color: #ffffff; - display: flex; - align-items: center; - justify-content: center; -} .link_back { background-color: #ffffff; color: #000000; diff --git a/static/css/project.css b/static/css/project.css index 2fea6c5..de6691f 100644 --- a/static/css/project.css +++ b/static/css/project.css @@ -309,7 +309,6 @@ background-color: #000000; border: 2px solid #ffffff; border-radius: 3vw; - margin-left: 2vw; } .quest_solve_link:hover { text-decoration: none; @@ -328,14 +327,14 @@ #quest_solve_link_id { display: none; } -.link_back_block { +.link_back_block, .link_edit_block { display: flex; align-items: center; justify-content: center; flex-direction: column; flex-wrap: nowrap; } -.link_back { +.link_back, .link_edit { background-color: #ffffff; color: #000000; width: 15vw; @@ -346,11 +345,14 @@ align-items: center; justify-content: center; } -.link_back:hover { +.link_edit { + width: 13vw; +} +.link_back:hover, .link_edit:hover { text-decoration: none; color: #000000; } -.link_back_text { +.link_back_text, .link_edit_text { font-size: 1.5vw; margin-top: 15px; display: flex; @@ -415,4 +417,15 @@ } .button_text { font-size: 1.3vw; +} +.quest_buttons_block { + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + height: 15vw; + margin-top: 3vw; +} +.link_edit_block { + margin-top: 1vw; } \ No newline at end of file diff --git a/templates/answer.html b/templates/answer.html index 14d1613..ce5f594 100644 --- a/templates/answer.html +++ b/templates/answer.html @@ -7,13 +7,6 @@ - {% if task.creator == current_user.id or project.creator == current_user.id %} - - {% endif %}
diff --git a/templates/edit_project.html b/templates/edit_project.html index 7cfc99c..ce9339b 100644 --- a/templates/edit_project.html +++ b/templates/edit_project.html @@ -46,6 +46,12 @@
+
+ {{ form.is_template(class="is_template")}} {{form.is_template.label }}
+ {% for error in form.is_template.errors %} + + {% endfor %} +
{% if 'none' in project.photo %}
diff --git a/templates/project.html b/templates/project.html index 942eca8..31abd2e 100644 --- a/templates/project.html +++ b/templates/project.html @@ -15,7 +15,7 @@
{% else %} -

+

{% endif %}
@@ -62,10 +62,11 @@ data-bs-target="#panelsStayOpen-collapse{{ quest.id }}" aria-expanded="true" aria-controls="panelsStayOpen-collapse{{ quest.id }}">
-
+

{{ quest.name }}

- {% if not project.is_template %} + {% if not project.is_template %}
{% if quest.overdue == 'yes' and quest.realized != 1 %}
+
+ {% if quest.creator == current_user.id or project.creator == current_user.id %} + + {% endif %} +
{% else %}