|
|
|
|
@@ -42,7 +42,7 @@ def group_management(request):
|
|
|
|
|
else:
|
|
|
|
|
acceptrequests.append(grouprequest)
|
|
|
|
|
|
|
|
|
|
logger.debug("Providing user %s with %s acceptrequests and %s leaverequests." % (
|
|
|
|
|
logger.debug("Providing user {} with {} acceptrequests and {} leaverequests.".format(
|
|
|
|
|
request.user, len(acceptrequests), len(leaverequests)))
|
|
|
|
|
|
|
|
|
|
render_items = {'acceptrequests': acceptrequests, 'leaverequests': leaverequests}
|
|
|
|
|
@@ -78,7 +78,7 @@ def group_membership_audit(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):
|
|
|
|
|
logger.warning("User %s attempted to view the membership of group %s but permission was denied" % (request.user, group_id))
|
|
|
|
|
logger.warning(f"User {request.user} attempted to view the membership of group {group_id} but permission was denied")
|
|
|
|
|
raise PermissionDenied
|
|
|
|
|
|
|
|
|
|
except ObjectDoesNotExist:
|
|
|
|
|
@@ -139,13 +139,13 @@ def group_membership_list(request, group_id):
|
|
|
|
|
@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(f"group_membership_remove called by user {request.user} for group id {group_id} on user 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))
|
|
|
|
|
logger.warning(f"User {request.user} attempted to remove a user from group {group_id} but permission was denied")
|
|
|
|
|
raise PermissionDenied
|
|
|
|
|
|
|
|
|
|
try:
|
|
|
|
|
@@ -155,7 +155,7 @@ def group_membership_remove(request, group_id, user_id):
|
|
|
|
|
log.save()
|
|
|
|
|
# Remove group from user
|
|
|
|
|
user.groups.remove(group)
|
|
|
|
|
logger.info("User %s removed user %s from group %s" % (request.user, user, group))
|
|
|
|
|
logger.info(f"User {request.user} removed user {user} from group {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"))
|
|
|
|
|
@@ -169,7 +169,7 @@ def group_membership_remove(request, group_id, user_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(f"group_accept_request called by user {request.user} for grouprequest id {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)
|
|
|
|
|
@@ -183,7 +183,7 @@ def group_accept_request(request, group_request_id):
|
|
|
|
|
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" % (
|
|
|
|
|
logger.info("User {} accepted group request from user {} to group {}".format(
|
|
|
|
|
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)
|
|
|
|
|
@@ -191,11 +191,11 @@ def group_accept_request(request, group_request_id):
|
|
|
|
|
_('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(f"User {request.user} attempted to accept group join request {group_request_id} but permission was denied")
|
|
|
|
|
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." % (
|
|
|
|
|
logger.exception("Unhandled exception occurred while user {} attempting to accept grouprequest id {}.".format(
|
|
|
|
|
request.user, group_request_id))
|
|
|
|
|
pass
|
|
|
|
|
|
|
|
|
|
@@ -205,14 +205,14 @@ 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(f"group_reject_request called by user {request.user} for group request id {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" % (
|
|
|
|
|
logger.info("User {} rejected group request from user {} to group {}".format(
|
|
|
|
|
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()
|
|
|
|
|
@@ -222,11 +222,11 @@ def group_reject_request(request, group_request_id):
|
|
|
|
|
_('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(f"User {request.user} attempted to reject group join request {group_request_id} but permission was denied")
|
|
|
|
|
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" % (
|
|
|
|
|
logger.exception("Unhandled exception occurred while user {} attempting to reject group request id {}".format(
|
|
|
|
|
request.user, group_request_id))
|
|
|
|
|
pass
|
|
|
|
|
|
|
|
|
|
@@ -237,7 +237,7 @@ 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))
|
|
|
|
|
f"group_leave_accept_request called by user {request.user} for group request id {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):
|
|
|
|
|
@@ -249,19 +249,19 @@ def group_leave_accept_request(request, group_request_id):
|
|
|
|
|
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" % (
|
|
|
|
|
logger.info("User {} accepted group leave request from user {} to group {}".format(
|
|
|
|
|
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(f"User {request.user} attempted to accept group leave request {group_request_id} but permission was denied")
|
|
|
|
|
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" % (
|
|
|
|
|
logger.exception("Unhandled exception occurred while user {} attempting to accept group leave request id {}".format(
|
|
|
|
|
request.user, group_request_id))
|
|
|
|
|
pass
|
|
|
|
|
|
|
|
|
|
@@ -272,7 +272,7 @@ 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))
|
|
|
|
|
f"group_leave_reject_request called by user {request.user} for group request id {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):
|
|
|
|
|
@@ -282,18 +282,18 @@ def group_leave_reject_request(request, group_request_id):
|
|
|
|
|
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" % (
|
|
|
|
|
logger.info("User {} rejected group leave request from user {} for group {}".format(
|
|
|
|
|
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(f"User {request.user} attempted to reject group leave request {group_request_id} but permission was denied")
|
|
|
|
|
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" % (
|
|
|
|
|
logger.exception("Unhandled exception occurred while user {} attempting to reject group leave request id {}".format(
|
|
|
|
|
request.user, group_request_id))
|
|
|
|
|
pass
|
|
|
|
|
|
|
|
|
|
@@ -324,25 +324,25 @@ def groups_view(request):
|
|
|
|
|
|
|
|
|
|
@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(f"group_request_add called by user {request.user} for group id {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(f"User {request.user} attempted to join group id {group_id} but it is not a joinable group")
|
|
|
|
|
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))
|
|
|
|
|
logger.warning(f"User {request.user} attempted to join group id {group_id} but they are already a member.")
|
|
|
|
|
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" % (request.user, group_id))
|
|
|
|
|
logger.warning(f"User {request.user} attempted to join group id {group_id} but it is not a public group")
|
|
|
|
|
messages.warning(request, _("You cannot join that group"))
|
|
|
|
|
return redirect('groupmanagement:groups')
|
|
|
|
|
if group.authgroup.open:
|
|
|
|
|
logger.info("%s joining %s as is an open group" % (request.user, group))
|
|
|
|
|
logger.info(f"{request.user} joining {group} as is an open group")
|
|
|
|
|
request.user.groups.add(group)
|
|
|
|
|
request_info = request.user.username + ":" + group.name
|
|
|
|
|
log = RequestLog(request_type=False, group=group, request_info=request_info, action=1, request_actor=request.user)
|
|
|
|
|
@@ -350,7 +350,7 @@ def group_request_add(request, group_id):
|
|
|
|
|
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))
|
|
|
|
|
logger.info(f"{request.user} attempted to join {group} but already has an open application")
|
|
|
|
|
messages.warning(request, _("You already have a pending application for that group."))
|
|
|
|
|
return redirect("groupmanagement:groups")
|
|
|
|
|
grouprequest = GroupRequest()
|
|
|
|
|
@@ -359,25 +359,25 @@ def group_request_add(request, group_id):
|
|
|
|
|
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)))
|
|
|
|
|
logger.info(f"Created group request for user {request.user} to group {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(f"group_request_leave called by user {request.user} for group id {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(f"User {request.user} attempted to leave group id {group_id} but it is not a joinable group")
|
|
|
|
|
messages.warning(request, _("You cannot leave that group"))
|
|
|
|
|
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(f"User {request.user} attempted to leave group id {group_id} but they are not a member")
|
|
|
|
|
messages.warning(request, _("You are not a member of that group"))
|
|
|
|
|
return redirect('groupmanagement:groups')
|
|
|
|
|
if group.authgroup.open:
|
|
|
|
|
logger.info("%s leaving %s as is an open group" % (request.user, group))
|
|
|
|
|
logger.info(f"{request.user} leaving {group} as is an open group")
|
|
|
|
|
request_info = request.user.username + ":" + group.name
|
|
|
|
|
log = RequestLog(request_type=True, group=group, request_info=request_info, action=1, request_actor=request.user)
|
|
|
|
|
log.save()
|
|
|
|
|
@@ -385,11 +385,11 @@ def group_request_leave(request, group_id):
|
|
|
|
|
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))
|
|
|
|
|
logger.info(f"{request.user} attempted to leave {group} but already has an pending leave request.")
|
|
|
|
|
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))
|
|
|
|
|
logger.info(f"{request.user} leaving joinable group {group} due to auto_leave")
|
|
|
|
|
request_info = request.user.username + ":" + group.name
|
|
|
|
|
log = RequestLog(request_type=True, group=group, request_info=request_info, action=1, request_actor=request.user)
|
|
|
|
|
log.save()
|
|
|
|
|
@@ -401,6 +401,6 @@ def group_request_leave(request, group_id):
|
|
|
|
|
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)))
|
|
|
|
|
logger.info(f"Created group leave request for user {request.user} to group {Group.objects.get(id=group_id)}")
|
|
|
|
|
messages.success(request, _('Applied to leave group %(group)s.') % {"group": group})
|
|
|
|
|
return redirect("groupmanagement:groups")
|
|
|
|
|
|