feat: add page for updating the exclusion reason where it's not set yet

This commit is contained in:
2025-10-20 18:33:15 +02:00
parent e20e6d4b1d
commit f69eccd0e4
11 changed files with 101 additions and 64 deletions

View File

@@ -19,53 +19,10 @@
<div class="columns"> <div class="columns">
<div class="column"> <div class="column">
<div class="block"> <div class="block">
<div class="card"> {% include "fellchensammlung/partials/rescue_orgs/partial-basic-info-card.html" %}
<div class="card-header">
<h1 class="card-header-title">{{ org.name }}</h1>
</div>
<div class="card-content">
<div class="block">
<b><i class="fa-solid fa-location-dot"></i></b>
{% if org.location %}
{{ org.location }}
{% else %}
{{ org.location_string }}
{% endif %}
{% if org.description %}
<div class="block content">
<p>{{ org.description | render_markdown }}</p>
</div>
{% endif %}
</div>
{% if org.specializations %}
<div class="block">
<h3 class="title is-5">{% translate 'Spezialisierung' %}</h3>
<div class="content">
<ul>
{% for specialization in org.specializations.all %}
<li>{{ specialization }}</li>
{% endfor %}
</ul>
</div>
</div>
{% endif %}
{% if org.parent_org %}
<div class="block">
<h3 class="title is-5">{% translate 'Übergeordnete Organisation' %}</h3>
<p>
<span>
<i class="fa-solid fa-building fa-fw"
aria-label="{% trans 'Tierschutzorganisation' %}"></i>
<a href="{{ org.parent_org.get_absolute_url }}"> {{ org.parent_org }}</a>
</span>
</p>
</div>
{% endif %}
</div>
</div>
</div> </div>
<div class="block"> <div class="block">
{% include "fellchensammlung/partials/partial-rescue-organization-contact.html" %} {% include "fellchensammlung/partials/rescue_orgs/partial-rescue-organization-contact.html" %}
</div> </div>
<div class="block"> <div class="block">
<a class="button is-warning is-fullwidth" href="{% url org_meta|admin_urlname:'change' org.pk %}"> <a class="button is-warning is-fullwidth" href="{% url org_meta|admin_urlname:'change' org.pk %}">

View File

@@ -1,18 +1,35 @@
{% extends "fellchensammlung/base.html" %} {% extends "fellchensammlung/base.html" %}
{% load i18n %} {% load i18n %}
{% load widget_tweaks %} {% load widget_tweaks %}
{% load admin_urls %}
{% block title %} {% block title %}
<title>Organisation {{ rescue_org }} von regelmäßiger Prüfung ausschließen</title> <title>Organisation {{ org }} von regelmäßiger Prüfung ausschließen</title>
{% endblock %} {% endblock %}
{% block content %} {% block content %}
<h1 class="title is-1">Organisation {{ rescue_org }} von regelmäßiger Prüfung ausschließen</h1> <h1 class="title is-1">Organisation {{ org }} von regelmäßiger Prüfung ausschließen</h1>
<form method="post"> <div class="columns block">
{% csrf_token %} <div class="column">
{{ form }} {% include "fellchensammlung/partials/rescue_orgs/partial-basic-info-card.html" %}
</div>
<div class="column">
{% include "fellchensammlung/partials/rescue_orgs/partial-rescue-organization-contact.html" %}
</div>
</div>
<div class="block">
<form method="post">
{% csrf_token %}
{{ form }}
<a class="button" href="{% url 'organization-check' %}">{% translate "Zurück (nicht exkludieren)" %}</a> <a class="button" href="{% url 'organization-check' %}">{% translate "Zurück (nicht exkludieren)" %}</a>
<input class="button is-danger" type="submit" name="delete" value="{% translate "Von regelmäßiger Prüfung ausschließen" %}"> <input class="button is-danger" type="submit" name="delete"
</form> value="{% translate "Von regelmäßiger Prüfung ausschließen" %}">
</form>
</div>
<div class="block">
<a class="button is-warning is-fullwidth" href="{% url org_meta|admin_urlname:'change' org.pk %}">
<i class="fa-solid fa-tools fa-fw"></i> Admin interface
</a>
</div>
{% endblock %} {% endblock %}

View File

@@ -3,7 +3,7 @@
{% if rescue_organizations %} {% if rescue_organizations %}
{% for rescue_organization in rescue_organizations %} {% for rescue_organization in rescue_organizations %}
<div class="cell"> <div class="cell">
{% include "fellchensammlung/partials/partial-rescue-organization.html" %} {% include "fellchensammlung/partials/rescue_orgs/partial-rescue-organization.html" %}
</div> </div>
{% endfor %} {% endfor %}
{% else %} {% else %}

View File

@@ -0,0 +1,46 @@
{% load i18n %}
{% load custom_tags %}
<div class="card">
<div class="card-header">
<h1 class="card-header-title">{{ org.name }}</h1>
</div>
<div class="card-content">
<div class="block">
<b><i class="fa-solid fa-location-dot"></i></b>
{% if org.location %}
{{ org.location }}
{% else %}
{{ org.location_string }}
{% endif %}
{% if org.description %}
<div class="block content">
<p>{{ org.description | render_markdown }}</p>
</div>
{% endif %}
</div>
{% if org.specializations %}
<div class="block">
<h3 class="title is-5">{% translate 'Spezialisierung' %}</h3>
<div class="content">
<ul>
{% for specialization in org.specializations.all %}
<li>{{ specialization }}</li>
{% endfor %}
</ul>
</div>
</div>
{% endif %}
{% if org.parent_org %}
<div class="block">
<h3 class="title is-5">{% translate 'Übergeordnete Organisation' %}</h3>
<p>
<span>
<i class="fa-solid fa-building fa-fw"
aria-label="{% trans 'Tierschutzorganisation' %}"></i>
<a href="{{ org.parent_org.get_absolute_url }}"> {{ org.parent_org }}</a>
</span>
</p>
</div>
{% endif %}
</div>
</div>

View File

@@ -38,7 +38,7 @@
<div class="grid is-col-min-15"> <div class="grid is-col-min-15">
{% for rescue_org in rescue_orgs_to_check %} {% for rescue_org in rescue_orgs_to_check %}
<div class="cell"> <div class="cell">
{% include "fellchensammlung/partials/partial-check-rescue-org.html" %} {% include "fellchensammlung/partials/rescue_orgs/partial-check-rescue-org.html" %}
</div> </div>
{% endfor %} {% endfor %}
</div> </div>
@@ -50,7 +50,7 @@
<div class="grid is-col-min-15"> <div class="grid is-col-min-15">
{% for rescue_org in rescue_orgs_with_ongoing_communication %} {% for rescue_org in rescue_orgs_with_ongoing_communication %}
<div class="cell"> <div class="cell">
{% include "fellchensammlung/partials/partial-check-rescue-org.html" %} {% include "fellchensammlung/partials/rescue_orgs/partial-check-rescue-org.html" %}
</div> </div>
{% endfor %} {% endfor %}
</div> </div>
@@ -62,7 +62,7 @@
<div class="grid is-col-min-15"> <div class="grid is-col-min-15">
{% for rescue_org in rescue_orgs_last_checked %} {% for rescue_org in rescue_orgs_last_checked %}
<div class="cell"> <div class="cell">
{% include "fellchensammlung/partials/partial-check-rescue-org.html" %} {% include "fellchensammlung/partials/rescue_orgs/partial-check-rescue-org.html" %}
</div> </div>
{% endfor %} {% endfor %}
</div> </div>

View File

@@ -49,6 +49,8 @@ urlpatterns = [
name="rescue-organization-detail"), name="rescue-organization-detail"),
path("tierschutzorganisationen/<int:rescue_organization_id>/exkludieren", views.exclude_from_regular_check, path("tierschutzorganisationen/<int:rescue_organization_id>/exkludieren", views.exclude_from_regular_check,
name="rescue-organization-exclude"), name="rescue-organization-exclude"),
path("tierschutzorganisationen/add-exclusion-reason", views.update_exclusion_reason,
name="rescue-organization-add-exclusion-reason"),
path("tierschutzorganisationen/spezialisierung/<slug:species_slug>", views.specialized_rescues, path("tierschutzorganisationen/spezialisierung/<slug:species_slug>", views.specialized_rescues,
name="specialized-rescue-organizations"), name="specialized-rescue-organizations"),

View File

@@ -897,23 +897,38 @@ def rescue_organization_check_dq(request):
return rescue_organization_check(request, context) return rescue_organization_check(request, context)
@user_passes_test(user_is_trust_level_or_above) def exclude_from_regular_check(request, rescue_organization_id, source="organization-check"):
def exclude_from_regular_check(request, rescue_organization_id):
rescue_org = get_object_or_404(RescueOrganization, pk=rescue_organization_id) rescue_org = get_object_or_404(RescueOrganization, pk=rescue_organization_id)
if request.method == "POST": if request.method == "POST":
form = UpdateRescueOrgRegularCheckStatus(request.POST, instance=rescue_org) form = UpdateRescueOrgRegularCheckStatus(request.POST, instance=rescue_org)
if form.is_valid(): if form.is_valid():
form.save() form.save()
if form.cleaned_data["regular_check_status"] != RegularCheckStatusChoices.REGULAR_CHECK: to_be_excluded = form.cleaned_data["regular_check_status"] != RegularCheckStatusChoices.REGULAR_CHECK
rescue_org.exclude_from_check = True rescue_org.exclude_from_check = to_be_excluded
rescue_org.save() rescue_org.save()
return redirect(reverse("organization-check"))
return redirect(reverse(source))
else: else:
form = UpdateRescueOrgRegularCheckStatus(instance=rescue_org) form = UpdateRescueOrgRegularCheckStatus(instance=rescue_org)
context = {"form": form, rescue_org: rescue_org} org_meta = rescue_org._meta
context = {"form": form, "org": rescue_org, "org_meta": org_meta}
return render(request, 'fellchensammlung/forms/form-exclude-org-from-check.html', context=context) return render(request, 'fellchensammlung/forms/form-exclude-org-from-check.html', context=context)
@user_passes_test(user_is_trust_level_or_above)
def update_exclusion_reason(request):
"""
This view will redirect to update a rescue org that not yet has an exclusion reason but is excluded
"""
orgs_to_check = RescueOrganization.objects.filter(exclude_from_check=True,
regular_check_status=RegularCheckStatusChoices.REGULAR_CHECK)
if orgs_to_check.count() > 0:
return exclude_from_regular_check(request, orgs_to_check[0].pk,
source="rescue-organization-add-exclusion-reason")
else:
return render(request, "fellchensammlung/errors/404.html", status=404)
@user_passes_test(user_is_trust_level_or_above) @user_passes_test(user_is_trust_level_or_above)
def moderation_tools_overview(request): def moderation_tools_overview(request):
context = None context = None