Passed
Push — master ( 5e306e...e48f16 )
by Jordi
04:40
created

bika.lims.permissions.setup_permissions()   B

Complexity

Conditions 4

Size

Total Lines 258
Code Lines 177

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
eloc 177
dl 0
loc 258
rs 7
c 0
b 0
f 0
cc 4
nop 1

How to fix   Long Method   

Long Method

Small methods make your code easier to understand, in particular if combined with a good name. Besides, if your method is small, finding a good name is usually much easier.

For example, if you find yourself adding comments to a method's body, this is usually a good sign to extract the commented part to a new method, and use the comment as a starting point when coming up with a good name for this new method.

Commonly applied refactorings include:

1
# -*- coding: utf-8 -*-
2
#
3
# This file is part of SENAITE.CORE
4
#
5
# Copyright 2018 by it's authors.
6
# Some rights reserved. See LICENSE.rst, CONTRIBUTORS.rst.
7
8
"""
9
This file has two parts, the first one contains pseudoconstants to get
10
permissions titles in other places.
11
12
The second part is a function to set up permissions for some general objects.
13
14
All the available permissions are defined in permissions.zcml.
15
Each permission has two attributes: a short ID and a long title. The ID
16
will be used for zope3-like permissions such as ZCML configuration
17
files. The long title will be used for zope2-like
18
permissions such as sm.checkPermission.
19
20
In order to avoid typo errors, we will use pseudoconstants instead of
21
permission string values. these constants are defined in ins this file.
22
23
The two files (permissions.py and permissions.zcml) must be kept in sync.
24
25
bika.lims.__init__ imports * from this file, so
26
bika.lims.PermName or bika.lims.permissions.PermName are
27
both valid.
28
"""
29
30
# Add Permissions
31
# ===============
32
# For "Add" permissions, keep the name of the variable as "Add<portal_type>".
33
# When the module gets initialized (bika.lims.__init__), the function initialize
34
# will look through these Add permissions attributes when registering types and
35
# will automatically associate them with their types.
36
AddAnalysis = "senaite.core: Add Analysis"
37
AddAnalysisCategory = "senaite.core: Add AnalysisCategory"
38
AddAnalysisProfile = "senaite.core: Add AnalysisProfile"
39
AddAnalysisRequest = "senaite.core: Add AnalysisRequest"
40
AddAnalysisService = "senaite.core: Add AnalysisService"
41
AddAnalysisSpec = "senaite.core: Add AnalysisSpec"
42
AddARTemplate = "senaite.core: Add ARTemplate"
43
AddAttachment = "senaite.core: Add Attachment"
44
AddAttachmentType = "senaite.core: Add AttachmentType"
45
AddBatch = "senaite.core: Add Batch"
46
AddBatchLabel = "senaite.core: Add BatchLabel"
47
AddCalculation = "senaite.core: Add Calculation"
48
AddClient = "senaite.core: Add Client"
49
AddContainer = "senaite.core: Add Container"
50
AddContainerType = "senaite.core: Add ContainerType"
51
AddDepartment = "senaite.core: Add Department"
52
AddIdentifierType = "senaite.core: Add IdentifierType"
53
AddInstrument = "senaite.core: Add Instrument"
54
AddInstrumentLocation = "senaite.core: Add InstrumentLocation"
55
AddInstrumentType = "senaite.core: Add InstrumentType"
56
AddInvoice = "senaite.core: Add Invoice"
57
AddLabContact = "senaite.core: Add LabContact"
58
AddLabProduct = "senaite.core: Add LabProduct"
59
AddManufacturer = "senaite.core: Add Manufacturer"
60
AddMethod = "senaite.core: Add Method"
61
AddMultifile = "senaite.core: Add Multifile"
62
AddPreservation = "senaite.core: Add Preservation"
63
AddPricelist = "senaite.core: Add Pricelist"
64
AddReferenceDefinition = "senaite.core: Add ReferenceDefinition"
65
AddReflexRule = "senaite.core: Add ReflexRule"
66
AddSampleCondition = "senaite.core: Add SampleCondition"
67
AddSampleMatrix = "senaite.core: Add SampleMatrix"
68
AddSamplePoint = "senaite.core: Add SamplePoint"
69
AddSampleType = "senaite.core: Add SampleType"
70
AddSamplingDeviation = "senaite.core: Add SamplingDeviation"
71
AddSamplingRound = "senaite.core: Add SamplingRound"
72
AddSRTemplate = "senaite.core: Add SRTemplate"
73
AddStorageLocation = "senaite.core: Add StorageLocation"
74
AddSubGroup = "senaite.core: Add SubGroup"
75
AddSupplier = "senaite.core: Add Supplier"
76
AddSupplyOrder = "senaite.core: Add SupplyOrder"
77
AddWorksheetTemplate = "senaite.core: Add WorksheetTemplate"
78
79
# Transition permissions
80
# ======================
81
TransitionDeactivate = "senaite.core: Transition: Deactivate"
82
TransitionActivate = "senaite.core: Transition: Activate"
83
TransitionCancel = "senaite.core: Transition: Cancel"
84
TransitionReinstate = "senaite.core: Transition: Reinstate"
85
TransitionClose = "senaite.core: Transition: Close"
86
TransitionReopen = "senaite.core: Transition: Reopen"
87
88
# Transition permissions (Analysis and alike)
89
TransitionRetract = "senaite.core: Transition: Retract"
90
TransitionVerify = "senaite.core: Transition: Verify"
91
TransitionAssignAnalysis = "senaite.core: Transition: Assign Analysis"
92
TransitionUnassignAnalysis = "senaite.core: Transition: Unassign Analysis"
93
94
# Transition permissions (Analysis Request)
95
TransitionCancelAnalysisRequest = "senaite.core: Transition: Cancel Analysis Request"
96
TransitionReinstateAnalysisRequest = "senaite.core: Transition: Reinstate Analysis Request"
97
TransitionInvalidate = "senaite.core: Transition Invalidate"
98
TransitionPreserveSample = "senaite.core: Transition: Preserve Sample"
99
TransitionPublishResults = "senaite.core: Transition: Publish Results"
100
TransitionReceiveSample = "senaite.core: Transition: Receive Sample"
101
TransitionRejectSample = "senaite.core: Transition: Reject Sample"
102
TransitionSampleSample = "senaite.core: Transition: Sample Sample"
103
TransitionScheduleSampling = "senaite.core: Transition: Schedule Sampling"
104
105
# Transition permissions (Supply Order)
106
TransitionDispatchOrder = "senaite.core: Transition: Dispatch Order"
107
108
# Transition permissions (Sampling Round)
109
TransitionCloseSamplingRound = "senaite.core: Transition: Close Sampling Round"
110
TransitionReopenSamplingRound = "senaite.core: Transition: Reopen Sampling Round"
111
112
# Transition permissions (Worksheet)
113
TransitionRejectWorksheet = "senaite.core: Transition: Reject Worksheet"
114
115
116
# Field Permissions
117
# =================
118
# Field permissions (Analysis Request)
119
FieldEditBatch = "senaite.core: Field: Edit Batch"
120
FieldEditClient = "senaite.core: Field: Edit Client"
121
FieldEditClientOrderNumber = "senaite.core: Field: Edit Client Order Number"
122
FieldEditClientReference = "senaite.core: Field: Edit Client Reference"
123
FieldEditClientSampleID = "senaite.core: Field: Edit Client Sample ID"
124
FieldEditComposite = "senaite.core: Field: Edit Composite"
125
FieldEditContact = "senaite.core: Field: Edit Contact"
126
FieldEditContainer = "senaite.core: Field: Edit Container"
127
FieldEditDatePreserved = "senaite.core: Field: Edit Date Preserved"
128
FieldEditDateReceived = "senaite.core: Field: Edit Date Received"
129
FieldEditDateSampled = "senaite.core: Field: Edit Date Sampled"
130
FieldEditEnvironmentalConditions = "senaite.core: Field: Edit Environmental Conditions"
131
FieldEditInvoiceExclude = "senaite.core: Field: Edit Invoice Exclude"
132
FieldEditMemberDiscount = "senaite.core: Field: Edit Member Discount"
133
FieldEditPreservation = "senaite.core: Field: Edit Preservation"
134
FieldEditPreserver = "senaite.core: Field: Edit Preserver"
135
FieldEditPriority = "senaite.core: Field: Edit Priority"
136
FieldEditProfiles = "senaite.core: Field: Edit Profiles"
137
FieldEditPublicationSpecifications = "senaite.core: Field: Edit Publication Specification"
138
FieldEditRejectionReasons = "senaite.core: Field: Edit Rejection Reasons"
139
FieldEditRemarks = "senaite.core: Field: Edit Remarks"
140
FieldEditResultsInterpretation = "senaite.core: Field: Edit Results Interpretation"
141
FieldEditSampleCondition = "senaite.core: Field: Edit Sample Condition"
142
FieldEditSamplePoint = "senaite.core: Field: Edit Sample Point"
143
FieldEditSampleType = "senaite.core: Field: Edit Sample Type"
144
FieldEditSampler = "senaite.core: Field: Edit Sampler"
145
FieldEditSamplingDate = "senaite.core: Field: Edit Sampling Date"
146
FieldEditSamplingDeviation = "senaite.core: Field: Edit Sampling Deviation"
147
FieldEditSamplingRound = "senaite.core: Field: Edit Sampling Round"
148
FieldEditScheduledSampler = "senaite.core: Field: Edit Scheduled Sampler"
149
FieldEditSpecification = "senaite.core: Field: Edit Specification"
150
FieldEditStorageLocation = "senaite.core: Field: Edit Storage Location"
151
FieldEditTemplate = "senaite.core: Field: Edit Template"
152
153
# Field permissions (Analysis and alike)
154
FieldEditAnalysisHidden = "senaite.core: Field: Edit Analysis Hidden"
155
FieldEditAnalysisResult = "senaite.core: Field: Edit Analysis Result"
156
FieldEditAnalysisRemarks = "senaite.core: Field: Edit Analysis Remarks"
157
158
159
# Behavioral permissions
160
# ======================
161
# TODO Security Review these "behavioral" permissions
162
AccessJSONAPI = "senaite.core: Access JSON API"
163
EditFieldResults = "senaite.core: Edit Field Results"
164
EditResults = "senaite.core: Edit Results"
165
EditWorksheet = "senaite.core: Edit Worksheet"
166
ManageBika = "senaite.core: Manage Bika"
167
ManageAnalysisRequests = "senaite.core: Manage Analysis Requests"
168
ManageARImport = "senaite.core: Manage ARImport"
169
ManageInvoices = "senaite.core: Manage Invoices"
170
ManageLoginDetails = "senaite.core: Manage Login Details"
171
ManageReference = "senaite.core: Manage Reference"
172
ManageWorksheets = "senaite.core: Manage Worksheets"
173
ViewResults = "senaite.core: View Results"
174
175
176
# View/Action permissions
177
# =======================
178
# TODO Security Review these "view/action" permissions
179
ImportInstrumentResults = "senaite.core: Import Instrument Results"
180
ViewRetractedAnalyses = "senaite.core: View Retracted Analyses"
181
ViewLogTab = "senaite.core: View Log Tab"
182