From b5739a74f6b56aa7fe20aa30fc079839841a6734 Mon Sep 17 00:00:00 2001 From: Austin Riba Date: Wed, 6 May 2026 16:40:55 -0700 Subject: [PATCH] Assign correct target permissions when using a custom target model --- tom_alerts/views.py | 8 ++-- tom_dataproducts/tests/test_api.py | 17 +++---- tom_dataproducts/tests/tests.py | 23 ++++++---- tom_dataservices/views.py | 8 ++-- tom_observations/tests/test_api.py | 4 +- tom_observations/tests/tests.py | 12 +++-- tom_targets/base_models.py | 20 +++++++-- tom_targets/fields.py | 4 +- tom_targets/forms.py | 14 +++--- tom_targets/groups.py | 19 +++++--- tom_targets/serializers.py | 15 ++++--- tom_targets/tests/test_api.py | 32 ++++++++------ tom_targets/tests/tests.py | 71 ++++++++++++++++++------------ 13 files changed, 158 insertions(+), 89 deletions(-) diff --git a/tom_alerts/views.py b/tom_alerts/views.py index ca8f75218..528e6892a 100644 --- a/tom_alerts/views.py +++ b/tom_alerts/views.py @@ -1,3 +1,4 @@ +from tom_targets.base_models import get_target_model_app_label from copy import deepcopy import logging from requests import HTTPError @@ -315,10 +316,11 @@ def post(self, request, *args, **kwargs): # and all associated data products target.give_user_access(self.request.user) broker_class().process_reduced_data(target, cached_alert) + target_app_label = get_target_model_app_label() for group in request.user.groups.all(): - assign_perm('tom_targets.view_target', group, target) - assign_perm('tom_targets.change_target', group, target) - assign_perm('tom_targets.delete_target', group, target) + assign_perm(f'{target_app_label}.view_target', group, target) + assign_perm(f'{target_app_label}.change_target', group, target) + assign_perm(f'{target_app_label}.delete_target', group, target) assign_perm('tom_dataproducts.view_reduceddatum', group, target.reduceddatum_set.all()) assign_perm('tom_dataproducts.change_reduceddatum', group, target.reduceddatum_set.all()) assign_perm('tom_dataproducts.delete_reduceddatum', group, target.reduceddatum_set.all()) diff --git a/tom_dataproducts/tests/test_api.py b/tom_dataproducts/tests/test_api.py index a8ad6dc69..f76e02299 100644 --- a/tom_dataproducts/tests/test_api.py +++ b/tom_dataproducts/tests/test_api.py @@ -1,3 +1,4 @@ +from tom_targets.base_models import get_target_model_app_label from django.contrib.auth.models import Group, User from django.core.files.uploadedfile import SimpleUploadedFile from django.urls import reverse @@ -22,11 +23,11 @@ def setUp(self): 'target': self.st.id, 'data_product_type': 'photometry' } - + target_app_label = get_target_model_app_label() assign_perm('tom_dataproducts.add_dataproduct', self.user) - assign_perm('tom_targets.add_target', self.user, self.st) - assign_perm('tom_targets.view_target', self.user, self.st) - assign_perm('tom_targets.change_target', self.user, self.st) + assign_perm(f'{target_app_label}.add_target', self.user, self.st) + assign_perm(f'{target_app_label}.view_target', self.user, self.st) + assign_perm(f'{target_app_label}.change_target', self.user, self.st) def test_data_product_upload_for_target(self): collaborator = User.objects.create(username='test collaborator') @@ -120,11 +121,11 @@ def setUp(self): 'target': self.st.id, 'timestamp': '2012-02-12T01:40:47Z' } - + target_app_label = get_target_model_app_label() assign_perm('tom_dataproducts.add_reduceddatum', self.user) - assign_perm('tom_targets.add_target', self.user, self.st) - assign_perm('tom_targets.view_target', self.user, self.st) - assign_perm('tom_targets.change_target', self.user, self.st) + assign_perm(f'{target_app_label}.add_target', self.user, self.st) + assign_perm(f'{target_app_label}.view_target', self.user, self.st) + assign_perm(f'{target_app_label}.change_target', self.user, self.st) def test_upload_reduced_datum(self): response = self.client.post(reverse('api:reduceddatums-list'), self.rd_data, format='json') diff --git a/tom_dataproducts/tests/tests.py b/tom_dataproducts/tests/tests.py index b53fd58e9..30863d10f 100644 --- a/tom_dataproducts/tests/tests.py +++ b/tom_dataproducts/tests/tests.py @@ -1,3 +1,4 @@ +from tom_targets.base_models import get_target_model_app_label import datetime from http import HTTPStatus import os @@ -65,7 +66,8 @@ def setUp(self): data=SimpleUploadedFile('afile.fits', b'somedata') ) user = User.objects.create_user(username='test', email='test@example.com') - assign_perm('tom_targets.view_target', user, self.target) + target_app_label = get_target_model_app_label() + assign_perm(f'{target_app_label}.view_target', user, self.target) self.client.force_login(user) def test_dataproduct_list_on_target(self, dp_mock): @@ -207,8 +209,9 @@ def setUp(self): ) self.user = User.objects.create_user(username='aaronrodgers', email='aaron.rodgers@packers.com') self.user2 = User.objects.create_user(username='timboyle', email='tim.boyle@packers.com') - assign_perm('tom_targets.view_target', self.user, self.target) - assign_perm('tom_targets.view_target', self.user2, self.target) + target_app_label = get_target_model_app_label() + assign_perm(f'{target_app_label}.view_target', self.user, self.target) + assign_perm(f'{target_app_label}.view_target', self.user2, self.target) assign_perm('tom_targets.view_dataproduct', self.user, self.data_product) self.client.force_login(self.user) @@ -265,7 +268,8 @@ def setUp(self): data=SimpleUploadedFile('afile.fits', b'somedata') ) user = User.objects.create_user(username='test', email='test@example.com') - assign_perm('tom_targets.view_target', user, self.target) + target_app_label = get_target_model_app_label() + assign_perm(f'{target_app_label}.view_target', user, self.target) self.client.force_login(user) @patch('tom_dataproducts.models.DataProduct.get_preview', return_value='/no-image.jpg') @@ -300,7 +304,8 @@ def setUp(self): data=SimpleUploadedFile('afile.fits', b'somedata') ) self.user = User.objects.create_user(username='test', email='test@example.com') - assign_perm('tom_targets.view_target', self.user, self.target) + target_app_label = get_target_model_app_label() + assign_perm(f'{target_app_label}.view_target', self.user, self.target) self.client.force_login(self.user) def test_upload_data_for_target(self, run_data_processor_mock): @@ -350,8 +355,9 @@ def setUp(self): ) self.user = User.objects.create_user(username='aaronrodgers', email='aaron.rodgers@packers.com') self.user2 = User.objects.create_user(username='timboyle', email='tim.boyle@packers.com') - assign_perm('tom_targets.view_target', self.user, self.target) - assign_perm('tom_targets.view_target', self.user2, self.target) + target_app_label = get_target_model_app_label() + assign_perm(f'{target_app_label}.view_target', self.user, self.target) + assign_perm(f'{target_app_label}.view_target', self.user2, self.target) assign_perm('tom_targets.view_dataproduct', self.user, self.data_product) assign_perm('tom_targets.view_dataproduct', self.user2, self.data_product) assign_perm('tom_targets.delete_dataproduct', self.user, self.data_product) @@ -636,7 +642,8 @@ def setUp(self): data=SimpleUploadedFile('afile.fits', b'somedata') ) self.user = User.objects.create_user(username='test', email='test@example.com') - assign_perm('tom_targets.view_target', self.user, self.target) + target_app_label = get_target_model_app_label() + assign_perm(f'{target_app_label}.view_target', self.user, self.target) self.client.force_login(self.user) self.rd1 = ReducedDatum.objects.create( diff --git a/tom_dataservices/views.py b/tom_dataservices/views.py index 3fc535045..dc4ce2486 100644 --- a/tom_dataservices/views.py +++ b/tom_dataservices/views.py @@ -1,3 +1,4 @@ +from tom_targets.base_models import get_target_model_app_label import logging from requests import HTTPError @@ -351,10 +352,11 @@ def post(self, request, *args, **kwargs): target.save(extras=extras, names=aliases) # Give the user access to the target they created target.give_user_access(self.request.user) + target_app_label = get_target_model_app_label() for group in request.user.groups.all(): - assign_perm('tom_targets.view_target', group, target) - assign_perm('tom_targets.change_target', group, target) - assign_perm('tom_targets.delete_target', group, target) + assign_perm(f'{target_app_label}.view_target', group, target) + assign_perm(f'{target_app_label}.change_target', group, target) + assign_perm(f'{target_app_label}.delete_target', group, target) except IntegrityError: messages.warning(request, mark_safe( diff --git a/tom_observations/tests/test_api.py b/tom_observations/tests/test_api.py index f2e9770ec..525ea5288 100644 --- a/tom_observations/tests/test_api.py +++ b/tom_observations/tests/test_api.py @@ -1,3 +1,4 @@ +from tom_targets.base_models import get_target_model_app_label from copy import deepcopy from unittest.mock import patch @@ -30,7 +31,8 @@ def setUp(self): self.obsr2 = ObservingRecordFactory.create(target_id=self.st2.id) self.obsr3 = ObservingRecordFactory.create(target_id=self.st3.id) - assign_perm('tom_targets.view_target', self.user, self.st2) + target_app_label = get_target_model_app_label() + assign_perm(f'{target_app_label}.view_target', self.user, self.st2) self.client.force_login(self.user) diff --git a/tom_observations/tests/tests.py b/tom_observations/tests/tests.py index 8bde9c3fa..8db26478c 100644 --- a/tom_observations/tests/tests.py +++ b/tom_observations/tests/tests.py @@ -1,3 +1,4 @@ +from tom_targets.base_models import get_target_model_app_label from datetime import datetime, timedelta from http import HTTPStatus from unittest import mock @@ -35,7 +36,8 @@ def setUp(self): ) self.user = User.objects.create_user(username='vincent_adultman', password='important') self.user2 = User.objects.create_user(username='peon', password='plebian') - assign_perm('tom_targets.view_target', self.user, self.target) + target_app_label = get_target_model_app_label() + assign_perm(f'{target_app_label}.view_target', self.user, self.target) self.client.force_login(self.user) def test_observation_list(self): @@ -136,7 +138,8 @@ def setUp(self): ) self.user = User.objects.create_user(username='vincent_adultman', password='important') self.user2 = User.objects.create_user(username='peon', password='plebian') - assign_perm('tom_targets.view_target', self.user, self.target) + target_app_label = get_target_model_app_label() + assign_perm(f'{target_app_label}.view_target', self.user, self.target) self.client.force_login(self.user) def test_submit_observation_robotic(self): @@ -338,8 +341,9 @@ def setUp(self): ) user = User.objects.create_user(username='vincent_adultman', password='important') self.user2 = User.objects.create_user(username='peon', password='plebian') - assign_perm('tom_targets.view_target', user, self.target) - assign_perm('tom_targets.view_target', self.user2, self.target) + target_app_label = get_target_model_app_label() + assign_perm(f'{target_app_label}.view_target', user, self.target) + assign_perm(f'{target_app_label}.view_target', self.user2, self.target) assign_perm('tom_observations.view_observationrecord', user, self.observation_record) self.client.force_login(user) diff --git a/tom_targets/base_models.py b/tom_targets/base_models.py index c59760453..c4e81974f 100644 --- a/tom_targets/base_models.py +++ b/tom_targets/base_models.py @@ -200,6 +200,19 @@ def get_default_target_permission(): return BaseTarget.Permissions.PRIVATE +def get_target_model_app_label(): + """Function to retrieve the app label of the target model class from settings.py. + If not found, returns the default 'tom_targets'.""" + try: + TARGET_MODEL_CLASS = settings.TARGET_MODEL_CLASS + clazz = import_string(TARGET_MODEL_CLASS) + return clazz._meta.app_label + except AttributeError: + return 'tom_targets' + except ImportError: + return 'tom_targets' + + class BaseTarget(models.Model): """ Class representing a target in a TOM @@ -603,6 +616,7 @@ def give_user_access(self, user): :param user: :return: """ - assign_perm('tom_targets.view_target', user, self) - assign_perm('tom_targets.change_target', user, self) - assign_perm('tom_targets.delete_target', user, self) + target_app_label = get_target_model_app_label() + assign_perm(f'{target_app_label}.view_target', user, self) + assign_perm(f'{target_app_label}.change_target', user, self) + assign_perm(f'{target_app_label}.delete_target', user, self) diff --git a/tom_targets/fields.py b/tom_targets/fields.py index 2f2b674b0..fbe127c06 100644 --- a/tom_targets/fields.py +++ b/tom_targets/fields.py @@ -1,3 +1,4 @@ +from tom_targets.base_models import get_target_model_app_label from guardian.shortcuts import get_objects_for_user from rest_framework import serializers @@ -11,4 +12,5 @@ def get_queryset(self): queryset = super().get_queryset() if not (request and queryset): return None - return get_objects_for_user(request.user, 'tom_targets.change_target') + target_app_label = get_target_model_app_label() + return get_objects_for_user(request.user, f'{target_app_label}.change_target') diff --git a/tom_targets/forms.py b/tom_targets/forms.py index 723b0f3e2..fafb8598c 100644 --- a/tom_targets/forms.py +++ b/tom_targets/forms.py @@ -14,6 +14,7 @@ from tom_observations.utils import get_facilities from tom_dataproducts.sharing import get_sharing_destination_options from .models import Target, TargetExtra, TargetName, TargetList, PersistentShare +from .base_models import get_target_model_app_label from tom_targets.base_models import (SIDEREAL_FIELDS, NON_SIDEREAL_FIELDS, REQUIRED_SIDEREAL_FIELDS, REQUIRED_NON_SIDEREAL_FIELDS, REQUIRED_NON_SIDEREAL_FIELDS_PER_SCHEME, IGNORE_FIELDS) @@ -97,15 +98,16 @@ def save(self, commit=True): ) updated_target_extra.save() # Save groups for this target + target_app_label = get_target_model_app_label() for group in self.cleaned_data['groups']: - assign_perm('tom_targets.view_target', group, instance) - assign_perm('tom_targets.change_target', group, instance) - assign_perm('tom_targets.delete_target', group, instance) + assign_perm(f'{target_app_label}.view_target', group, instance) + assign_perm(f'{target_app_label}.change_target', group, instance) + assign_perm(f'{target_app_label}.delete_target', group, instance) for group in get_groups_with_perms(instance): if group not in self.cleaned_data['groups']: - remove_perm('tom_targets.view_target', group, instance) - remove_perm('tom_targets.change_target', group, instance) - remove_perm('tom_targets.delete_target', group, instance) + remove_perm(f'{target_app_label}.view_target', group, instance) + remove_perm(f'{target_app_label}.change_target', group, instance) + remove_perm(f'{target_app_label}.delete_target', group, instance) return instance diff --git a/tom_targets/groups.py b/tom_targets/groups.py index 646e4277a..93abd094c 100644 --- a/tom_targets/groups.py +++ b/tom_targets/groups.py @@ -1,5 +1,6 @@ from .filters import TargetFilterSet from .models import Target +from .base_models import get_target_model_app_label from django.contrib import messages @@ -28,7 +29,8 @@ def add_all_to_grouping(filter_data, grouping_object, request): return for target_object in target_queryset: try: - if not request.user.has_perm('tom_targets.change_target', target_object): + target_app_label = get_target_model_app_label() + if not request.user.has_perm(f'{target_app_label}.change_target', target_object): failure_targets.append((target_object.name, 'Permission denied.',)) elif grouping_object.targets.filter(pk=target_object.pk).exists(): warning_targets.append(target_object.name) @@ -67,7 +69,8 @@ def add_selected_to_grouping(targets_ids, grouping_object, request): for target_id in targets_ids: try: target_object = Target.objects.get(pk=target_id) - if not request.user.has_perm('tom_targets.change_target', target_object): + target_app_label = get_target_model_app_label() + if not request.user.has_perm(f'{target_app_label}.change_target', target_object): failure_targets.append((target_object.name, 'Permission denied.',)) elif grouping_object.targets.filter(pk=target_object.pk).exists(): warning_targets.append(target_object.name) @@ -111,7 +114,8 @@ def remove_all_from_grouping(filter_data, grouping_object, request): return for target_object in target_queryset: try: - if not request.user.has_perm('tom_targets.change_target', target_object): + target_app_label = get_target_model_app_label() + if not request.user.has_perm(f'{target_app_label}.change_target', target_object): failure_targets.append((target_object.name, 'Permission denied.',)) elif not grouping_object.targets.filter(pk=target_object.pk).exists(): warning_targets.append(target_object.name) @@ -150,8 +154,9 @@ def remove_selected_from_grouping(targets_ids, grouping_object, request): failure_targets = [] for target_id in targets_ids: try: + target_app_label = get_target_model_app_label() target_object = Target.objects.get(pk=target_id) - if not request.user.has_perm('tom_targets.change_target', target_object): + if not request.user.has_perm(f'{target_app_label}.change_target', target_object): failure_targets.append((target_object.name, 'Permission denied.',)) elif not grouping_object.targets.filter(pk=target_object.pk).exists(): warning_targets.append(target_object.name) @@ -198,7 +203,8 @@ def move_all_to_grouping(filter_data, grouping_object, request): return for target_object in target_queryset: try: - if not request.user.has_perm('tom_targets.change_target', target_object): + target_app_label = get_target_model_app_label() + if not request.user.has_perm(f'{target_app_label}.change_target', target_object): failure_targets.append((target_object.name, 'Permission denied.',)) elif grouping_object.targets.filter(pk=target_object.pk).exists(): warning_targets.append(target_object.name) @@ -239,8 +245,9 @@ def move_selected_to_grouping(targets_ids, grouping_object, request): failure_targets = [] for target_id in targets_ids: try: + target_app_label = get_target_model_app_label() target_object = Target.objects.get(pk=target_id) - if not request.user.has_perm('tom_targets.change_target', target_object): + if not request.user.has_perm(f'{target_app_label}.change_target', target_object): failure_targets.append((target_object.name, 'Permission denied.',)) elif grouping_object.targets.filter(pk=target_object.pk).exists(): warning_targets.append(target_object.name) diff --git a/tom_targets/serializers.py b/tom_targets/serializers.py index 2ed7150bd..3a3e00da6 100644 --- a/tom_targets/serializers.py +++ b/tom_targets/serializers.py @@ -1,3 +1,4 @@ +from tom_targets.base_models import get_target_model_app_label from django.contrib.auth.models import Group from guardian.shortcuts import assign_perm, get_groups_with_perms from rest_framework import serializers @@ -79,9 +80,10 @@ def create(self, validated_data): group_instance = Group.objects.get(pk=group['id']) except KeyError: group_instance, _ = Group.objects.get_or_create(name=group['name']) - assign_perm('tom_targets.view_target', group_instance, target) - assign_perm('tom_targets.change_target', group_instance, target) - assign_perm('tom_targets.delete_target', group_instance, target) + target_app_label = get_target_model_app_label() + assign_perm(f'{target_app_label}.view_target', group_instance, target) + assign_perm(f'{target_app_label}.change_target', group_instance, target) + assign_perm(f'{target_app_label}.delete_target', group_instance, target) tns = TargetNameSerializer(data=aliases, many=True) if tns.is_valid(): @@ -129,9 +131,10 @@ def update(self, instance, validated_data): if group_serializer.is_valid(): for group in groups: group_instance = Group.objects.get(pk=group['id']) - assign_perm('tom_targets.view_target', group_instance, instance) - assign_perm('tom_targets.change_target', group_instance, instance) - assign_perm('tom_targets.delete_target', group_instance, instance) # TODO: add tests + target_app_label = get_target_model_app_label() + assign_perm(f'{target_app_label}.view_target', group_instance, instance) + assign_perm(f'{target_app_label}.change_target', group_instance, instance) + assign_perm(f'{target_app_label}.delete_target', group_instance, instance) # TODO: add tests for alias_data in aliases: alias = dict(alias_data) diff --git a/tom_targets/tests/test_api.py b/tom_targets/tests/test_api.py index 3b3200352..067a79201 100644 --- a/tom_targets/tests/test_api.py +++ b/tom_targets/tests/test_api.py @@ -1,3 +1,4 @@ +from tom_targets.base_models import get_target_model_app_label import copy from django.contrib.auth.models import User, Group @@ -18,16 +19,17 @@ def setUp(self): self.st = SiderealTargetFactory.create(name='test target', targetextra_set=None, aliases=None) self.st2 = SiderealTargetFactory.create() self.nst = NonSiderealTargetFactory.create() - assign_perm('tom_targets.view_target', self.user, self.st) - assign_perm('tom_targets.view_target', self.user, self.nst) - assign_perm('tom_targets.add_target', self.user) - assign_perm('tom_targets.change_target', self.user, self.st) - assign_perm('tom_targets.change_target', self.user, self.nst) - assign_perm('tom_targets.delete_target', self.user, self.st) + target_app_label = get_target_model_app_label() + assign_perm(f'{target_app_label}.view_target', self.user, self.st) + assign_perm(f'{target_app_label}.view_target', self.user, self.nst) + assign_perm(f'{target_app_label}.add_target', self.user) + assign_perm(f'{target_app_label}.change_target', self.user, self.st) + assign_perm(f'{target_app_label}.change_target', self.user, self.nst) + assign_perm(f'{target_app_label}.delete_target', self.user, self.st) # Create test user with subset of permissions self.user2 = User.objects.create(username='testuser2') - assign_perm('tom_targets.view_target', self.user2, self.st) + assign_perm(f'{target_app_label}.view_target', self.user2, self.st) # Login with privileged user self.client.force_login(self.user) @@ -85,7 +87,8 @@ def test_target_create(self): self.assertEqual(response.status_code, status.HTTP_201_CREATED) self.assertEqual(response.json()['name'], target_data['name']) self.assertEqual(response.json()['aliases'][0]['name'], target_data['aliases'][0]['name']) - self.assertEqual(get_objects_for_user(collaborator, 'tom_targets.view_target').first().name, + target_app_label = get_target_model_app_label() + self.assertEqual(get_objects_for_user(collaborator, f'{target_app_label}.view_target').first().name, target_data['name']) # Test that group permissions are respected target_list2 = TargetList.objects.get(name='newer_tlist') self.assertEqual(target_list.targets.all().count(), 1) @@ -160,7 +163,8 @@ def test_target_update(self): self.assertEqual(response.status_code, status.HTTP_200_OK) self.st.refresh_from_db() self.assertEqual(self.st.ra, updates['ra']) - self.assertEqual(get_objects_for_user(collaborator, 'tom_targets.view_target').first().name, + target_app_label = get_target_model_app_label() + self.assertEqual(get_objects_for_user(collaborator, f'{target_app_label}.view_target').first().name, self.st.name) # Test that group permissions are respected self.client.force_login(self.user2) @@ -254,8 +258,9 @@ def setUp(self): user = User.objects.create(username='testuser') self.st = SiderealTargetFactory.create() self.alias = TargetNameFactory.create(target=self.st) - assign_perm('tom_targets.view_target', user, self.st) - assign_perm('tom_targets.delete_target', user, self.st) + target_app_label = get_target_model_app_label() + assign_perm(f'{target_app_label}.view_target', user, self.st) + assign_perm(f'{target_app_label}.delete_target', user, self.st) self.user2 = User.objects.create(username='testuser2') @@ -281,8 +286,9 @@ def setUp(self): user = User.objects.create(username='testuser') self.st = SiderealTargetFactory.create() self.extra = TargetExtraFactory.create(target=self.st) - assign_perm('tom_targets.view_target', user, self.st) - assign_perm('tom_targets.delete_target', user, self.st) + target_app_label = get_target_model_app_label() + assign_perm(f'{target_app_label}.view_target', user, self.st) + assign_perm(f'{target_app_label}.delete_target', user, self.st) self.user2 = User.objects.create(username='testuser2') diff --git a/tom_targets/tests/tests.py b/tom_targets/tests/tests.py index 522b09b49..88fd8b1dd 100644 --- a/tom_targets/tests/tests.py +++ b/tom_targets/tests/tests.py @@ -18,7 +18,7 @@ from tom_targets.models import Target, TargetExtra, TargetList, TargetName from tom_targets.utils import import_targets from tom_targets.merge import target_merge -from tom_targets.base_models import BaseTarget +from tom_targets.base_models import BaseTarget, get_target_model_app_label from tom_targets.templatetags.targets_extras import target_table_headers, target_table_row from tom_targets.permissions import targets_for_user from tom_dataproducts.models import ReducedDatum, DataProduct @@ -34,9 +34,10 @@ def setUp(self): self.st2 = SiderealTargetFactory.create(permissions="PRIVATE") self.st3 = SiderealTargetFactory.create(permissions="PUBLIC") - assign_perm('tom_targets.view_target', self.user, self.st1) - assign_perm('tom_targets.view_target', self.user, self.st2) - assign_perm('tom_targets.view_target', self.user2, self.st2) + target_app_label = get_target_model_app_label() + assign_perm(f'{target_app_label}.view_target', self.user, self.st1) + assign_perm(f'{target_app_label}.view_target', self.user, self.st2) + assign_perm(f'{target_app_label}.view_target', self.user2, self.st2) def test_list_targets(self): self.client.force_login(self.user) @@ -66,8 +67,9 @@ def setUp(self): self.group2.user_set.add(self.user) self.group2.user_set.add(self.user2) - assign_perm('tom_targets.view_target', self.group1, self.st1) - assign_perm('tom_targets.view_target', self.group2, self.st2) + target_app_label = get_target_model_app_label() + assign_perm(f'{target_app_label}.view_target', self.group1, self.st1) + assign_perm(f'{target_app_label}.view_target', self.group2, self.st2) def test_list_targets(self): self.client.force_login(self.user) @@ -95,8 +97,9 @@ def setUp(self): self.client.force_login(user) self.st = SiderealTargetFactory.create(ra=123.456, dec=-32.1, permissions="PRIVATE") self.nst = NonSiderealTargetFactory.create(permissions="PRIVATE") - assign_perm('tom_targets.view_target', user, self.st) - assign_perm('tom_targets.view_target', user, self.nst) + target_app_label = get_target_model_app_label() + assign_perm(f'{target_app_label}.view_target', user, self.st) + assign_perm(f'{target_app_label}.view_target', user, self.nst) def test_sidereal_target_detail(self): response = self.client.get(reverse('targets:detail', kwargs={'pk': self.st.id})) @@ -133,10 +136,11 @@ def setUp(self): self.st2 = SiderealTargetFactory.create(name='testtarget2', permissions="PRIVATE") self.st3 = SiderealTargetFactory.create(name='testtarget3', permissions="PRIVATE") - assign_perm('tom_targets.view_target', self.user, self.st1) - assign_perm('tom_targets.view_target', self.user2, self.st1) - assign_perm('tom_targets.view_target', self.user, self.st2) - assign_perm('tom_targets.view_target', self.user, self.st3) + target_app_label = get_target_model_app_label() + assign_perm(f'{target_app_label}.view_target', self.user, self.st1) + assign_perm(f'{target_app_label}.view_target', self.user2, self.st1) + assign_perm(f'{target_app_label}.view_target', self.user, self.st2) + assign_perm(f'{target_app_label}.view_target', self.user, self.st3) def test_search_one_result(self): """Test that a search with one result returns the target detail page.""" @@ -171,7 +175,8 @@ def test_search_one_result_unauthorized(self): def test_search_multiple_results_unauthorized(self): """Test that a search with multiple results returns the target list page, but without the targets that the user is not allowed to view.""" - assign_perm('tom_targets.view_target', self.user2, self.st2) + target_app_label = get_target_model_app_label() + assign_perm(f'{target_app_label}.view_target', self.user2, self.st2) self.client.force_login(self.user2) response = self.client.get(reverse('targets:name-search', kwargs={'name': 'testtarget'}), follow=True) self.assertRedirects(response, reverse('targets:list') + '?name=testtarget') @@ -744,7 +749,8 @@ def setUp(self): } user = User.objects.create(username='testuser') self.target = Target.objects.create(**self.form_data) - assign_perm('tom_targets.change_target', user, self.target) + target_app_label = get_target_model_app_label() + assign_perm(f'{target_app_label}.change_target', user, self.target) self.client.force_login(user) def test_valid_update(self): @@ -961,7 +967,8 @@ def setUp(self): } user = User.objects.create(username='testuser') self.target = Target.objects.create(**self.form_data) - assign_perm('tom_targets.change_target', user, self.target) + target_app_label = get_target_model_app_label() + assign_perm(f'{target_app_label}.change_target', user, self.target) self.client.force_login(user) def test_strict_matching(self): @@ -1084,8 +1091,9 @@ def setUp(self): self.user = User.objects.create(username='testuser') self.client.force_login(self.user) - assign_perm('tom_targets.view_target', self.user, self.st) - assign_perm('tom_targets.view_target', self.user, self.st2) + target_app_label = get_target_model_app_label() + assign_perm(f'{target_app_label}.view_target', self.user, self.st) + assign_perm(f'{target_app_label}.view_target', self.user, self.st2) def test_export_all_targets_no_aliases(self): response = self.client.get(reverse('targets:export')) @@ -1126,7 +1134,8 @@ def setUp(self): self.user = User.objects.create(username='testuser') self.client.force_login(self.user) - assign_perm('tom_targets.view_target', self.user, self.st) + target_app_label = get_target_model_app_label() + assign_perm(f'{target_app_label}.view_target', self.user, self.st) def test_search_name_no_results(self): response = self.client.get(reverse('targets:list') + '?name=noresults') @@ -1189,7 +1198,8 @@ def test_view_groupings(self): # give this user the permission to view it user = User.objects.get(username='testuser') - assign_perm('tom_targets.view_targetlist', user, group) + target_app_label = get_target_model_app_label() + assign_perm(f'{target_app_label}.view_targetlist', user, group) response = self.client.get(reverse('targets:targetgrouping'), follow=True) self.assertContains(response, group.name) @@ -1227,11 +1237,13 @@ def setUp(self): for _ in range(3): ft = SiderealTargetFactory.create() self.fake_targets.append(ft) - assign_perm('tom_targets.view_target', user, ft) - assign_perm('tom_targets.change_target', user, ft) + target_app_label = get_target_model_app_label() + assign_perm(f'{target_app_label}.view_target', user, ft) + assign_perm(f'{target_app_label}.change_target', user, ft) # create grouping self.fake_grouping = TargetGroupingFactory.create() - assign_perm('tom_targets.view_targetlist', user, self.fake_grouping) + target_app_label = get_target_model_app_label() + assign_perm(f'{target_app_label}.view_targetlist', user, self.fake_grouping) # add target[0] to grouping self.fake_grouping.targets.add(self.fake_targets[0]) @@ -1464,7 +1476,8 @@ def setUp(self): parameters={} ) self.user = User.objects.create_user(username='test', email='test@example.com') - assign_perm('tom_targets.view_target', self.user, self.target) + target_app_label = get_target_model_app_label() + assign_perm(f'{target_app_label}.view_target', self.user, self.target) self.client.force_login(self.user) self.rd1 = ReducedDatum.objects.create( target=self.target, @@ -1644,7 +1657,8 @@ def setUp(self): ) self.target_list.targets.set(Target.objects.all()) self.user = User.objects.create_user(username='test', email='test@example.com') - assign_perm('tom_targets.view_target', self.user, self.target) + target_app_label = get_target_model_app_label() + assign_perm(f'{target_app_label}.view_target', self.user, self.target) self.client.force_login(self.user) self.rd1 = ReducedDatum.objects.create( target=self.target, @@ -2032,7 +2046,8 @@ def test_public_targets_visible(self): def test_private_group_permission(self): self.group.user_set.add(self.user) - assign_perm('tom_targets.view_target', self.group, self.private_group_target) + target_app_label = get_target_model_app_label() + assign_perm(f'{target_app_label}.view_target', self.group, self.private_group_target) result = targets_for_user(self.user, Target.objects.all(), 'view_target') self.assertIn(self.open_target, result) self.assertIn(self.public_target, result) @@ -2040,7 +2055,8 @@ def test_private_group_permission(self): self.assertNotIn(self.private_user_target, result) def test_private_user_permission(self): - assign_perm('tom_targets.view_target', self.user, self.private_user_target) + target_app_label = get_target_model_app_label() + assign_perm(f'{target_app_label}.view_target', self.user, self.private_user_target) result = targets_for_user(self.user, Target.objects.all(), 'view_target') self.assertIn(self.open_target, result) self.assertIn(self.public_target, result) @@ -2048,7 +2064,8 @@ def test_private_user_permission(self): self.assertIn(self.private_user_target, result) def test_private_user_permission_wrong_action(self): - assign_perm('tom_targets.view_target', self.user, self.private_user_target) + target_app_label = get_target_model_app_label() + assign_perm(f'{target_app_label}.view_target', self.user, self.private_user_target) result = targets_for_user(self.user, Target.objects.all(), 'delete_target') self.assertIn(self.open_target, result) self.assertIn(self.public_target, result)