Skip to content

Commit

Permalink
Refactor update_org_admin_role to share more common behavior
Browse files Browse the repository at this point in the history
In order to make the code easier to follow, the helper directly returns
an HttpResponse, instead of turning boolean into responses.
  • Loading branch information
francoisfreitag committed Feb 3, 2025
1 parent ec010c5 commit aecf711
Show file tree
Hide file tree
Showing 4 changed files with 36 additions and 50 deletions.
17 changes: 11 additions & 6 deletions itou/common_apps/organizations/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -33,13 +33,13 @@ def deactivate_org_member(request, user_id, *, success_url, template_name):
return render(request, template_name, context)


def update_org_admin_role(request, target_member, action):
if not request.is_current_organization_admin or target_member == request.user:
def update_org_admin_role(request, action, user_id, *, success_url, template_name):
if not request.is_current_organization_admin or request.user.pk == user_id:
raise PermissionDenied

membership = get_object_or_404(
request.current_organization.memberships.select_related("user"),
user_id=target_member.pk,
user_id=user_id,
is_active=True,
)

Expand All @@ -55,8 +55,13 @@ def update_org_admin_role(request, target_member, action):
raise ValueError(f"Unknown {action=}")
request.current_organization.set_admin_role(membership, admin, updated_by=request.user)
messages.success(
request, f"{target_member.get_full_name()} a été {action_label} administrateurs de cette structure."
request, f"{membership.user.get_full_name()} a été {action_label} administrateurs de cette structure."
)
return True
return HttpResponseRedirect(success_url)

return False
context = {
"action": action,
"structure": request.current_organization,
"target_member": membership.user,
}
return render(request, template_name, context)
22 changes: 8 additions & 14 deletions itou/www/companies_views/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,6 @@
from itou.common_apps.organizations.views import deactivate_org_member, update_org_admin_role
from itou.companies.models import Company, JobDescription, SiaeFinancialAnnex
from itou.jobs.models import Appellation
from itou.users.models import User
from itou.utils import constants as global_constants
from itou.utils.apis.data_inclusion import DataInclusionApiClient, DataInclusionApiException
from itou.utils.apis.exceptions import GeocodingDataError
Expand Down Expand Up @@ -645,20 +644,15 @@ def deactivate_member(request, user_id, template_name="companies/deactivate_memb
)


@check_user(lambda user: user.is_employer)
def update_admin_role(request, action, user_id, template_name="companies/update_admins.html"):
company = get_current_company_or_404(request)
target_member = User.objects.get(pk=user_id)

if update_org_admin_role(request=request, target_member=target_member, action=action):
return HttpResponseRedirect(reverse("companies_views:members"))

context = {
"action": action,
"structure": company,
"target_member": target_member,
}

return render(request, template_name, context)
return update_org_admin_role(
request,
action,
user_id,
success_url=reverse("companies_views:members"),
template_name=template_name,
)


@login_not_required
Expand Down
25 changes: 9 additions & 16 deletions itou/www/institutions_views/views.py
Original file line number Diff line number Diff line change
@@ -1,10 +1,8 @@
from django.db.models import Count, Q
from django.http import HttpResponseRedirect
from django.shortcuts import render
from django.urls import reverse_lazy
from django.urls import reverse, reverse_lazy

from itou.common_apps.organizations.views import deactivate_org_member, update_org_admin_role
from itou.users.models import User
from itou.utils.auth import check_user
from itou.utils.perms.institution import get_current_institution_or_404

Expand Down Expand Up @@ -48,17 +46,12 @@ def deactivate_member(request, user_id, template_name="institutions/deactivate_m
)


@check_user(lambda user: user.is_labor_inspector)
def update_admin_role(request, action, user_id, template_name="institutions/update_admins.html"):
institution = get_current_institution_or_404(request)
target_member = User.objects.get(pk=user_id)

if update_org_admin_role(request=request, target_member=target_member, action=action):
return HttpResponseRedirect(reverse_lazy("institutions_views:members"))

context = {
"action": action,
"structure": institution,
"target_member": target_member,
}

return render(request, template_name, context)
return update_org_admin_role(
request,
action,
user_id,
success_url=reverse("institutions_views:members"),
template_name=template_name,
)
22 changes: 8 additions & 14 deletions itou/www/prescribers_views/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@
from itou.common_apps.organizations.views import deactivate_org_member, update_org_admin_role
from itou.prescribers.enums import PrescriberOrganizationKind
from itou.prescribers.models import PrescriberOrganization
from itou.users.models import User
from itou.utils.apis.exceptions import GeocodingDataError
from itou.utils.auth import check_user
from itou.utils.perms.prescriber import get_current_org_or_404
Expand Down Expand Up @@ -83,20 +82,15 @@ def deactivate_member(request, user_id, template_name="prescribers/deactivate_me
)


@check_user(lambda user: user.is_prescriber)
def update_admin_role(request, action, user_id, template_name="prescribers/update_admins.html"):
organization = get_current_org_or_404(request)
target_member = User.objects.get(pk=user_id)

if update_org_admin_role(request=request, target_member=target_member, action=action):
return HttpResponseRedirect(reverse_lazy("prescribers_views:members"))

context = {
"action": action,
"structure": organization,
"target_member": target_member,
}

return render(request, template_name, context)
return update_org_admin_role(
request,
action,
user_id,
success_url=reverse("prescribers_views:members"),
template_name=template_name,
)


def list_accredited_organizations(request, template_name="prescribers/list_accredited_organizations.html"):
Expand Down

0 comments on commit aecf711

Please sign in to comment.