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
« prev ^ index » next coverage.py v7.0.1, created at 2022-12-31 16:00 +0000
2from rfpy.model.audit import evt_types as evt
3from rfpy.model.exc import ConfigurationError
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}
101def check_all_events_assigned():
102 '''
103 Check all event types are assigned to a visibility category
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
111 ets = {m for m in dir(evt) if not m.startswith('__')}
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)