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
« 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
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}
104def check_all_events_assigned():
105 """
106 Check all event types are assigned to a visibility category
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
114 ets = {m for m in dir(evt) if not m.startswith("__")}
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)