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

1import re 

2 

3from postrfp.shared.types import PermString 

4 

5ALLOCATE_QUESTIONS = PermString("allocateQuestions") 

6ANSWER_QUESTIONS_ALLOCATED_TO_ANYONE = PermString("answerQuestionsAllocatedToAnyone") 

7APPROVE_ANSWERS = PermString("approveAnswers") 

8 

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") 

30 

31LIST_AUDIT_EVENTS = PermString("listAuditEvents") 

32 

33 

34MANAGE_ORGANISATION = PermString("manageOrganisation") 

35MANAGE_PRIVATE_ADDRESS_BOOK = PermString("managePrivateAddressBook") 

36MANAGE_ROLES = PermString("manageRoles") 

37MANAGE_USERS = PermString("manageUsers") 

38 

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") 

60 

61QRESPONSE_CHANGE_STATUS = PermString("changeQResponseStatus") 

62 

63REF_SPEC_SAVE = PermString("saveRefSpec") 

64REF_CONTENT_SAVE = PermString("saveRefContent") 

65REF_MANAGE_PERMISSIONS = PermString("manageRefPermissions") 

66 

67 

68def _is_perm(key, value): 

69 if not isinstance(value, str): 

70 return False 

71 if key.startswith("_"): 

72 return False 

73 

74 return True 

75 

76 

77ALL_PERMISSIONS: set[PermString] = {v for k, v in locals().items() if _is_perm(k, v)} 

78 

79 

80def title_cased(perm: str) -> str: 

81 return re.sub(r"([A-Z])", r" \1", perm).title()