Переместил кнопку редактирования задачи, добавил возможность менять статус шаблона у проекта
This commit is contained in:
parent
34462d76ee
commit
2f995f3ec9
66
main.py
66
main.py
@ -64,6 +64,8 @@ def base():
|
|||||||
|
|
||||||
@app.route('/admin', methods=['GET', 'POST'])
|
@app.route('/admin', methods=['GET', 'POST'])
|
||||||
def admin():
|
def admin():
|
||||||
|
if current_user.banned:
|
||||||
|
return redirect('/logout')
|
||||||
if current_user.is_authenticated:
|
if current_user.is_authenticated:
|
||||||
if current_user.role == 1:
|
if current_user.role == 1:
|
||||||
data_session = db_session.create_session()
|
data_session = db_session.create_session()
|
||||||
@ -94,7 +96,9 @@ def admin():
|
|||||||
|
|
||||||
@app.route('/template/<int:id_template>/create')
|
@app.route('/template/<int:id_template>/create')
|
||||||
def create_by_template(id_template):
|
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()
|
data_session = db_session.create_session()
|
||||||
current_template = data_session.query(Projects).filter(Projects.id == id_template).first()
|
current_template = data_session.query(Projects).filter(Projects.id == id_template).first()
|
||||||
if current_template:
|
if current_template:
|
||||||
@ -120,7 +124,9 @@ def create_by_template(id_template):
|
|||||||
|
|
||||||
@app.route('/template/<int:id_template>')
|
@app.route('/template/<int:id_template>')
|
||||||
def template_project(id_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()
|
data_session = db_session.create_session()
|
||||||
current_project = data_session.query(Projects).filter(Projects.id == id_template).first()
|
current_project = data_session.query(Projects).filter(Projects.id == id_template).first()
|
||||||
if current_project:
|
if current_project:
|
||||||
@ -136,7 +142,9 @@ def template_project(id_template):
|
|||||||
|
|
||||||
@app.route('/showcase/link/<int:id_link>/delete')
|
@app.route('/showcase/link/<int:id_link>/delete')
|
||||||
def delete_link(id_link):
|
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]:
|
if current_user.role in [1, 4]:
|
||||||
data_session = db_session.create_session()
|
data_session = db_session.create_session()
|
||||||
link = data_session.query(ShowCaseLink).filter(ShowCaseLink.id == id_link).first()
|
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'])
|
@app.route('/showcase', methods=['GET', 'POST'])
|
||||||
def showcase():
|
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
|
form = AddLink() if current_user.role in [1, 4] else None
|
||||||
data_session = db_session.create_session()
|
data_session = db_session.create_session()
|
||||||
if request.method == 'POST' and current_user.role in [1, 4]:
|
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()))
|
data_session.query(Projects).filter(Projects.is_template == 1).all()))
|
||||||
list_links = data_session.query(ShowCaseLink).all()
|
list_links = data_session.query(ShowCaseLink).all()
|
||||||
return render_template('showcase.html', title='Витрина', list_template=list_template, list_links=list_links,
|
return render_template('showcase.html', title='Витрина', list_template=list_template, list_links=list_links,
|
||||||
form=form, type=type)
|
form=form)
|
||||||
else:
|
else:
|
||||||
return redirect('/login')
|
return redirect('/login')
|
||||||
|
|
||||||
|
|
||||||
@app.route('/project/<int:id_project>/quest/<int:id_task>/edit', methods=['GET', 'POST'])
|
@app.route('/project/<int:id_project>/quest/<int:id_task>/edit', methods=['GET', 'POST'])
|
||||||
def edit_quest(id_project, id_task):
|
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()
|
data_session = db_session.create_session()
|
||||||
current_project = data_session.query(Projects).filter(Projects.id == id_project).first()
|
current_project = data_session.query(Projects).filter(Projects.id == id_project).first()
|
||||||
current_task = data_session.query(Quests).filter(Quests.id == id_task).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/<int:id_project>/file/<int:id_file>/delete')
|
@app.route('/project/<int:id_project>/file/<int:id_file>/delete')
|
||||||
def delete_file(id_project, id_file):
|
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 ''
|
from_path = request.args.get('from') if request.args.get('from') else ''
|
||||||
data_session = db_session.create_session()
|
data_session = db_session.create_session()
|
||||||
current_project = data_session.query(Projects).filter(Projects.id == id_project).first()
|
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/<int:id_project>/quest/<int:id_task>', methods=['GET', 'POST'])
|
@app.route('/project/<int:id_project>/quest/<int:id_task>', methods=['GET', 'POST'])
|
||||||
def task_project(id_project, id_task):
|
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()
|
data_session = db_session.create_session()
|
||||||
current_project = data_session.query(Projects).filter(Projects.id == id_project).first()
|
current_project = data_session.query(Projects).filter(Projects.id == id_project).first()
|
||||||
current_task = data_session.query(Quests).filter(Quests.id == id_task).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/<int:id_project>/quest/new', methods=['GET', 'POST'])
|
@app.route('/project/<int:id_project>/quest/new', methods=['GET', 'POST'])
|
||||||
def new_task_project(id_project):
|
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()
|
data_session = db_session.create_session()
|
||||||
current_project = data_session.query(Projects).filter(Projects.id == id_project).first()
|
current_project = data_session.query(Projects).filter(Projects.id == id_project).first()
|
||||||
if current_project:
|
if current_project:
|
||||||
@ -345,7 +363,9 @@ def new_task_project(id_project):
|
|||||||
|
|
||||||
@app.route('/project/<int:id_project>/edit', methods=['GET', 'POST'])
|
@app.route('/project/<int:id_project>/edit', methods=['GET', 'POST'])
|
||||||
def edit_project(id_project):
|
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()
|
data_session = db_session.create_session()
|
||||||
current_project = data_session.query(Projects).filter(Projects.id == id_project).first()
|
current_project = data_session.query(Projects).filter(Projects.id == id_project).first()
|
||||||
if current_project:
|
if current_project:
|
||||||
@ -382,6 +402,7 @@ def edit_project(id_project):
|
|||||||
data_session.commit()
|
data_session.commit()
|
||||||
current_project.name = form.name.data
|
current_project.name = form.name.data
|
||||||
current_project.description = form.description.data
|
current_project.description = form.description.data
|
||||||
|
current_project.is_template = form.is_template.data
|
||||||
data_session.commit()
|
data_session.commit()
|
||||||
return redirect(f'/project/{current_project.id}')
|
return redirect(f'/project/{current_project.id}')
|
||||||
if form.del_photo.data:
|
if form.del_photo.data:
|
||||||
@ -391,6 +412,7 @@ def edit_project(id_project):
|
|||||||
return redirect(f'/project/{current_project.id}/edit')
|
return redirect(f'/project/{current_project.id}/edit')
|
||||||
form.name.data = current_project.name
|
form.name.data = current_project.name
|
||||||
form.description.data = current_project.description
|
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,
|
return render_template('edit_project.html', title='Изменение проекта', form=form, list_users=list_users,
|
||||||
staff=staff, project=current_project)
|
staff=staff, project=current_project)
|
||||||
else:
|
else:
|
||||||
@ -403,7 +425,9 @@ def edit_project(id_project):
|
|||||||
|
|
||||||
@app.route('/project/<int:id_project>', methods=['POST', 'GET'])
|
@app.route('/project/<int:id_project>', methods=['POST', 'GET'])
|
||||||
def project(id_project):
|
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()
|
data_session = db_session.create_session()
|
||||||
current_project = data_session.query(Projects).filter(Projects.id == id_project).first()
|
current_project = data_session.query(Projects).filter(Projects.id == id_project).first()
|
||||||
if current_project:
|
if current_project:
|
||||||
@ -486,7 +510,9 @@ def recovery():
|
|||||||
|
|
||||||
@app.route('/project/<int:id_project>/delete', methods=['GET', 'POST'])
|
@app.route('/project/<int:id_project>/delete', methods=['GET', 'POST'])
|
||||||
def delete_project(id_project):
|
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()
|
data_session = db_session.create_session()
|
||||||
project_del = data_session.query(Projects).filter(Projects.id == id_project).first()
|
project_del = data_session.query(Projects).filter(Projects.id == id_project).first()
|
||||||
if project_del:
|
if project_del:
|
||||||
@ -511,7 +537,9 @@ def delete_project(id_project):
|
|||||||
|
|
||||||
@app.route('/user/<string:_login>', methods=['GET', 'POST'])
|
@app.route('/user/<string:_login>', methods=['GET', 'POST'])
|
||||||
def user_view(_login):
|
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()
|
data_session = db_session.create_session()
|
||||||
user = data_session.query(User).filter(User.login == _login).first()
|
user = data_session.query(User).filter(User.login == _login).first()
|
||||||
if user:
|
if user:
|
||||||
@ -532,7 +560,9 @@ def user_view(_login):
|
|||||||
|
|
||||||
@app.route('/projects/new', methods=['GET', 'POST'])
|
@app.route('/projects/new', methods=['GET', 'POST'])
|
||||||
def new_project():
|
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()
|
form = ProjectForm()
|
||||||
data_session = db_session.create_session()
|
data_session = db_session.create_session()
|
||||||
list_users = list(
|
list_users = list(
|
||||||
@ -569,7 +599,9 @@ def new_project():
|
|||||||
|
|
||||||
@app.route('/projects', methods=['GET', 'POST'])
|
@app.route('/projects', methods=['GET', 'POST'])
|
||||||
def projects():
|
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
|
find = False
|
||||||
form = FindProjectForm()
|
form = FindProjectForm()
|
||||||
data_session = db_session.create_session()
|
data_session = db_session.create_session()
|
||||||
@ -597,7 +629,9 @@ def projects():
|
|||||||
|
|
||||||
@app.route('/profile', methods=['GET', 'POST'])
|
@app.route('/profile', methods=['GET', 'POST'])
|
||||||
def profile():
|
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()
|
data_session = db_session.create_session()
|
||||||
form = EditProfileForm(
|
form = EditProfileForm(
|
||||||
CombinedMultiDict((request.files, request.form)),
|
CombinedMultiDict((request.files, request.form)),
|
||||||
|
|||||||
@ -26,35 +26,6 @@ body {
|
|||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: row;
|
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 {
|
.link_back {
|
||||||
background-color: #ffffff;
|
background-color: #ffffff;
|
||||||
color: #000000;
|
color: #000000;
|
||||||
|
|||||||
@ -309,7 +309,6 @@
|
|||||||
background-color: #000000;
|
background-color: #000000;
|
||||||
border: 2px solid #ffffff;
|
border: 2px solid #ffffff;
|
||||||
border-radius: 3vw;
|
border-radius: 3vw;
|
||||||
margin-left: 2vw;
|
|
||||||
}
|
}
|
||||||
.quest_solve_link:hover {
|
.quest_solve_link:hover {
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
@ -328,14 +327,14 @@
|
|||||||
#quest_solve_link_id {
|
#quest_solve_link_id {
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
.link_back_block {
|
.link_back_block, .link_edit_block {
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
flex-wrap: nowrap;
|
flex-wrap: nowrap;
|
||||||
}
|
}
|
||||||
.link_back {
|
.link_back, .link_edit {
|
||||||
background-color: #ffffff;
|
background-color: #ffffff;
|
||||||
color: #000000;
|
color: #000000;
|
||||||
width: 15vw;
|
width: 15vw;
|
||||||
@ -346,11 +345,14 @@
|
|||||||
align-items: center;
|
align-items: center;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
}
|
}
|
||||||
.link_back:hover {
|
.link_edit {
|
||||||
|
width: 13vw;
|
||||||
|
}
|
||||||
|
.link_back:hover, .link_edit:hover {
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
color: #000000;
|
color: #000000;
|
||||||
}
|
}
|
||||||
.link_back_text {
|
.link_back_text, .link_edit_text {
|
||||||
font-size: 1.5vw;
|
font-size: 1.5vw;
|
||||||
margin-top: 15px;
|
margin-top: 15px;
|
||||||
display: flex;
|
display: flex;
|
||||||
@ -415,4 +417,15 @@
|
|||||||
}
|
}
|
||||||
.button_text {
|
.button_text {
|
||||||
font-size: 1.3vw;
|
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;
|
||||||
}
|
}
|
||||||
@ -7,13 +7,6 @@
|
|||||||
<p class="link_back_text">К проекту</p>
|
<p class="link_back_text">К проекту</p>
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
{% if task.creator == current_user.id or project.creator == current_user.id %}
|
|
||||||
<div class="link_edit_block">
|
|
||||||
<a class="link_edit" href="{{ task.id }}/edit">
|
|
||||||
<p class="link_edit_text">Редактировать</p>
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
{% endif %}
|
|
||||||
</div>
|
</div>
|
||||||
<div class="name_block">
|
<div class="name_block">
|
||||||
<div class="title_block">
|
<div class="title_block">
|
||||||
|
|||||||
@ -46,6 +46,12 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="buttons_form_block">
|
<div class="buttons_form_block">
|
||||||
|
<div class="box">
|
||||||
|
{{ form.is_template(class="is_template")}} {{form.is_template.label }}<br/>
|
||||||
|
{% for error in form.is_template.errors %}
|
||||||
|
<div class="alert alert-danger" role="alert">{{ error }}</div>
|
||||||
|
{% endfor %}
|
||||||
|
</div>
|
||||||
{% if 'none' in project.photo %}
|
{% if 'none' in project.photo %}
|
||||||
<div class="form_data">
|
<div class="form_data">
|
||||||
<label class="form_label">{{ form.logo.label }}</label>
|
<label class="form_label">{{ form.logo.label }}</label>
|
||||||
|
|||||||
@ -15,7 +15,7 @@
|
|||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
{% else %}
|
{% else %}
|
||||||
<p style="width: 12vw;"> </p>
|
<p style="width: 12vw;"></p>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
<div class="brand_block">
|
<div class="brand_block">
|
||||||
@ -62,10 +62,11 @@
|
|||||||
data-bs-target="#panelsStayOpen-collapse{{ quest.id }}" aria-expanded="true"
|
data-bs-target="#panelsStayOpen-collapse{{ quest.id }}" aria-expanded="true"
|
||||||
aria-controls="panelsStayOpen-collapse{{ quest.id }}">
|
aria-controls="panelsStayOpen-collapse{{ quest.id }}">
|
||||||
<div class="quest_button_block_one">
|
<div class="quest_button_block_one">
|
||||||
<div class="quest_title_block"{% if project.is_template %}style="width:100%;!important"{% endif %}>
|
<div class="quest_title_block" {% if project.is_template
|
||||||
|
%}style="width:100%;!important" {% endif %}>
|
||||||
<p class="quest_title">{{ quest.name }}</p>
|
<p class="quest_title">{{ quest.name }}</p>
|
||||||
</div>
|
</div>
|
||||||
{% if not project.is_template %}
|
{% if not project.is_template %}
|
||||||
</div>
|
</div>
|
||||||
{% if quest.overdue == 'yes' and quest.realized != 1 %}
|
{% if quest.overdue == 'yes' and quest.realized != 1 %}
|
||||||
<div class="deadline_block alert alert-danger" role="alert">
|
<div class="deadline_block alert alert-danger" role="alert">
|
||||||
@ -103,11 +104,20 @@
|
|||||||
<p class="quest_description_text">{{ quest.description }}</p>
|
<p class="quest_description_text">{{ quest.description }}</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="quest_buttons_block">
|
||||||
<div class="quest_solve_button">
|
<div class="quest_solve_button">
|
||||||
<a class="quest_solve_link" href="{{ project.id }}/quest/{{ quest.id }}">
|
<a class="quest_solve_link" href="{{ project.id }}/quest/{{ quest.id }}">
|
||||||
<p class="quest_solve_text">Решить</p>
|
<p class="quest_solve_text">Решить</p>
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
|
{% if quest.creator == current_user.id or project.creator == current_user.id %}
|
||||||
|
<div class="link_edit_block">
|
||||||
|
<a class="link_edit" href="{{ project.id }}/quest/{{ quest.id }}/edit">
|
||||||
|
<p class="link_edit_text">Редактировать</p>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
{% endif %}
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{% else %}
|
{% else %}
|
||||||
<div class="quest_body">
|
<div class="quest_body">
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user