Merge pull request #4429 from wenottingham/label-maker

Reintroduce label filtering
This commit is contained in:
Ryan Petrello
2020-07-09 09:00:57 -04:00
committed by GitHub
2 changed files with 17 additions and 3 deletions

View File

@@ -2480,13 +2480,16 @@ class NotificationAccess(BaseAccess):
class LabelAccess(BaseAccess): class LabelAccess(BaseAccess):
''' '''
I can see/use a Label if I have permission to associated organization I can see/use a Label if I have permission to associated organization, or to a JT that the label is on
''' '''
model = Label model = Label
prefetch_related = ('modified_by', 'created_by', 'organization',) prefetch_related = ('modified_by', 'created_by', 'organization',)
def filtered_queryset(self): def filtered_queryset(self):
return self.model.objects.all() return self.model.objects.filter(
Q(organization__in=Organization.accessible_pk_qs(self.user, 'read_role')) |
Q(unifiedjobtemplate_labels__in=UnifiedJobTemplate.accessible_pk_qs(self.user, 'read_role'))
)
@check_superuser @check_superuser
def can_add(self, data): def can_add(self, data):

View File

@@ -20,8 +20,19 @@ def test_label_get_queryset_su(label, user):
@pytest.mark.django_db @pytest.mark.django_db
def test_label_access(label, user): def test_label_read_access(label, user):
access = LabelAccess(user('user', False)) access = LabelAccess(user('user', False))
assert not access.can_read(label)
label.organization.member_role.members.add(user('user', False))
assert access.can_read(label)
@pytest.mark.django_db
def test_label_jt_read_access(label, user, job_template):
access = LabelAccess(user('user', False))
assert not access.can_read(label)
job_template.read_role.members.add(user('user', False))
job_template.labels.add(label)
assert access.can_read(label) assert access.can_read(label)