Coverage for postrfp/authorisation/perms.py: 100%
65 statements
« prev ^ index » next coverage.py v7.11.0, created at 2025-10-22 21:34 +0000
« prev ^ index » next coverage.py v7.11.0, created at 2025-10-22 21:34 +0000
1import re
3from postrfp.shared.types import PermString
5ALLOCATE_QUESTIONS = PermString("allocateQuestions")
6ANSWER_QUESTIONS_ALLOCATED_TO_ANYONE = PermString("answerQuestionsAllocatedToAnyone")
7APPROVE_ANSWERS = PermString("approveAnswers")
9ISSUE_ACCEPT = PermString("acceptIssue")
10ISSUE_ADD_ANSWER_COMMENT = PermString("addAnswerComment")
11ISSUE_CREATE = PermString("createIssue")
12ISSUE_DECLINE = PermString("declineIssue")
13ISSUE_DELETE = PermString("deleteIssue")
14ISSUE_MANAGE_ISSUER_ATTACHMENTS = PermString("manageIssuerIssueAttachments")
15ISSUE_MANAGE_RESPONDENT_ATTACHMENTS = PermString("manageRespondentIssueAttachments")
16ISSUE_PUBLISH = PermString("publishIssue")
17ISSUE_RETRACT = PermString("retractIssue")
18ISSUE_SAVE_AGREED_SCORES = PermString("saveAgreedScore")
19ISSUE_SAVE_QUESTION_RESPONSE = PermString("saveQuestionResponse")
20ISSUE_SAVE_SCORES = PermString("saveScore")
21ISSUE_SELF_ISSUE = PermString("addSelfIssue")
22ISSUE_SET_AWARD_STATUS = PermString("setIssueAwardStatus")
23ISSUE_SUBMIT = PermString("submitIssue")
24ISSUE_UPDATE = PermString("updateIssue")
25ISSUE_UPDATE_WORKFLOW = PermString("updateIssueWorkflow")
26ISSUE_VIEW_ANSWERS = PermString("viewAnswers")
27ISSUE_VIEW_AGREED_SCORES = PermString("viewAgreedScore")
28ISSUE_VIEW_SCORES = PermString("viewScore")
29ISSUE_VIEW_WINLOSS = PermString("viewWinloss")
31LIST_AUDIT_EVENTS = PermString("listAuditEvents")
34MANAGE_ORGANISATION = PermString("manageOrganisation")
35MANAGE_PRIVATE_ADDRESS_BOOK = PermString("managePrivateAddressBook")
36MANAGE_ROLES = PermString("manageRoles")
37MANAGE_USERS = PermString("manageUsers")
39PROJECT_ACCESS = PermString("accessProject")
40PROJECT_ADD_NOTE = PermString("addProjectNote")
41PROJECT_ADD_RESPONDENT_NOTE = PermString("addProjectRespondentNote")
42PROJECT_CLOSE = PermString("closeProject")
43PROJECT_CREATE = PermString("createProject")
44PROJECT_CREATE_ON_BEHALF = PermString("createProjectOnBehalf")
45PROJECT_DELETE = PermString("deleteProject")
46PROJECT_EDIT = PermString("editProject")
47PROJECT_EDIT_COSMETIC = PermString("editProjectCosmetic")
48PROJECT_EDIT_WEIGHTING = PermString("questionWeighting")
49PROJECT_EXPORT_COMPLETE = PermString("exportCompleteProject")
50PROJECT_IMPORT_COMPLETE = PermString("importCompleteProject")
51PROJECT_LOCK_QUESTIONNAIRE = PermString("lockQuestionnaire")
52PROJECT_MANAGE_ROLES = PermString("manageProjectRoles")
53PROJECT_PUBLISH = PermString("publishProject")
54PROJECT_REVERT_TO_DRAFT = PermString("revertProjectToDraft")
55PROJECT_SAVE_QUESTIONNAIRE = PermString("saveQuestionnaire")
56PROJECT_VIEW_QUESTIONNAIRE = PermString("viewQuestionnaire")
57PROJECT_VIEW_WEIGHTING = PermString("viewWeighting")
58PROJECT_UNLOCK_ISSUES = PermString("unlockIssues")
59PROJECT_APPROVE = PermString("approveProject")
61QRESPONSE_CHANGE_STATUS = PermString("changeQResponseStatus")
63REF_SPEC_SAVE = PermString("saveRefSpec")
64REF_CONTENT_SAVE = PermString("saveRefContent")
65REF_MANAGE_PERMISSIONS = PermString("manageRefPermissions")
68def _is_perm(key, value):
69 if not isinstance(value, str):
70 return False
71 if key.startswith("_"):
72 return False
74 return True
77ALL_PERMISSIONS: set[PermString] = {v for k, v in locals().items() if _is_perm(k, v)}
80def title_cased(perm: str) -> str:
81 return re.sub(r"([A-Z])", r" \1", perm).title()