Merge branch 'retract-group-application-button' into 'master'

[ADD] Retract group application button

See merge request allianceauth/allianceauth!1748
This commit is contained in:
Peter Pfeufer 2025-08-10 02:31:16 +00:00
commit bb53816360
3 changed files with 52 additions and 4 deletions

View File

@ -70,8 +70,8 @@
{% translate "Leave" %} {% translate "Leave" %}
</a> </a>
{% else %} {% else %}
<button type="button" class="btn btn-primary" disabled> <button type="button" class="btn btn-secondary cursor-help me-1" data-bs-tooltip="aa-tooltip" title="{% translate 'Request pending' %}">
{% translate "Pending" %} <i class="fa-regular fa-hourglass-half"></i>
</button> </button>
{% endif %} {% endif %}
{% elif not g.request %} {% elif not g.request %}
@ -85,9 +85,13 @@
</a> </a>
{% endif %} {% endif %}
{% else %} {% else %}
<button type="button" class="btn btn-primary" disabled> <button type="button" class="btn btn-secondary cursor-help me-1" data-bs-tooltip="aa-tooltip" title="{% translate 'Request pending' %}">
{% translate "Pending" %} <i class="fa-regular fa-hourglass-half"></i>
</button> </button>
<a href="{% url 'groupmanagement:request_retract' g.group.id %}" class="btn btn-danger">
{% translate "Retract" %}
</a>
{% endif %} {% endif %}
</td> </td>
</tr> </tr>

View File

@ -10,6 +10,11 @@ urlpatterns = [
path( path(
"group/request/leave/<int:group_id>/", views.group_request_leave, name="request_leave" "group/request/leave/<int:group_id>/", views.group_request_leave, name="request_leave"
), ),
path(
"group/request/retract/<int:group_id>/",
views.group_request_retract,
name="request_retract"
),
# group management # group management
path("groupmanagement/requests/", views.group_management, name="management"), path("groupmanagement/requests/", views.group_management, name="management"),
path("groupmanagement/membership/", views.group_membership, name="membership"), path("groupmanagement/membership/", views.group_membership, name="membership"),

View File

@ -420,3 +420,42 @@ def group_request_leave(request, group_id):
grouprequest.notify_leaders() grouprequest.notify_leaders()
messages.success(request, _('Applied to leave group %(group)s.') % {"group": group}) messages.success(request, _('Applied to leave group %(group)s.') % {"group": group})
return redirect("groupmanagement:groups") return redirect("groupmanagement:groups")
@login_required
def group_request_retract(request, group_id):
logger.debug(
f"group_request_retract called by user {request.user} for group id {group_id}"
)
group = get_object_or_404(Group, id=group_id)
if not GroupManager.check_internal_group(group):
logger.warning(
f"User {request.user} attempted to retract group request for "
f"group id {group_id} but it is not a joinable group"
)
messages.warning(
request,
_("You cannot retract that request"),
)
return redirect('groupmanagement:groups')
try:
group_request = GroupRequest.objects.get(
user=request.user, group=group, leave_request=False
)
group_request.delete()
logger.info(f"Deleted group request for user {request.user} to group {group}")
messages.success(
request, _('Retracted application to group %(group)s.') % {"group": group}
)
except GroupRequest.DoesNotExist:
logger.info(
f"{request.user} attempted to retract group request for "
f"group id {group_id} but has no open request"
)
messages.warning(
request, _("You have no open request for that group.")
)
return redirect("groupmanagement:groups")