Coverage for rfpy/model/audit/visible.py: 100%

12 statements  

« prev     ^ index     » next       coverage.py v7.0.1, created at 2022-12-31 16:00 +0000

1 

2from rfpy.model.audit import evt_types as evt 

3from rfpy.model.exc import ConfigurationError 

4 

5 

6to_participants = { 

7 evt.ISSUE_ACCEPTED, 

8 evt.ISSUE_CREATED, 

9 evt.ISSUE_DEADLINE_REMINDER, 

10 evt.ISSUE_DECLINED, 

11 evt.ISSUE_DELETED, 

12 evt.ISSUE_EXPIRED, 

13 evt.ISSUE_RELEASED, 

14 evt.ISSUE_RELEASED_UPDATEABLE, 

15 evt.ISSUE_RETRACTED, 

16 evt.ISSUE_REVERTED_TO_ACCEPTED, 

17 evt.ISSUE_SUBMITTED, 

18 evt.ISSUE_UPDATED, 

19 evt.PROJECT_ACCESS_GRANTED, 

20 evt.PROJECT_ACCESS_REVOKED, 

21 evt.PROJECT_ATTACHMENT_ADDED, 

22 evt.PROJECT_ATTACHMENT_REMOVED, 

23 evt.PROJECT_CLOSED, 

24 evt.PROJECT_CREATED, 

25 evt.PROJECT_DELETED, 

26 evt.PROJECT_ISSUES_DEADLINE_REMINDER, 

27 evt.PROJECT_ISSUES_EXPIRED, 

28 evt.PROJECT_ISSUES_LOCKED, 

29 evt.PROJECT_ISSUES_UNLOCKED, 

30 evt.PROJECT_PUBLISHED, 

31 evt.PROJECT_REVERTED_TO_DRAFT, 

32 evt.PROJECT_UPDATED, 

33 evt.QUESTIONNAIRE_CREATED, 

34 evt.QUESTIONNAIRE_DELETED, 

35 evt.QUESTIONNAIRE_IMPORTED, 

36 evt.QUESTIONNAIRE_SECTION_IMPORTED, 

37 evt.QUESTION_COPIED, 

38 evt.QUESTION_CREATED, 

39 evt.QUESTION_DELETED, 

40 evt.QUESTION_EDITED, 

41 evt.ROLE_CREATED, 

42 evt.ROLE_DELETED, 

43 evt.ROLE_UPDATED, 

44 evt.SCORE_AUTOSCORE_CREATED, 

45 evt.SCORE_CLEARED, 

46 evt.SCORE_COMMENT_ADDED, 

47 evt.SCORE_CREATED, 

48 evt.SCORE_IMPORTED, 

49 evt.SCORE_UPDATED, 

50 evt.SECTION_ACCESS_UPDATED, 

51 evt.SECTION_CREATED, 

52 evt.SECTION_DELETED, 

53 evt.SECTION_UPDATED 

54} 

55to_respondent = { 

56 evt.ANSWER_ALLOCATED, 

57 evt.ANSWER_APPROVED, 

58 evt.ANSWER_CREATED, 

59 evt.ANSWER_IMPORTED, 

60 evt.ANSWER_REJECTED, 

61 evt.ANSWER_SUBMITTED_FOR_APPROVAL, 

62 evt.ANSWER_UPDATED, 

63 evt.ISSUE_ACCEPTED, 

64 evt.ISSUE_DEADLINE_REMINDER, 

65 evt.ISSUE_DECLINED, 

66 evt.ISSUE_EXPIRED, 

67 evt.ISSUE_RELEASED, 

68 evt.ISSUE_RELEASED_UPDATEABLE, 

69 evt.ISSUE_RETRACTED, 

70 evt.ISSUE_REVERTED_TO_ACCEPTED, 

71 evt.ISSUE_SUBMITTED, 

72 evt.ISSUE_UPDATED 

73} 

74to_initiator = { # visible to the organisation that initiated the event 

75 evt.ORG_CREATED, 

76 evt.ORG_DELETED, 

77 evt.ORG_UPDATED, 

78 evt.PROJECT_NOTE_ADDED, 

79 evt.PROJECT_NOTE_DELETED, 

80 evt.PROJECT_NOTE_UPDATED, 

81 evt.ROLE_CREATED, 

82 evt.ROLE_DELETED, 

83 evt.ROLE_UPDATED, 

84 evt.USER_ACCEPTED_TC, 

85 evt.USER_ACCOUNT_ACTIVATED, 

86 evt.USER_CREATED, 

87 evt.USER_DELETED, 

88 evt.USER_LOGGED_IN, 

89 evt.USER_PASSWORD_RECOVERED, 

90 evt.USER_PASSWORD_UPDATED, 

91 evt.USER_ROLE_GRANTED, 

92 evt.USER_ROLE_REVOKED, 

93 evt.USER_UPDATED, 

94 evt.WEBHOOK_CREATED, 

95 evt.WEBHOOK_UPDATED, 

96 evt.WEBHOOK_DELETED, 

97 evt.WEBHOOK_FAILED 

98} 

99 

100 

101def check_all_events_assigned(): 

102 ''' 

103 Check all event types are assigned to a visibility category 

104 

105 When the API lists events for buyers or respondents the visibility of each 

106 event type is checked against these lists. If new event type are added they must 

107 be assigned to one of these visibility categories. 

108 ''' 

109 assigned = to_initiator | to_participants | to_respondent 

110 

111 ets = {m for m in dir(evt) if not m.startswith('__')} 

112 

113 if ets != assigned: 

114 odds = ets ^ assigned 

115 m = f'Some Audit Event types in evt_types are unassigned in visible.py {odds}' 

116 raise ConfigurationError(m) 

117