Merge branch 'group_application_fix' into 'master'

Group Application Tweaks

See merge request allianceauth/allianceauth!1096
This commit is contained in:
Basraah 2018-10-09 05:15:30 +00:00
commit 4947e0c483

View File

@ -14,6 +14,8 @@ from .models import GroupRequest, RequestLog
from allianceauth.notifications import notify
from django.conf import settings
logger = logging.getLogger(__name__)
@ -327,6 +329,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" %
@ -337,6 +345,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
@ -366,6 +379,15 @@ 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', 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