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

12 statements  

« prev     ^ index     » next       coverage.py v7.8.0, created at 2025-04-24 10:52 +0000

1from rfpy.model.audit import evt_types as evt 

2from rfpy.model.exc import ConfigurationError 

3 

4 

5to_participants = { 

6 evt.ISSUE_ACCEPTED, 

7 evt.ISSUE_CREATED, 

8 evt.ISSUE_DEADLINE_REMINDER, 

9 evt.ISSUE_DECLINED, 

10 evt.ISSUE_DELETED, 

11 evt.ISSUE_EXPIRED, 

12 evt.ISSUE_RELEASED, 

13 evt.ISSUE_RELEASED_UPDATEABLE, 

14 evt.ISSUE_RETRACTED, 

15 evt.ISSUE_REVERTED_TO_ACCEPTED, 

16 evt.ISSUE_SUBMITTED, 

17 evt.ISSUE_UPDATED, 

18 evt.PROJECT_ACCESS_GRANTED, 

19 evt.PROJECT_ACCESS_REVOKED, 

20 evt.PROJECT_ATTACHMENT_ADDED, 

21 evt.PROJECT_ATTACHMENT_REMOVED, 

22 evt.PROJECT_CLOSED, 

23 evt.PROJECT_CREATED, 

24 evt.PROJECT_DELETED, 

25 evt.PROJECT_ISSUES_DEADLINE_REMINDER, 

26 evt.PROJECT_ISSUES_EXPIRED, 

27 evt.PROJECT_ISSUES_LOCKED, 

28 evt.PROJECT_ISSUES_UNLOCKED, 

29 evt.PROJECT_PUBLISHED, 

30 evt.PROJECT_REVERTED_TO_DRAFT, 

31 evt.PROJECT_UPDATED, 

32 evt.QUESTIONNAIRE_CREATED, 

33 evt.QUESTIONNAIRE_DELETED, 

34 evt.QUESTIONNAIRE_IMPORTED, 

35 evt.QUESTIONNAIRE_SECTION_IMPORTED, 

36 evt.QUESTION_COPIED, 

37 evt.QUESTION_CREATED, 

38 evt.QUESTION_DELETED, 

39 evt.QUESTION_EDITED, 

40 evt.ROLE_CREATED, 

41 evt.ROLE_DELETED, 

42 evt.ROLE_UPDATED, 

43 evt.SCORE_AUTOSCORE_CREATED, 

44 evt.SCORE_CLEARED, 

45 evt.SCORE_COMMENT_ADDED, 

46 evt.SCORE_CREATED, 

47 evt.SCORE_IMPORTED, 

48 evt.SCORE_UPDATED, 

49 evt.SECTION_ACCESS_UPDATED, 

50 evt.SECTION_CREATED, 

51 evt.SECTION_DELETED, 

52 evt.SECTION_UPDATED, 

53} 

54to_respondent = { 

55 evt.ANSWER_ALLOCATED, 

56 evt.ANSWER_APPROVED, 

57 evt.ANSWER_CREATED, 

58 evt.ANSWER_IMPORTED, 

59 evt.ANSWER_REJECTED, 

60 evt.ANSWER_SUBMITTED_FOR_APPROVAL, 

61 evt.ANSWER_UPDATED, 

62 evt.ISSUE_ACCEPTED, 

63 evt.ISSUE_DEADLINE_REMINDER, 

64 evt.ISSUE_DECLINED, 

65 evt.ISSUE_EXPIRED, 

66 evt.ISSUE_RELEASED, 

67 evt.ISSUE_RELEASED_UPDATEABLE, 

68 evt.ISSUE_RETRACTED, 

69 evt.ISSUE_REVERTED_TO_ACCEPTED, 

70 evt.ISSUE_SUBMITTED, 

71 evt.ISSUE_UPDATED, 

72} 

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

74 evt.ORG_CREATED, 

75 evt.ORG_DELETED, 

76 evt.ORG_UPDATED, 

77 evt.PROJECT_NOTE_ADDED, 

78 evt.PROJECT_NOTE_DELETED, 

79 evt.PROJECT_NOTE_UPDATED, 

80 evt.ROLE_CREATED, 

81 evt.ROLE_DELETED, 

82 evt.ROLE_UPDATED, 

83 evt.USER_ACCEPTED_TC, 

84 evt.USER_ACCOUNT_ACTIVATED, 

85 evt.USER_CREATED, 

86 evt.USER_DELETED, 

87 evt.USER_LOGGED_IN, 

88 evt.USER_LOGGED_OUT, 

89 evt.USER_LOGIN_FAILED, 

90 evt.USER_ACCOUNT_LOCKED, 

91 evt.USER_ACCOUNT_UNLOCKED, 

92 evt.USER_PASSWORD_RECOVERED, 

93 evt.USER_PASSWORD_UPDATED, 

94 evt.USER_ROLE_GRANTED, 

95 evt.USER_ROLE_REVOKED, 

96 evt.USER_UPDATED, 

97 evt.WEBHOOK_CREATED, 

98 evt.WEBHOOK_UPDATED, 

99 evt.WEBHOOK_DELETED, 

100 evt.WEBHOOK_FAILED, 

101} 

102 

103 

104def check_all_events_assigned(): 

105 """ 

106 Check all event types are assigned to a visibility category 

107 

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

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

110 be assigned to one of these visibility categories. 

111 """ 

112 assigned = to_initiator | to_participants | to_respondent 

113 

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

115 

116 if ets != assigned: 

117 odds = ets ^ assigned 

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

119 raise ConfigurationError(m)