Skip to content

Commit

Permalink
Merge branch 'release/0.3.43' into main
Browse files Browse the repository at this point in the history
  • Loading branch information
erikvw committed Jan 30, 2024
2 parents 12afb62 + 73edc25 commit b581682
Show file tree
Hide file tree
Showing 8 changed files with 22 additions and 68 deletions.
8 changes: 0 additions & 8 deletions edc_sites/auths.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,3 @@
site_auths.add_post_update_func(
"edc_sites", remove_default_model_permissions_from_edc_permissions
)

view_auditallsites_codename = "view_auditallsites"
site_auths.add_custom_permissions_tuples(
model="edc_sites.edcpermissions",
codename_tuples=[
(f"edc_sites.{view_auditallsites_codename}", "View all sites as auditor")
],
)
8 changes: 3 additions & 5 deletions edc_sites/site.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,14 +13,13 @@
from django.core.handlers.wsgi import WSGIRequest as BaseWSGIRequest
from django.core.management.color import color_style
from django.utils.module_loading import import_module, module_has_submodule
from edc_auth.utils import user_has_change_perms
from edc_constants.constants import OTHER
from edc_model_admin.utils import add_to_messages_once

from .auths import view_auditallsites_codename
from .exceptions import InvalidSiteForUser
from .single_site import SingleSite
from .utils import (
get_change_codenames,
get_message_text,
get_site_model_cls,
has_profile_or_raise,
Expand Down Expand Up @@ -92,7 +91,6 @@ def get_autodiscover_sites():

class Sites:
uat_subdomain = "uat"
view_auditallsites_codename = view_auditallsites_codename

def __init__(self):
self.loaded = False
Expand Down Expand Up @@ -243,8 +241,8 @@ def get_view_only_site_ids_for_user(
sites.site_in_profile_or_raise(user=user, site_id=site_id)
# now check for special view codename from user account
site_ids = []
if user.has_perm(f"edc_sites.{self.view_auditallsites_codename}"):
if get_change_codenames(user):
if user.userprofile.is_multisite_viewer:
if user_has_change_perms(user=user):
if request:
add_to_messages_once(
request,
Expand Down
25 changes: 16 additions & 9 deletions edc_sites/tests/tests/test_sites.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,6 @@
from multisite import SiteID
from multisite.models import Alias

from edc_sites.auths import view_auditallsites_codename
from edc_sites.forms import SiteModelFormMixin
from edc_sites.models import SiteProfile
from edc_sites.single_site import SingleSite
Expand Down Expand Up @@ -382,9 +381,10 @@ def test_permissions_sites(self):
request = rf.get("/")
request.site = Site.objects.get(id=30)
request.user = User.objects.get(username="user_login")
permission = Permission.objects.get(codename=view_auditallsites_codename)

request.user.user_permissions.add(permission)
# raises exception?
request.user.userprofile.is_multisite_viewer = True
request.user.userprofile.save()

self.assertFalse(sites.user_may_view_other_sites(request))

Expand Down Expand Up @@ -419,8 +419,9 @@ def test_permissions_sites_not_in_userprofile(self):
# only add 40 to user profile
request.user.userprofile.sites.add(Site.objects.get(id=40))
request.user.user_permissions.clear()
permission = Permission.objects.get(codename=view_auditallsites_codename)
request.user.user_permissions.add(permission)
# raises exception?
request.user.userprofile.is_multisite_viewer = True
request.user.userprofile.save()

self.assertRaises(InvalidSiteForUser, sites.user_may_view_other_sites, request)

Expand All @@ -437,8 +438,11 @@ def test_permissions_messages(self):
# 1. only add 40 to user profile
response.wsgi_request.user.userprofile.sites.add(Site.objects.get(id=40))
response.wsgi_request.user.user_permissions.clear()
permission = Permission.objects.get(codename=view_auditallsites_codename)
response.wsgi_request.user.user_permissions.add(permission)

# raises exception?
response.wsgi_request.user.userprofile.is_multisite_viewer = True
response.wsgi_request.user.userprofile.save()

# ... site not in user profile
self.assertRaises(
InvalidSiteForUser, sites.user_may_view_other_sites, response.wsgi_request
Expand All @@ -448,8 +452,11 @@ def test_permissions_messages(self):
response.wsgi_request.user.userprofile.sites.add(Site.objects.get(id=30))
response.wsgi_request.user.userprofile.sites.add(Site.objects.get(id=40))
response.wsgi_request.user.user_permissions.clear()
permission = Permission.objects.get(codename=view_auditallsites_codename)
response.wsgi_request.user.user_permissions.add(permission)

# raises exception?
response.wsgi_request.user.userprofile.is_multisite_viewer = True
response.wsgi_request.user.userprofile.save()

sites.user_may_view_other_sites(response.wsgi_request)
self.assertIn(
get_message_text(messages.WARNING),
Expand Down
7 changes: 1 addition & 6 deletions edc_sites/utils/__init__.py
Original file line number Diff line number Diff line change
@@ -1,13 +1,8 @@
from .add_or_update_django_sites import add_or_update_django_sites
from .get_change_codenames import get_change_codenames
from .get_message_text import get_message_text
from .get_or_create_site_obj import get_or_create_site_obj
from .get_or_create_site_profile_obj import get_or_create_site_profile_obj
from .get_site_model_cls import get_site_model_cls
from .get_user_codenames_or_raise import get_user_codenames_or_raise
from .has_profile_or_raise import has_profile_or_raise
from .insert_into_domain import insert_into_domain
from .valid_site_for_subject_or_raise import (
InvalidSiteForSubjectError,
valid_site_for_subject_or_raise,
)
from .valid_site_for_subject_or_raise import valid_site_for_subject_or_raise
16 changes: 0 additions & 16 deletions edc_sites/utils/get_change_codenames.py

This file was deleted.

21 changes: 0 additions & 21 deletions edc_sites/utils/get_user_codenames_or_raise.py

This file was deleted.

2 changes: 2 additions & 0 deletions edc_sites/utils/valid_site_for_subject_or_raise.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,8 @@
from django.contrib.sites.models import Site
from edc_registration.models import RegisteredSubject

__all__ = ["valid_site_for_subject_or_raise"]


def valid_site_for_subject_or_raise(
subject_identifier: str, skip_get_current_site: bool | None = None
Expand Down
3 changes: 0 additions & 3 deletions edc_sites/view_mixins.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@

from django.core.exceptions import ObjectDoesNotExist

from .auths import view_auditallsites_codename
from .models import SiteProfile
from .site import SiteNotRegistered, sites

Expand All @@ -22,6 +21,4 @@ def get_context_data(self, **kwargs) -> dict:
"Unable to determine site profile 'title'. No sites have been registered! "
)
raise
codename = f"edc_sites.{view_auditallsites_codename}"
kwargs.update(has_view_auditallsites=self.request.user.has_perm(codename))
return super().get_context_data(**kwargs)

0 comments on commit b581682

Please sign in to comment.