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

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

# noinspection PyPackageRequirements 

 

import pytest 

from django.contrib.auth.models import User 

from django.db.models.query import EmptyResultSet 

from guardian.shortcuts import assign_perm 

 

from .app.viewsets import perms 

 

 

class BaseUsers: 

 

 

# region Users and abstract permissions 

 

@pytest.fixture() 

def user(self, read, write, guardian_read, guardian_write, 

item_read, item_write, guardian_item_read, guardian_item_write): 

user,_ = User.objects.get_or_create(username='a_%s_%s_%s_%s_%s_%s_%s_%s' % ( 

read, write, guardian_read, guardian_write, 

item_read, item_write, guardian_item_read, guardian_item_write 

)) 

if read: 

user.user_permissions.add(self.view_permission) 

if write: 

user.user_permissions.add(self.change_permission) 

if item_read: 

user.user_permissions.add(self.view_item_permission) 

if item_write: 

user.user_permissions.add(self.change_item_permission) 

if guardian_read: 

for cont in self.guardian_containers: 

assign_perm(self.view_permission, user, cont) 

if guardian_write: 

for cont in self.guardian_containers: 

assign_perm(self.change_permission, user, cont) 

if guardian_item_read: 

for item in self.guardian_directly_on_items: 

assign_perm(self.view_item_permission, user, item) 

if guardian_item_write: 

for item in self.guardian_directly_on_items: 

assign_perm(self.change_item_permission, user, item) 

return user 

 

@pytest.fixture() 

def read_true(self): 

return True 

 

@pytest.fixture() 

def read_false(self): 

return False 

 

@pytest.fixture() 

def write_true(self): 

return True 

 

@pytest.fixture() 

def write_false(self): 

return False 

 

@pytest.fixture() 

def guardian_read_true(self): 

return True 

 

@pytest.fixture() 

def guardian_read_false(self): 

return False 

 

@pytest.fixture() 

def guardian_write_true(self): 

return True 

 

@pytest.fixture() 

def guardian_write_false(self): 

return False 

 

@pytest.fixture() 

def guardian_item_read_true(self): 

return True 

 

@pytest.fixture() 

def guardian_item_read_false(self): 

return False 

 

@pytest.fixture() 

def guardian_item_write_true(self): 

return True 

 

@pytest.fixture() 

def guardian_item_write_false(self): 

return False 

 

@pytest.fixture() 

def item_read_true(self): 

return True 

 

@pytest.fixture() 

def item_read_false(self): 

return False 

 

@pytest.fixture() 

def item_write_true(self): 

return True 

 

@pytest.fixture() 

def item_write_false(self): 

return False 

# endregion 

 

# region Actions 

 

@pytest.fixture 

def action_view(self): 

return 'view' 

 

@pytest.fixture 

def action_change(self): 

return 'change' 

 

# endregion