From 281dbdbb01eba4a8e57a9f7d51278dac9f493e80 Mon Sep 17 00:00:00 2001 From: Peter Pfeufer Date: Sun, 25 Oct 2020 11:21:35 +0100 Subject: [PATCH] proper URL structure established --- .../groupmanagement/groupmembership.html | 13 +- allianceauth/groupmanagement/urls.py | 69 ++- allianceauth/groupmanagement/views.py | 457 ++++++++++++------ 3 files changed, 368 insertions(+), 171 deletions(-) diff --git a/allianceauth/groupmanagement/templates/groupmanagement/groupmembership.html b/allianceauth/groupmanagement/templates/groupmanagement/groupmembership.html index d4c0ad8a..1ddd9c89 100644 --- a/allianceauth/groupmanagement/templates/groupmanagement/groupmembership.html +++ b/allianceauth/groupmanagement/templates/groupmanagement/groupmembership.html @@ -14,7 +14,7 @@ {% trans "Groups" %}
- {% if groups %} + {% if groups %}
@@ -30,7 +30,7 @@ {% for group in groups %}
- {{ group.name }} + {{ group.name }} {{ group.authgroup.description }} @@ -46,9 +46,8 @@ {{ group.num_members }} - - + + @@ -72,9 +71,9 @@ {% endblock content %} -{% block extra_javascript %} +{% block extra_javascript %} {% include 'bundles/clipboard-js.html' %} -{% endblock %} \ No newline at end of file +{% endblock %} diff --git a/allianceauth/groupmanagement/urls.py b/allianceauth/groupmanagement/urls.py index d2d57783..2bc1103f 100644 --- a/allianceauth/groupmanagement/urls.py +++ b/allianceauth/groupmanagement/urls.py @@ -1,29 +1,52 @@ from . import views from django.conf.urls import url -app_name = 'groupmanagement' + +app_name = "groupmanagement" urlpatterns = [ - url(r'^groups/', views.groups_view, name='groups'), - url(r'^management/', views.group_management, - name='management'), - url(r'^membership/$', views.group_membership, - name='membership'), - url(r'^membership/(\w+)/$', views.group_membership_list, - name='membership_list'), - url(r'^membership/(\w+)/audit/$', views.group_membership_audit, name="audit_log"), - url(r'^membership/(\w+)/remove/(\w+)/$', views.group_membership_remove, - name='membership_remove'), - url(r'^request_add/(\w+)', views.group_request_add, - name='request_add'), - url(r'^request/accept/(\w+)', views.group_accept_request, - name='accept_request'), - url(r'^request/reject/(\w+)', views.group_reject_request, - name='reject_request'), - url(r'^request_leave/(\w+)', views.group_request_leave, - name='request_leave'), - url(r'leave_request/accept/(\w+)', views.group_leave_accept_request, - name='leave_accept_request'), - url(r'^leave_request/reject/(\w+)', views.group_leave_reject_request, - name='leave_reject_request'), + # groups + url(r"^groups/$", views.groups_view, name="groups"), + url(r"^group/request/join/(\w+)/$", views.group_request_add, name="request_add"), + url( + r"^group/request/leave/(\w+)/$", views.group_request_leave, name="request_leave" + ), + # group management + url(r"^groupmanagement/requests/$", views.group_management, name="management"), + url(r"^groupmanagement/membership/$", views.group_membership, name="membership"), + url( + r"^groupmanagement/membership/(\w+)/$", + views.group_membership_list, + name="membership", + ), + url( + r"^groupmanagement/membership/(\w+)/audit-log/$", + views.group_membership_audit, + name="audit_log", + ), + url( + r"^groupmanagement/membership/(\w+)/remove/(\w+)/$", + views.group_membership_remove, + name="membership_remove", + ), + url( + r"^groupmanagement/request/join/accept/(\w+)/$", + views.group_accept_request, + name="accept_request", + ), + url( + r"^groupmanagement/request/join/reject/(\w+)/$", + views.group_reject_request, + name="reject_request", + ), + url( + r"groupmanagement/request/leave/accept/(\w+)/$", + views.group_leave_accept_request, + name="leave_accept_request", + ), + url( + r"^groupmanagement/request/leave/reject/(\w+)/$", + views.group_leave_reject_request, + name="leave_reject_request", + ), ] diff --git a/allianceauth/groupmanagement/views.py b/allianceauth/groupmanagement/views.py index caa680d7..55956f7b 100755 --- a/allianceauth/groupmanagement/views.py +++ b/allianceauth/groupmanagement/views.py @@ -27,7 +27,9 @@ def group_management(request): acceptrequests = [] leaverequests = [] - base_group_query = GroupRequest.objects.select_related('user', 'group', 'user__profile__main_character') + base_group_query = GroupRequest.objects.select_related( + "user", "group", "user__profile__main_character" + ) if GroupManager.has_management_permission(request.user): # Full access group_requests = base_group_query.all() @@ -42,12 +44,14 @@ def group_management(request): else: acceptrequests.append(grouprequest) - logger.debug("Providing user %s with %s acceptrequests and %s leaverequests." % ( - request.user, len(acceptrequests), len(leaverequests))) + logger.debug( + "Providing user %s with %s acceptrequests and %s leaverequests." + % (request.user, len(acceptrequests), len(leaverequests)) + ) - render_items = {'acceptrequests': acceptrequests, 'leaverequests': leaverequests} + render_items = {"acceptrequests": acceptrequests, "leaverequests": leaverequests} - return render(request, 'groupmanagement/index.html', context=render_items) + return render(request, "groupmanagement/index.html", context=render_items) @login_required @@ -62,11 +66,15 @@ def group_membership(request): # Group leader specific groups = GroupManager.get_group_leaders_groups(request.user) - groups = groups.exclude(authgroup__internal=True).annotate(num_members=Count('user')).order_by('name') + groups = ( + groups.exclude(authgroup__internal=True) + .annotate(num_members=Count("user")) + .order_by("name") + ) - render_items = {'groups': groups} + render_items = {"groups": groups} - return render(request, 'groupmanagement/groupmembership.html', context=render_items) + return render(request, "groupmanagement/groupmembership.html", context=render_items) @login_required @@ -77,18 +85,22 @@ def group_membership_audit(request, group_id): try: # Check its a joinable group i.e. not corp or internal # And the user has permission to manage it - if not GroupManager.check_internal_group(group) or not GroupManager.can_manage_group(request.user, group): - logger.warning("User %s attempted to view the membership of group %s but permission was denied" % - (request.user, group_id)) + if not GroupManager.check_internal_group( + group + ) or not GroupManager.can_manage_group(request.user, group): + logger.warning( + "User %s attempted to view the membership of group %s but permission was denied" + % (request.user, group_id) + ) raise PermissionDenied except ObjectDoesNotExist: raise Http404("Group does not exist") - render_items = {'group': group.name} - entries = RequestLog.objects.filter(group=group).order_by('-date') - render_items['entries'] = entries + render_items = {"group": group.name} + entries = RequestLog.objects.filter(group=group).order_by("-date") + render_items["entries"] = entries - return render(request, 'groupmanagement/audit.html', context=render_items) + return render(request, "groupmanagement/audit.html", context=render_items) @login_required @@ -103,9 +115,9 @@ def group_membership_list(request, group_id): # Check its a joinable group i.e. not corp or internal # And the user has permission to manage it - if (not GroupManager.check_internal_group(group) - or not GroupManager.can_manage_group(request.user, group) - ): + if not GroupManager.check_internal_group( + group + ) or not GroupManager.can_manage_group(request.user, group): logger.warning( "User %s attempted to view the membership of group %s " "but permission was denied" % (request.user, group_id) @@ -117,90 +129,136 @@ def group_membership_list(request, group_id): group_leaders = group.authgroup.group_leaders.all() members = list() - for member in \ - group.user_set\ - .all()\ - .select_related('profile', 'profile__main_character')\ - .order_by('profile__main_character__character_name'): + for member in ( + group.user_set.all() + .select_related("profile", "profile__main_character") + .order_by("profile__main_character__character_name") + ): - members.append({ - 'user': member, - 'main_char': member.profile.main_character, - 'is_leader': member in group_leaders - }) + members.append( + { + "user": member, + "main_char": member.profile.main_character, + "is_leader": member in group_leaders, + } + ) - render_items = {'group': group, 'members': members} + render_items = {"group": group, "members": members} - return render( - request, 'groupmanagement/groupmembers.html', - context=render_items - ) + return render(request, "groupmanagement/groupmembers.html", context=render_items) @login_required @user_passes_test(GroupManager.can_manage_groups) def group_membership_remove(request, group_id, user_id): - logger.debug("group_membership_remove called by user %s for group id %s on user id %s" % - (request.user, group_id, user_id)) + logger.debug( + "group_membership_remove called by user %s for group id %s on user id %s" + % (request.user, group_id, user_id) + ) group = get_object_or_404(Group, id=group_id) try: # Check its a joinable group i.e. not corp or internal # And the user has permission to manage it - if not GroupManager.check_internal_group(group) or not GroupManager.can_manage_group(request.user, group): - logger.warning("User %s attempted to remove a user from group %s but permission was denied" % (request.user, - group_id)) + if not GroupManager.check_internal_group( + group + ) or not GroupManager.can_manage_group(request.user, group): + logger.warning( + "User %s attempted to remove a user from group %s but permission was denied" + % (request.user, group_id) + ) raise PermissionDenied try: user = group.user_set.get(id=user_id) request_info = user.username + ":" + group.name - log = RequestLog(request_type=None,group=group,request_info=request_info,action=1,request_actor=request.user) + log = RequestLog( + request_type=None, + group=group, + request_info=request_info, + action=1, + request_actor=request.user, + ) log.save() # Remove group from user user.groups.remove(group) - logger.info("User %s removed user %s from group %s" % (request.user, user, group)) - messages.success(request, _("Removed user %(user)s from group %(group)s.") % {"user": user, "group": group}) + logger.info( + "User %s removed user %s from group %s" % (request.user, user, group) + ) + messages.success( + request, + _("Removed user %(user)s from group %(group)s.") + % {"user": user, "group": group}, + ) except ObjectDoesNotExist: messages.warning(request, _("User does not exist in that group")) except ObjectDoesNotExist: messages.warning(request, _("Group does not exist")) - return redirect('groupmanagement:membership_list', group_id) + return redirect("groupmanagement:membership", group_id) @login_required @user_passes_test(GroupManager.can_manage_groups) def group_accept_request(request, group_request_id): - logger.debug("group_accept_request called by user %s for grouprequest id %s" % (request.user, group_request_id)) + logger.debug( + "group_accept_request called by user %s for grouprequest id %s" + % (request.user, group_request_id) + ) group_request = get_object_or_404(GroupRequest, id=group_request_id) try: group, created = Group.objects.get_or_create(name=group_request.group.name) - if not GroupManager.joinable_group(group_request.group, group_request.user.profile.state) or \ - not GroupManager.can_manage_group(request.user, group_request.group): + if not GroupManager.joinable_group( + group_request.group, group_request.user.profile.state + ) or not GroupManager.can_manage_group(request.user, group_request.group): raise PermissionDenied group_request.user.groups.add(group) group_request.user.save() - log = RequestLog(request_type=group_request.leave_request,group=group,request_info=group_request.__str__(),action=1,request_actor=request.user) + log = RequestLog( + request_type=group_request.leave_request, + group=group, + request_info=group_request.__str__(), + action=1, + request_actor=request.user, + ) log.save() group_request.delete() - logger.info("User %s accepted group request from user %s to group %s" % ( - request.user, group_request.user, group_request.group.name)) - notify(group_request.user, "Group Application Accepted", level="success", - message="Your application to %s has been accepted." % group_request.group) - messages.success(request, - _('Accepted application from %(mainchar)s to %(group)s.') % {"mainchar": group_request.main_char, "group": group_request.group}) + logger.info( + "User %s accepted group request from user %s to group %s" + % (request.user, group_request.user, group_request.group.name) + ) + notify( + group_request.user, + "Group Application Accepted", + level="success", + message="Your application to %s has been accepted." % group_request.group, + ) + messages.success( + request, + _("Accepted application from %(mainchar)s to %(group)s.") + % {"mainchar": group_request.main_char, "group": group_request.group}, + ) except PermissionDenied as p: - logger.warning("User %s attempted to accept group join request %s but permission was denied" % - (request.user, group_request_id)) + logger.warning( + "User %s attempted to accept group join request %s but permission was denied" + % (request.user, group_request_id) + ) raise p except: - messages.error(request, _('An unhandled error occurred while processing the application from %(mainchar)s to %(group)s.') % {"mainchar": group_request.main_char, "group": group_request.group}) - logger.exception("Unhandled exception occurred while user %s attempting to accept grouprequest id %s." % ( - request.user, group_request_id)) + messages.error( + request, + _( + "An unhandled error occurred while processing the application from %(mainchar)s to %(group)s." + ) + % {"mainchar": group_request.main_char, "group": group_request.group}, + ) + logger.exception( + "Unhandled exception occurred while user %s attempting to accept grouprequest id %s." + % (request.user, group_request_id) + ) pass return redirect("groupmanagement:management") @@ -209,31 +267,60 @@ def group_accept_request(request, group_request_id): @login_required @user_passes_test(GroupManager.can_manage_groups) def group_reject_request(request, group_request_id): - logger.debug("group_reject_request called by user %s for group request id %s" % (request.user, group_request_id)) + logger.debug( + "group_reject_request called by user %s for group request id %s" + % (request.user, group_request_id) + ) group_request = get_object_or_404(GroupRequest, id=group_request_id) try: if not GroupManager.can_manage_group(request.user, group_request.group): raise PermissionDenied if group_request: - logger.info("User %s rejected group request from user %s to group %s" % ( - request.user, group_request.user, group_request.group.name)) - log = RequestLog(request_type=group_request.leave_request,group=group_request.group,request_info=group_request.__str__(),action=0,request_actor=request.user) + logger.info( + "User %s rejected group request from user %s to group %s" + % (request.user, group_request.user, group_request.group.name) + ) + log = RequestLog( + request_type=group_request.leave_request, + group=group_request.group, + request_info=group_request.__str__(), + action=0, + request_actor=request.user, + ) log.save() group_request.delete() - notify(group_request.user, "Group Application Rejected", level="danger", - message="Your application to %s has been rejected." % group_request.group) - messages.success(request, - _('Rejected application from %(mainchar)s to %(group)s.') % {"mainchar": group_request.main_char, "group": group_request.group}) + notify( + group_request.user, + "Group Application Rejected", + level="danger", + message="Your application to %s has been rejected." + % group_request.group, + ) + messages.success( + request, + _("Rejected application from %(mainchar)s to %(group)s.") + % {"mainchar": group_request.main_char, "group": group_request.group}, + ) except PermissionDenied as p: - logger.warning("User %s attempted to reject group join request %s but permission was denied" % - (request.user, group_request_id)) + logger.warning( + "User %s attempted to reject group join request %s but permission was denied" + % (request.user, group_request_id) + ) raise p except: - messages.error(request, _('An unhandled error occurred while processing the application from %(mainchar)s to %(group)s.') % {"mainchar": group_request.main_char, "group": group_request.group}) - logger.exception("Unhandled exception occurred while user %s attempting to reject group request id %s" % ( - request.user, group_request_id)) + messages.error( + request, + _( + "An unhandled error occurred while processing the application from %(mainchar)s to %(group)s." + ) + % {"mainchar": group_request.main_char, "group": group_request.group}, + ) + logger.exception( + "Unhandled exception occurred while user %s attempting to reject group request id %s" + % (request.user, group_request_id) + ) pass return redirect("groupmanagement:management") @@ -243,7 +330,9 @@ def group_reject_request(request, group_request_id): @user_passes_test(GroupManager.can_manage_groups) def group_leave_accept_request(request, group_request_id): logger.debug( - "group_leave_accept_request called by user %s for group request id %s" % (request.user, group_request_id)) + "group_leave_accept_request called by user %s for group request id %s" + % (request.user, group_request_id) + ) group_request = get_object_or_404(GroupRequest, id=group_request_id) try: if not GroupManager.can_manage_group(request.user, group_request.group): @@ -252,24 +341,48 @@ def group_leave_accept_request(request, group_request_id): group, created = Group.objects.get_or_create(name=group_request.group.name) group_request.user.groups.remove(group) group_request.user.save() - log = RequestLog(request_type=group_request.leave_request,group=group_request.group,request_info=group_request.__str__(),action=1,request_actor=request.user) + log = RequestLog( + request_type=group_request.leave_request, + group=group_request.group, + request_info=group_request.__str__(), + action=1, + request_actor=request.user, + ) log.save() group_request.delete() - logger.info("User %s accepted group leave request from user %s to group %s" % ( - request.user, group_request.user, group_request.group.name)) - notify(group_request.user, "Group Leave Request Accepted", level="success", - message="Your request to leave %s has been accepted." % group_request.group) - messages.success(request, - _('Accepted application from %(mainchar)s to leave %(group)s.') % {"mainchar": group_request.main_char, "group": group_request.group}) + logger.info( + "User %s accepted group leave request from user %s to group %s" + % (request.user, group_request.user, group_request.group.name) + ) + notify( + group_request.user, + "Group Leave Request Accepted", + level="success", + message="Your request to leave %s has been accepted." % group_request.group, + ) + messages.success( + request, + _("Accepted application from %(mainchar)s to leave %(group)s.") + % {"mainchar": group_request.main_char, "group": group_request.group}, + ) except PermissionDenied as p: - logger.warning("User %s attempted to accept group leave request %s but permission was denied" % - (request.user, group_request_id)) + logger.warning( + "User %s attempted to accept group leave request %s but permission was denied" + % (request.user, group_request_id) + ) raise p except: - messages.error(request, _('An unhandled error occurred while processing the application from %(mainchar)s to leave %(group)s.') % { - "mainchar": group_request.main_char, "group": group_request.group}) - logger.exception("Unhandled exception occurred while user %s attempting to accept group leave request id %s" % ( - request.user, group_request_id)) + messages.error( + request, + _( + "An unhandled error occurred while processing the application from %(mainchar)s to leave %(group)s." + ) + % {"mainchar": group_request.main_char, "group": group_request.group}, + ) + logger.exception( + "Unhandled exception occurred while user %s attempting to accept group leave request id %s" + % (request.user, group_request_id) + ) pass return redirect("groupmanagement:management") @@ -279,31 +392,58 @@ def group_leave_accept_request(request, group_request_id): @user_passes_test(GroupManager.can_manage_groups) def group_leave_reject_request(request, group_request_id): logger.debug( - "group_leave_reject_request called by user %s for group request id %s" % (request.user, group_request_id)) + "group_leave_reject_request called by user %s for group request id %s" + % (request.user, group_request_id) + ) group_request = get_object_or_404(GroupRequest, id=group_request_id) try: if not GroupManager.can_manage_group(request.user, group_request.group): raise PermissionDenied if group_request: - log = RequestLog(request_type=group_request.leave_request,group=group_request.group,request_info=group_request.__str__(),action=0,request_actor=request.user) + log = RequestLog( + request_type=group_request.leave_request, + group=group_request.group, + request_info=group_request.__str__(), + action=0, + request_actor=request.user, + ) log.save() group_request.delete() - logger.info("User %s rejected group leave request from user %s for group %s" % ( - request.user, group_request.user, group_request.group.name)) - notify(group_request.user, "Group Leave Request Rejected", level="danger", - message="Your request to leave %s has been rejected." % group_request.group) - messages.success(request, _('Rejected application from %(mainchar)s to leave %(group)s.') % { - "mainchar": group_request.main_char, "group": group_request.group}) + logger.info( + "User %s rejected group leave request from user %s for group %s" + % (request.user, group_request.user, group_request.group.name) + ) + notify( + group_request.user, + "Group Leave Request Rejected", + level="danger", + message="Your request to leave %s has been rejected." + % group_request.group, + ) + messages.success( + request, + _("Rejected application from %(mainchar)s to leave %(group)s.") + % {"mainchar": group_request.main_char, "group": group_request.group}, + ) except PermissionDenied as p: - logger.warning("User %s attempted to reject group leave request %s but permission was denied" % - (request.user, group_request_id)) + logger.warning( + "User %s attempted to reject group leave request %s but permission was denied" + % (request.user, group_request_id) + ) raise p except: - messages.error(request, _('An unhandled error occurred while processing the application from %(mainchar)s to leave %(group)s.') % { - "mainchar": group_request.main_char, "group": group_request.group}) - logger.exception("Unhandled exception occurred while user %s attempting to reject group leave request id %s" % ( - request.user, group_request_id)) + messages.error( + request, + _( + "An unhandled error occurred while processing the application from %(mainchar)s to leave %(group)s." + ) + % {"mainchar": group_request.main_char, "group": group_request.group}, + ) + logger.exception( + "Unhandled exception occurred while user %s attempting to reject group leave request id %s" + % (request.user, group_request_id) + ) pass return redirect("groupmanagement:management") @@ -312,100 +452,135 @@ def group_leave_reject_request(request, group_request_id): @login_required def groups_view(request): logger.debug("groups_view called by user %s" % request.user) - + groups_qs = GroupManager.get_joinable_groups_for_user( request.user, include_hidden=False ) - groups_qs = groups_qs.order_by('name') + groups_qs = groups_qs.order_by("name") groups = [] - for group in groups_qs: - group_request = GroupRequest.objects\ - .filter(user=request.user)\ - .filter(group=group) - groups.append({ - 'group': group, - 'request': group_request[0] if group_request else None - }) + for group in groups_qs: + group_request = GroupRequest.objects.filter(user=request.user).filter( + group=group + ) + groups.append( + {"group": group, "request": group_request[0] if group_request else None} + ) - context = {'groups': groups} - return render(request, 'groupmanagement/groups.html', context=context) + context = {"groups": groups} + return render(request, "groupmanagement/groups.html", context=context) @login_required def group_request_add(request, group_id): - logger.debug("group_request_add called by user %s for group id %s" % (request.user, group_id)) + logger.debug( + "group_request_add called by user %s for group id %s" % (request.user, group_id) + ) group = Group.objects.get(id=group_id) state = request.user.profile.state if not GroupManager.joinable_group(group, state): - logger.warning("User %s attempted to join group id %s but it is not a joinable group" % - (request.user, group_id)) + logger.warning( + "User %s attempted to join group id %s but it is not a joinable group" + % (request.user, group_id) + ) messages.warning(request, _("You cannot join that group")) - return redirect('groupmanagement:groups') + 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)) + 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: + 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" % - (request.user, group_id)) + logger.warning( + "User %s attempted to join group id %s but it is not a public group" + % (request.user, group_id) + ) messages.warning(request, _("You cannot join that group")) - return redirect('groupmanagement:groups') + return redirect("groupmanagement:groups") if group.authgroup.open: 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.")) + 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.status = _("Pending") grouprequest.group = group grouprequest.user = request.user grouprequest.leave_request = False grouprequest.save() - logger.info("Created group request for user %s to group %s" % (request.user, Group.objects.get(id=group_id))) - messages.success(request, _('Applied to group %(group)s.') % {"group": group}) + logger.info( + "Created group request for user %s to group %s" + % (request.user, Group.objects.get(id=group_id)) + ) + messages.success(request, _("Applied to group %(group)s.") % {"group": group}) return redirect("groupmanagement:groups") @login_required def group_request_leave(request, group_id): - logger.debug("group_request_leave called by user %s for group id %s" % (request.user, group_id)) + logger.debug( + "group_request_leave called by user %s for group id %s" + % (request.user, group_id) + ) group = Group.objects.get(id=group_id) if not GroupManager.check_internal_group(group): - logger.warning("User %s attempted to leave group id %s but it is not a joinable group" % - (request.user, group_id)) + logger.warning( + "User %s attempted to leave group id %s but it is not a joinable group" + % (request.user, group_id) + ) messages.warning(request, _("You cannot leave that group")) - return redirect('groupmanagement:groups') + return redirect("groupmanagement:groups") if group not in request.user.groups.all(): - logger.debug("User %s attempted to leave group id %s but they are not a member" % - (request.user, group_id)) + logger.debug( + "User %s attempted to leave group id %s but they are not a member" + % (request.user, group_id) + ) messages.warning(request, _("You are not a member of that group")) - return redirect('groupmanagement:groups') + return redirect("groupmanagement:groups") if group.authgroup.open: 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.")) + 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 getattr(settings, 'AUTO_LEAVE', False): - logger.info("%s leaving joinable group %s due to auto_leave" % (request.user, group)) + if getattr(settings, "AUTO_LEAVE", False): + logger.info( + "%s leaving joinable group %s due to auto_leave" % (request.user, group) + ) request.user.groups.remove(group) - return redirect('groupmanagement:groups') + return redirect("groupmanagement:groups") grouprequest = GroupRequest() - grouprequest.status = _('Pending') + grouprequest.status = _("Pending") grouprequest.group = group grouprequest.user = request.user grouprequest.leave_request = True grouprequest.save() - logger.info("Created group leave request for user %s to group %s" % (request.user, Group.objects.get(id=group_id))) - messages.success(request, _('Applied to leave group %(group)s.') % {"group": group}) + logger.info( + "Created group leave request for user %s to group %s" + % (request.user, Group.objects.get(id=group_id)) + ) + messages.success(request, _("Applied to leave group %(group)s.") % {"group": group}) return redirect("groupmanagement:groups")