Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix: add user to Org Admin group when editing org admin #389

Open
wants to merge 4 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions judge/forms.py
Original file line number Diff line number Diff line change
Expand Up @@ -457,6 +457,13 @@ class Meta:
),
})

def __init__(self, *args, **kwargs):
request = kwargs.pop('request', None) # Pop 'request' from kwargs
super().__init__(*args, **kwargs)

if request and not request.user.is_superuser:
self.fields.pop('admins')


class SocialAuthMixin:
def _has_social_auth(self, key):
Expand Down
10 changes: 10 additions & 0 deletions judge/utils/organization.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
from django.conf import settings
from django.contrib.auth.models import Group


def add_admin_to_group(form):
org = form.save()
all_admins = org.admins.all()
g = Group.objects.get(name=settings.GROUP_PERMISSION_FOR_ORG_ADMIN)
for admin in all_admins:
admin.user.groups.add(g)
13 changes: 8 additions & 5 deletions judge/views/organization.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@
from django.conf import settings
from django.contrib import messages
from django.contrib.auth.mixins import LoginRequiredMixin, PermissionRequiredMixin
from django.contrib.auth.models import Group
from django.core.exceptions import ImproperlyConfigured, PermissionDenied
from django.db.models import Count, FilteredRelation, Q
from django.db.models.expressions import F, Value
Expand All @@ -25,6 +24,7 @@
Problem, Profile
from judge.tasks import on_new_problem
from judge.utils.infinite_paginator import InfinitePaginationMixin
from judge.utils.organization import add_admin_to_group
from judge.utils.ranker import ranker
from judge.utils.views import DiggPaginatorMixin, QueryStringSortMixin, TitleMixin, generic_message
from judge.views.blog import BlogPostCreate, PostListBase
Expand Down Expand Up @@ -380,10 +380,7 @@ def form_valid(self, form):
# short_name is show in ranking
org.short_name = org.slug[:20]
org.save()
all_admins = org.admins.all()
g = Group.objects.get(name=settings.GROUP_PERMISSION_FOR_ORG_ADMIN)
for admin in all_admins:
admin.user.groups.add(g)
add_admin_to_group(form)

return HttpResponseRedirect(self.get_success_url())

Expand Down Expand Up @@ -420,8 +417,14 @@ def form_valid(self, form):
with revisions.create_revision(atomic=True):
revisions.set_comment(_('Edited from site'))
revisions.set_user(self.request.user)
add_admin_to_group(form)
return super(EditOrganization, self).form_valid(form)

def get_form_kwargs(self):
kwargs = super().get_form_kwargs()
kwargs['request'] = self.request # Pass the request object to the form
return kwargs


class KickUserWidgetView(LoginRequiredMixin, AdminOrganizationMixin, SingleObjectMixin, View):
def post(self, request, *args, **kwargs):
Expand Down
Loading