From 7bda367cc8b583ffbac74e38dbdc6a90d146a8f5 Mon Sep 17 00:00:00 2001 From: Col Crunch Date: Wed, 11 Jul 2018 00:11:36 -0400 Subject: [PATCH 1/5] No need to allow more than one request. --- allianceauth/groupmanagement/views.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/allianceauth/groupmanagement/views.py b/allianceauth/groupmanagement/views.py index ee564a2d..3c199129 100755 --- a/allianceauth/groupmanagement/views.py +++ b/allianceauth/groupmanagement/views.py @@ -299,6 +299,11 @@ def group_request_add(request, group_id): logger.info("%s joining %s as is an open group" % (request.user, group)) request.user.groups.add(group) return redirect("groupmanagement:groups") + req = GroupRequest.objects.filter(user=request.user, group=group) + if len(req) > 0: + logger.info("%s attempted to join %s but already has an open application" % (request.user, group)) + messages.warning(request, "You already have a pending application for that group.") + return redirect("groupmanagement:groups") grouprequest = GroupRequest() grouprequest.status = _('Pending') grouprequest.group = group From c1d7994045dfec373bacc960e420a46f3bed0c64 Mon Sep 17 00:00:00 2001 From: Col Crunch Date: Wed, 11 Jul 2018 00:47:04 -0400 Subject: [PATCH 2/5] Add setting to allow for unrestricted leaving of all groups. --- allianceauth/groupmanagement/views.py | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/allianceauth/groupmanagement/views.py b/allianceauth/groupmanagement/views.py index 3c199129..3e575e9c 100755 --- a/allianceauth/groupmanagement/views.py +++ b/allianceauth/groupmanagement/views.py @@ -14,6 +14,8 @@ from .models import GroupRequest from allianceauth.notifications import notify +from django.conf import settings + logger = logging.getLogger(__name__) @@ -333,6 +335,18 @@ def group_request_leave(request, group_id): logger.info("%s leaving %s as is an open group" % (request.user, group)) request.user.groups.remove(group) return redirect("groupmanagement:groups") + req = GroupRequest.objects.filter(user=request.user, group=group) + if len(req) > 0: + logger.info("%s attempted to leave %s but already has an pending leave request." % (request.user, group)) + messages.warning(request, "You already have a pending leave request for that group.") + return redirect("groupmanagement:groups") + if hasattr(settings, 'AUTO_LEAVE'): + if settings.auto_leave: + logger.info("%s leaving joinable group %s due to auto_leave" % (request.user, group)) + request.user.groups.remove(group) + return redirect('groupmanagement:groups') + else: + pass grouprequest = GroupRequest() grouprequest.status = _('Pending') grouprequest.group = group From 4374064d98cdc3a8f20c38c736b716b7ed213b07 Mon Sep 17 00:00:00 2001 From: Col Crunch Date: Wed, 11 Jul 2018 00:48:51 -0400 Subject: [PATCH 3/5] Case matters --- allianceauth/groupmanagement/views.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/allianceauth/groupmanagement/views.py b/allianceauth/groupmanagement/views.py index 3e575e9c..f10b9a55 100755 --- a/allianceauth/groupmanagement/views.py +++ b/allianceauth/groupmanagement/views.py @@ -341,7 +341,7 @@ def group_request_leave(request, group_id): messages.warning(request, "You already have a pending leave request for that group.") return redirect("groupmanagement:groups") if hasattr(settings, 'AUTO_LEAVE'): - if settings.auto_leave: + if settings.AUTO_LEAVE: logger.info("%s leaving joinable group %s due to auto_leave" % (request.user, group)) request.user.groups.remove(group) return redirect('groupmanagement:groups') From 12e6cc63e8bc2090de62a0cafc883682f83b0301 Mon Sep 17 00:00:00 2001 From: colcrunch Date: Sun, 5 Aug 2018 03:34:16 -0400 Subject: [PATCH 4/5] Refine auto_leave check. --- allianceauth/groupmanagement/views.py | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/allianceauth/groupmanagement/views.py b/allianceauth/groupmanagement/views.py index f10b9a55..e0adeff2 100755 --- a/allianceauth/groupmanagement/views.py +++ b/allianceauth/groupmanagement/views.py @@ -340,13 +340,10 @@ def group_request_leave(request, group_id): logger.info("%s attempted to leave %s but already has an pending leave request." % (request.user, group)) messages.warning(request, "You already have a pending leave request for that group.") return redirect("groupmanagement:groups") - if hasattr(settings, 'AUTO_LEAVE'): - if settings.AUTO_LEAVE: - logger.info("%s leaving joinable group %s due to auto_leave" % (request.user, group)) - request.user.groups.remove(group) - return redirect('groupmanagement:groups') - else: - pass + if hasattr(settings, 'AUTO_LEAVE', False) and settings.AUTO_LEAVE: + logger.info("%s leaving joinable group %s due to auto_leave" % (request.user, group)) + request.user.groups.remove(group) + return redirect('groupmanagement:groups') grouprequest = GroupRequest() grouprequest.status = _('Pending') grouprequest.group = group From 0af188c6ab4b24d9245257a492541c12b3009f36 Mon Sep 17 00:00:00 2001 From: colcrunch Date: Wed, 29 Aug 2018 21:28:14 -0400 Subject: [PATCH 5/5] Disallow applying to groups the user is already a member of --- allianceauth/groupmanagement/views.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/allianceauth/groupmanagement/views.py b/allianceauth/groupmanagement/views.py index e0adeff2..bc901a6f 100755 --- a/allianceauth/groupmanagement/views.py +++ b/allianceauth/groupmanagement/views.py @@ -291,6 +291,12 @@ def group_request_add(request, group_id): (request.user, group_id)) messages.warning(request, _("You cannot join that group")) return redirect('groupmanagement:groups') + if group in request.user.groups.all(): + # User is already a member of this group. + logger.warning("User %s attempted to join group id %s but they are already a member." % + (request.user, group_id)) + messages.warning(request, "You are already a member of that group.") + return redirect('groupmanagement:groups') if not request.user.has_perm('groupmanagement.request_groups') and not group.authgroup.public: # Does not have the required permission, trying to join a non-public group logger.warning("User %s attempted to join group id %s but it is not a public group" %