feat: Re-add functionality to set AN as checked

This commit is contained in:
2025-07-13 09:12:24 +02:00
parent d12989d195
commit 5d9b8f3213
2 changed files with 34 additions and 15 deletions

View File

@@ -76,10 +76,14 @@
{% if has_edit_permission %} {% if has_edit_permission %}
<a class="dropdown-item"> <form class="dropdown-item" method="POST">
<i class="fas fa-check fa-fw" {% csrf_token %}
aria-hidden="true"></i> {% trans 'Alsalhost:8000/ aktiv bestätigen' %} <input type="hidden" name="action" value="checked_active">
</a> <button type="submit" id="submit">
<i class="fas fa-check fa-fw"
aria-hidden="true"></i> {% trans 'Als aktiv bestätigen' %}
</button>
</form>
<a class="dropdown-item" <a class="dropdown-item"
href="{% url 'adoption-notice-edit' adoption_notice_id=adoption_notice.pk %}"> href="{% url 'adoption-notice-edit' adoption_notice_id=adoption_notice.pk %}">
<i class="fas fa-pencil fa-fw" <i class="fas fa-pencil fa-fw"

View File

@@ -85,6 +85,24 @@ def change_language(request):
return render(request, "fellchensammlung/errors/403.html", status=403) return render(request, "fellchensammlung/errors/403.html", status=403)
def handle_an_check_actions(request, action, adoption_notice=None):
if adoption_notice is None:
adoption_notice = AdoptionNotice.objects.get(id=request.POST.get("adoption_notice_id"))
edit_permission = request.user == adoption_notice.owner or user_is_trust_level_or_above(request.user,
TrustLevel.MODERATOR)
# Check if the user is permitted to perform the actions
if action in ("checked_inactive", "checked_active") and not request.user.is_authenticated or not edit_permission:
return render(request, "fellchensammlung/errors/403.html", status=403)
if action == "checked_inactive":
adoption_notice.set_closed()
elif action == "checked_active":
print("dads")
adoption_notice.set_active()
return None
def adoption_notice_detail(request, adoption_notice_id): def adoption_notice_detail(request, adoption_notice_id):
adoption_notice = AdoptionNotice.objects.get(id=adoption_notice_id) adoption_notice = AdoptionNotice.objects.get(id=adoption_notice_id)
if request.user.is_authenticated: if request.user.is_authenticated:
@@ -98,6 +116,7 @@ def adoption_notice_detail(request, adoption_notice_id):
has_edit_permission = user_is_owner_or_trust_level(request.user, adoption_notice) has_edit_permission = user_is_owner_or_trust_level(request.user, adoption_notice)
if request.method == 'POST': if request.method == 'POST':
action = request.POST.get("action") action = request.POST.get("action")
handle_an_check_actions(request, action, adoption_notice)
if request.user.is_authenticated: if request.user.is_authenticated:
if action == "comment": if action == "comment":
comment_form = CommentForm(request.POST) comment_form = CommentForm(request.POST)
@@ -601,9 +620,10 @@ def my_notifications(request):
action = request.POST.get("action") action = request.POST.get("action")
process_notification_actions(request, action) process_notification_actions(request, action)
context = {"notifications_unread": Notification.objects.filter(user_to_notify=request.user, read=False).order_by("-created_at"), context = {"notifications_unread": Notification.objects.filter(user_to_notify=request.user, read=False).order_by(
"-created_at"),
"notifications_read_last": Notification.objects.filter(user_to_notify=request.user, "notifications_read_last": Notification.objects.filter(user_to_notify=request.user,
read=True).order_by("-read_at") } read=True).order_by("-read_at")}
return render(request, 'fellchensammlung/notifications.html', context=context) return render(request, 'fellchensammlung/notifications.html', context=context)
@@ -617,16 +637,11 @@ def modqueue(request):
@login_required @login_required
def updatequeue(request): def updatequeue(request):
if request.method == "POST": if request.method == "POST":
adoption_notice = AdoptionNotice.objects.get(id=request.POST.get("adoption_notice_id"))
edit_permission = request.user == adoption_notice.owner or user_is_trust_level_or_above(request.user,
TrustLevel.MODERATOR)
if not edit_permission:
return render(request, "fellchensammlung/errors/403.html", status=403)
action = request.POST.get("action") action = request.POST.get("action")
if action == "checked_inactive":
adoption_notice.set_closed() # This function handles the activation and deactivation of ANs
if action == "checked_active": # Separate function because it's used in multiple places
adoption_notice.set_active() handle_an_check_actions(request, action)
if user_is_trust_level_or_above(request.user, TrustLevel.MODERATOR): if user_is_trust_level_or_above(request.user, TrustLevel.MODERATOR):
last_checked_adoption_list = AdoptionNotice.objects.order_by("last_checked") last_checked_adoption_list = AdoptionNotice.objects.order_by("last_checked")