Hide keyboard shortcuts

Hot-keys on this page

r m x p   toggle line displays

j k   next/prev highlighted chunk

0   (zero) top of page

1   (one) first highlighted chunk

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

# noinspection PyPackageRequirements 

 

import pytest 

from guardian.shortcuts import get_objects_for_user 

 

from tests.app.models import ItemE, ItemA, Container 

from tests.app.viewsets import perms2, perms3, perms4 

from tests.test_item_base import BaseTestAllowOnlyOwner, BaseTestDelegatedOwner 

from tests.test_users_base import BaseUsers 

from .test_item_querysets_base import BaseTestItemQuerySets 

 

 

@pytest.mark.django_db(transaction=True) 

class TestDelegatedOwnerWithAndQuerySets(BaseTestDelegatedOwner, BaseTestItemQuerySets, BaseUsers): 

 

def transform_expected_ids(self, expected_ids, request): 

user = request.getfixturevalue('user') 

parents_with_permission = set() 

 

action = request.getfixturevalue('action') 

if action == 'view': 

if user.has_perm('app.view_container'): 

parents_with_permission.update(Container.objects.all()) 

parents_with_permission.update(get_objects_for_user(user, 'view_container', Container)) 

elif action == 'change': 

if user.has_perm('app.change_container'): 

parents_with_permission.update(Container.objects.all()) 

parents_with_permission.update(get_objects_for_user(user, 'change_container', Container)) 

 

returned_set = set(ItemA.objects.filter(parent__in=parents_with_permission, parent__owner=user)) 

 

if action == 'view': 

if user.has_perm('app.view_itema'): 

returned_set.update(ItemA.objects.all()) 

returned_set.update( 

get_objects_for_user(user, 'view_itema', ItemA)) 

 

elif action == 'change': 

if user.has_perm('app.change_itema'): 

returned_set.update(ItemA.objects.all()) 

returned_set.update( 

get_objects_for_user(user, 'change_itema', ItemA)) 

 

return set(x.id for x in returned_set) 

 

def get_perms(self): 

return perms4