Edit service

This commit is contained in:
2025-04-16 13:10:01 +02:00
parent 7945a61ce0
commit 35f95d5479
4 changed files with 73 additions and 14 deletions

View File

@@ -1,13 +1,9 @@
from flask_wtf import FlaskForm # type: ignore from flask_wtf import FlaskForm # type: ignore
from wtforms import ( from wtforms import StringField, SubmitField, URLField
StringField,
SubmitField,
URLField,
)
from wtforms.validators import DataRequired from wtforms.validators import DataRequired
class ServiceForm(FlaskForm): class ServiceForm(FlaskForm):
name = StringField("Service name:", validators=[DataRequired()]) name = StringField("Service name:", validators=[DataRequired()])
url = URLField("Service URL:", validators=[DataRequired()]) url = URLField("Service URL:", validators=[DataRequired()])
submit = SubmitField("Add") submit = SubmitField("Submit")

View File

@@ -8,7 +8,8 @@
<div class="bg-light container-xxl"> <div class="bg-light container-xxl">
<div class="row row-cols-3"> <div class="row row-cols-3">
<div class="col-sm-2" onclick="location.href='{{service.url}}';" style="cursor: pointer;"> <div class="col-sm-2" onclick="location.href='{{service.url}}';" style="cursor: pointer;">
<img class="fit-picture" src="https://upload.wikimedia.org/wikipedia/commons/thumb/c/c1/Google_%22G%22_logo.svg/2048px-Google_%22G%22_logo.svg.png"> <img class="fit-picture"
src="https://upload.wikimedia.org/wikipedia/commons/thumb/c/c1/Google_%22G%22_logo.svg/2048px-Google_%22G%22_logo.svg.png">
</div> </div>
<div class="col-sm-10"> <div class="col-sm-10">
<div class="row"> <div class="row">
@@ -16,14 +17,21 @@
{{service["name"]}} {{service["name"]}}
</div> </div>
<div class="col-sm-2 dots dropdown"> <div class="col-sm-2 dots dropdown">
<button class="btn btn-light" type="button" id="threeDotDropdown" data-bs-toggle="dropdown" aria-expanded="false"> <button class="btn btn-light" type="button" id="threeDotDropdown" data-bs-toggle="dropdown"
aria-expanded="false">
&#x22EE; &#x22EE;
</button> </button>
<ul class="dropdown-menu" aria-labelledby="threeDotDropdown"> <ul class="dropdown-menu" aria-labelledby="threeDotDropdown">
<li><a class="dropdown-item">Edit</a></li>
<li><hr class="dropdown-divider"></li>
<li> <li>
<form action="{{ url_for('dash.delete_item', service_id=service.id) }}" method="POST" style="display:inline;"> <a class="dropdown-item"
href="{{ url_for('dash.edit_service', service_id=service.id) }}">Edit</a>
</li>
<li>
<hr class="dropdown-divider">
</li>
<li>
<form action="{{ url_for('dash.delete_item', service_id=service.id) }}" method="POST"
style="display:inline;">
<button type="submit" class="dropdown-item">Delete</button> <button type="submit" class="dropdown-item">Delete</button>
</form> </form>
</li> </li>

View File

@@ -5,5 +5,47 @@ Add service
{% endblock %} {% endblock %}
{% block content %} {% block content %}
123 <form class="form bg-body-tertiary" method="POST">
{{ form.hidden_tag() }}
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;">
<symbol id="check-circle-fill" fill="currentColor" viewBox="0 0 16 16">
<path
d="M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0zm-3.97-3.03a.75.75 0 0 0-1.08.022L7.477 9.417 5.384 7.323a.75.75 0 0 0-1.06 1.06L6.97 11.03a.75.75 0 0 0 1.079-.02l3.992-4.99a.75.75 0 0 0-.01-1.05z" />
</symbol>
<symbol id="exclamation-triangle-fill" fill="currentColor" viewBox="0 0 16 16">
<path
d="M8.982 1.566a1.13 1.13 0 0 0-1.96 0L.165 13.233c-.457.778.091 1.767.98 1.767h13.713c.889 0 1.438-.99.98-1.767L8.982 1.566zM8 5c.535 0 .954.462.9.995l-.35 3.507a.552.552 0 0 1-1.1 0L7.1 5.995A.905.905 0 0 1 8 5zm.002 6a1 1 0 1 1 0 2 1 1 0 0 1 0-2z" />
</symbol>
</svg>
{% if feedback %}
{% if feedback=="Service succesfully added" %}
<div class="alert alert-success d-flex align-items-center" role="alert">
<svg class="bi flex-shrink-0 me-2" width="24" height="24" role="img" aria-label="Success:">
<use xlink:href="#check-circle-fill" />
</svg>
<div>
{{feedback}}
</div>
</div>
{% else %}
<div class="alert alert-danger d-flex align-items-center" role="alert">
<svg class="bi flex-shrink-0 me-2" width="24" height="24" role="img" aria-label="Danger:">
<use xlink:href="#exclamation-triangle-fill" />
</svg>
<div>
{{feedback}}
</div>
</div>
{% endif %}
{% endif %}
<div>
{{ form.name.label }} <br> {{ form.name() }}
</div>
<div>
{{ form.url.label }} <br> {{ form.url() }}
</div>
<div class="submit">
{{ form.submit(value="Edit") }}
</div>
</form>
{% endblock %} {% endblock %}

View File

@@ -56,11 +56,24 @@ def service():
) )
@dash_blueprint.route("/edit_service/<int:service_id>", methods=["POST"]) @dash_blueprint.route(
"/edit_service/<int:service_id>", methods=["GET", "POST"]
)
@login_required @login_required
def edit_service(service_id: int): def edit_service(service_id: int):
service = Service.query.get_or_404(service_id) service = Service.query.get_or_404(service_id)
if current_user.id != service.user_id: if current_user.id != service.user_id:
redirect(url_for("dash.index")) redirect(url_for("dash.index"))
return render_template("edit_service.html") # Correcte gebruiker
form = ServiceForm()
if form.validate_on_submit(): # type: ignore
if service.name != form.name.data or service.url != form.url.data:
service.name = form.name.data
service.url = form.url.data
db.session.commit()
return redirect(url_for("dash.index"))
# Fill in correct data
form = ServiceForm(name=service.name, url=service.url)
return render_template("edit_service.html", form=form)