sapiopycommons 2024.10.24a342__py3-none-any.whl → 2024.10.29a346__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of sapiopycommons might be problematic. Click here for more details.
- sapiopycommons/chem/IndigoMolecules.py +0 -1
- sapiopycommons/chem/Molecules.py +19 -77
- sapiopycommons/customreport/column_builder.py +2 -2
- sapiopycommons/customreport/custom_report_builder.py +9 -4
- sapiopycommons/datatype/data_fields.py +61 -0
- sapiopycommons/datatype/pseudo_data_types.py +440 -0
- sapiopycommons/eln/experiment_handler.py +57 -23
- sapiopycommons/eln/experiment_report_util.py +563 -28
- sapiopycommons/general/aliases.py +66 -12
- sapiopycommons/general/audit_log.py +40 -47
- sapiopycommons/general/time_util.py +6 -40
- sapiopycommons/multimodal/multimodal_data.py +3 -6
- sapiopycommons/processtracking/custom_workflow_handler.py +406 -0
- sapiopycommons/sftpconnect/__init__.py +0 -0
- sapiopycommons/sftpconnect/sftp_builder.py +69 -0
- sapiopycommons/webhook/webhook_context.py +39 -0
- {sapiopycommons-2024.10.24a342.dist-info → sapiopycommons-2024.10.29a346.dist-info}/METADATA +1 -1
- {sapiopycommons-2024.10.24a342.dist-info → sapiopycommons-2024.10.29a346.dist-info}/RECORD +20 -16
- sapiopycommons/flowcyto/flow_cyto.py +0 -77
- sapiopycommons/flowcyto/flowcyto_data.py +0 -75
- {sapiopycommons-2024.10.24a342.dist-info → sapiopycommons-2024.10.29a346.dist-info}/WHEEL +0 -0
- {sapiopycommons-2024.10.24a342.dist-info → sapiopycommons-2024.10.29a346.dist-info}/licenses/LICENSE +0 -0
|
@@ -0,0 +1,440 @@
|
|
|
1
|
+
from sapiopylib.rest.pojo.datatype.FieldDefinition import FieldType
|
|
2
|
+
from sapiopylib.rest.utils.recordmodel.RecordModelWrapper import WrapperField
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
class ActiveTaskPseudoDef:
|
|
6
|
+
DATA_TYPE_NAME: str = "ActiveTask"
|
|
7
|
+
ACTIVE_TASK_ID__FIELD_NAME = WrapperField("ActiveTaskId", FieldType.LONG)
|
|
8
|
+
ACTIVE_WORKFLOW_ID__FIELD_NAME = WrapperField("ActiveWorkflowId", FieldType.LONG)
|
|
9
|
+
DATE_EDITED__FIELD_NAME = WrapperField("DateEdited", FieldType.DATE)
|
|
10
|
+
EDITED_BY__FIELD_NAME = WrapperField("EditedBy", FieldType.STRING)
|
|
11
|
+
STATUS__FIELD_NAME = WrapperField("Status", FieldType.ENUM)
|
|
12
|
+
TASK_USAGE_ID__FIELD_NAME = WrapperField("TaskUsageId", FieldType.LONG)
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
class ActiveWorkflowPseudoDef:
|
|
16
|
+
DATA_TYPE_NAME: str = "ActiveWorkflow"
|
|
17
|
+
ACTIVE_WORKFLOW_ID__FIELD_NAME = WrapperField("ActiveWorkflowId", FieldType.LONG)
|
|
18
|
+
CREATED_BY__FIELD_NAME = WrapperField("CreatedBy", FieldType.STRING)
|
|
19
|
+
DATE_CREATED__FIELD_NAME = WrapperField("DateCreated", FieldType.DATE)
|
|
20
|
+
DATE_EDITED__FIELD_NAME = WrapperField("DateEdited", FieldType.STRING)
|
|
21
|
+
EDITED_BY__FIELD_NAME = WrapperField("EditedBy", FieldType.STRING)
|
|
22
|
+
ESTIMATED_ATTACHMENTS__FIELD_NAME = WrapperField("EstimatedAttachments", FieldType.LONG)
|
|
23
|
+
NAME__FIELD_NAME = WrapperField("Name", FieldType.STRING)
|
|
24
|
+
RELATED_RECORD_ID__FIELD_NAME = WrapperField("RelatedRecordId", FieldType.LONG)
|
|
25
|
+
STATUS__FIELD_NAME = WrapperField("Status", FieldType.ENUM)
|
|
26
|
+
WORKFLOW_ID__FIELD_NAME = WrapperField("WorkflowId", FieldType.LONG)
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
class AuditLogPseudoDef:
|
|
30
|
+
DATA_TYPE_NAME: str = "AuditLog"
|
|
31
|
+
DATA_FIELD_NAME__FIELD_NAME = WrapperField("DataFieldName", FieldType.STRING)
|
|
32
|
+
DATA_TYPE_NAME__FIELD_NAME = WrapperField("DataTypeName", FieldType.STRING)
|
|
33
|
+
DESCRIPTION__FIELD_NAME = WrapperField("Description", FieldType.STRING)
|
|
34
|
+
EVENT_TYPE__FIELD_NAME = WrapperField("EventType", FieldType.ENUM)
|
|
35
|
+
FULL_NAME__FIELD_NAME = WrapperField("FullName", FieldType.STRING)
|
|
36
|
+
NEW_VALUE__FIELD_NAME = WrapperField("NewValue", FieldType.STRING)
|
|
37
|
+
ORIGINAL_VALUE__FIELD_NAME = WrapperField("OriginalValue", FieldType.STRING)
|
|
38
|
+
RECORD_ID__FIELD_NAME = WrapperField("RecordId", FieldType.LONG)
|
|
39
|
+
RECORD_NAME__FIELD_NAME = WrapperField("RecordName", FieldType.STRING)
|
|
40
|
+
TIME_STAMP__FIELD_NAME = WrapperField("TimeStamp", FieldType.DATE)
|
|
41
|
+
USER_COMMENT__FIELD_NAME = WrapperField("UserComment", FieldType.STRING)
|
|
42
|
+
USER_NAME__FIELD_NAME = WrapperField("UserName", FieldType.STRING)
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
class DataFieldDefinitionPseudoDef:
|
|
46
|
+
DATA_TYPE_NAME: str = "DataFieldDefinition"
|
|
47
|
+
APPROVE_EDIT__FIELD_NAME = WrapperField("ApproveEdit", FieldType.BOOLEAN)
|
|
48
|
+
AUTO_CLEAR_FIELD_LIST__FIELD_NAME = WrapperField("AutoClearFieldList", FieldType.STRING)
|
|
49
|
+
AUTO_SORT__FIELD_NAME = WrapperField("AutoSort", FieldType.BOOLEAN)
|
|
50
|
+
COLOR_MAPPING_ID__FIELD_NAME = WrapperField("ColorMappingId", FieldType.LONG)
|
|
51
|
+
DATA_FIELD_NAME__FIELD_NAME = WrapperField("DataFieldName", FieldType.STRING)
|
|
52
|
+
DATA_FIELD_TAG__FIELD_NAME = WrapperField("DataFieldTag", FieldType.STRING)
|
|
53
|
+
DATA_FIELD_TYPE__FIELD_NAME = WrapperField("DataFieldType", FieldType.STRING)
|
|
54
|
+
DATA_TYPE_NAME__FIELD_NAME = WrapperField("DataTypeName", FieldType.STRING)
|
|
55
|
+
DECIMAL_DIGITS__FIELD_NAME = WrapperField("DecimalDigits", FieldType.INTEGER)
|
|
56
|
+
DEFAULT_VALUE__FIELD_NAME = WrapperField("DefaultValue", FieldType.STRING)
|
|
57
|
+
DEPENDENT_FIELDS__FIELD_NAME = WrapperField("Dependent_Fields", FieldType.STRING)
|
|
58
|
+
DESCRIPTION__FIELD_NAME = WrapperField("Description", FieldType.STRING)
|
|
59
|
+
DIRECT_EDIT__FIELD_NAME = WrapperField("DirectEdit", FieldType.BOOLEAN)
|
|
60
|
+
DISPLAY_NAME__FIELD_NAME = WrapperField("DisplayName", FieldType.STRING)
|
|
61
|
+
EDITABLE__FIELD_NAME = WrapperField("Editable", FieldType.BOOLEAN)
|
|
62
|
+
ENUM_VALUES__FIELD_NAME = WrapperField("EnumValues", FieldType.STRING)
|
|
63
|
+
FORM_COL__FIELD_NAME = WrapperField("FormCol", FieldType.SHORT)
|
|
64
|
+
FORM_COL_SPAN__FIELD_NAME = WrapperField("FormColSpan", FieldType.SHORT)
|
|
65
|
+
FORM_NAME__FIELD_NAME = WrapperField("FormName", FieldType.STRING)
|
|
66
|
+
HTML_EDITOR__FIELD_NAME = WrapperField("HtmlEditor", FieldType.BOOLEAN)
|
|
67
|
+
IDENTIFIER__FIELD_NAME = WrapperField("Identifier", FieldType.BOOLEAN)
|
|
68
|
+
INDEX_FOR_SEARCH__FIELD_NAME = WrapperField("IndexForSearch", FieldType.BOOLEAN)
|
|
69
|
+
LINK_OUT__FIELD_NAME = WrapperField("LinkOut", FieldType.BOOLEAN)
|
|
70
|
+
LINK_OUT_URL__FIELD_NAME = WrapperField("LinkOutUrl", FieldType.BOOLEAN)
|
|
71
|
+
MAX_LENGTH__FIELD_NAME = WrapperField("MaxLength", FieldType.INTEGER)
|
|
72
|
+
MAXIMUM_VALUE__FIELD_NAME = WrapperField("MaximumValue", FieldType.DOUBLE)
|
|
73
|
+
MINIMUM_VALUE__FIELD_NAME = WrapperField("MinimumValue", FieldType.DOUBLE)
|
|
74
|
+
MULT_SELECT__FIELD_NAME = WrapperField("MultSelect", FieldType.BOOLEAN)
|
|
75
|
+
NUM_LINES__FIELD_NAME = WrapperField("NumLines", FieldType.INTEGER)
|
|
76
|
+
REQUIRED__FIELD_NAME = WrapperField("Required", FieldType.BOOLEAN)
|
|
77
|
+
SORT_KEY__FIELD_NAME = WrapperField("SortKey", FieldType.BOOLEAN)
|
|
78
|
+
STATIC_DATE__FIELD_NAME = WrapperField("StaticDate", FieldType.BOOLEAN)
|
|
79
|
+
UNIQUE_VALUE__FIELD_NAME = WrapperField("UniqueValue", FieldType.BOOLEAN)
|
|
80
|
+
VISIBLE__FIELD_NAME = WrapperField("Visible", FieldType.BOOLEAN)
|
|
81
|
+
WORKFLOW_ONLY_EDITING__FIELD_NAME = WrapperField("WorkflowOnlyEditing", FieldType.BOOLEAN)
|
|
82
|
+
|
|
83
|
+
|
|
84
|
+
class DataTypeDefinitionPseudoDef:
|
|
85
|
+
DATA_TYPE_NAME: str = "DataTypeDefinition"
|
|
86
|
+
ADDABLE__FIELD_NAME = WrapperField("Addable", FieldType.BOOLEAN)
|
|
87
|
+
ATTACHMENT__FIELD_NAME = WrapperField("Attachment", FieldType.BOOLEAN)
|
|
88
|
+
ATTACHMENT_TYPE__FIELD_NAME = WrapperField("AttachmentType", FieldType.STRING)
|
|
89
|
+
DATA_TYPE_TAG__FIELD_NAME = WrapperField("DATA_TYPE_TAG", FieldType.STRING)
|
|
90
|
+
DATA_TYPE_ID__FIELD_NAME = WrapperField("DataTypeId", FieldType.LONG)
|
|
91
|
+
DATA_TYPE_NAME__FIELD_NAME = WrapperField("DataTypeName", FieldType.STRING)
|
|
92
|
+
DELETABLE__FIELD_NAME = WrapperField("Deletable", FieldType.BOOLEAN)
|
|
93
|
+
DESCRIPTION__FIELD_NAME = WrapperField("Description", FieldType.STRING)
|
|
94
|
+
DISPLAY_NAME__FIELD_NAME = WrapperField("DisplayName", FieldType.STRING)
|
|
95
|
+
EXTENSION_TYPE__FIELD_NAME = WrapperField("ExtensionType", FieldType.BOOLEAN)
|
|
96
|
+
GROUP_ADDABLE__FIELD_NAME = WrapperField("GroupAddable", FieldType.BOOLEAN)
|
|
97
|
+
HIDE_DATA_RECORDS__FIELD_NAME = WrapperField("HideDataRecords", FieldType.BOOLEAN)
|
|
98
|
+
HIGH_VOLUME__FIELD_NAME = WrapperField("HighVolume", FieldType.BOOLEAN)
|
|
99
|
+
IS_HIDE_IN_MOBILE__FIELD_NAME = WrapperField("IS_HIDE_IN_MOBILE", FieldType.BOOLEAN)
|
|
100
|
+
IS_HVDT_ON_SAVE_ENABLED__FIELD_NAME = WrapperField("IS_HVDT_ON_SAVE_ENABLED", FieldType.BOOLEAN)
|
|
101
|
+
IS_PUBLIC_ATTACHMENT__FIELD_NAME = WrapperField("IS_PUBLIC_ATTACHMENT", FieldType.BOOLEAN)
|
|
102
|
+
ICON_COLOR__FIELD_NAME = WrapperField("IconColor", FieldType.STRING)
|
|
103
|
+
ICON_NAME__FIELD_NAME = WrapperField("IconName", FieldType.STRING)
|
|
104
|
+
IMPORTABLE__FIELD_NAME = WrapperField("Importable", FieldType.BOOLEAN)
|
|
105
|
+
IS_ACTIVE__FIELD_NAME = WrapperField("IsActive", FieldType.BOOLEAN)
|
|
106
|
+
IS_HIDDEN__FIELD_NAME = WrapperField("IsHidden", FieldType.BOOLEAN)
|
|
107
|
+
MAX_TABLE_ROW_COUNT__FIELD_NAME = WrapperField("MaxTableRowCount", FieldType.LONG)
|
|
108
|
+
PLURAL_DISPLAY_NAME__FIELD_NAME = WrapperField("PluralDisplayName", FieldType.STRING)
|
|
109
|
+
RECORD_ASSIGNABLE__FIELD_NAME = WrapperField("RecordAssignable", FieldType.BOOLEAN)
|
|
110
|
+
RECORD_IMAGE_ASSIGNABLE__FIELD_NAME = WrapperField("RecordImageAssignable", FieldType.BOOLEAN)
|
|
111
|
+
RECORD_IMAGE_MANUALLY_ADDABLE__FIELD_NAME = WrapperField("RecordImageManuallyAddable", FieldType.BOOLEAN)
|
|
112
|
+
REMOVABLE__FIELD_NAME = WrapperField("Removable", FieldType.BOOLEAN)
|
|
113
|
+
RESTRICTED__FIELD_NAME = WrapperField("Restricted", FieldType.BOOLEAN)
|
|
114
|
+
SHOW_ON_HOME_SCREEN__FIELD_NAME = WrapperField("ShowOnHomeScreen", FieldType.BOOLEAN)
|
|
115
|
+
SHOW_SUB_TABLES__FIELD_NAME = WrapperField("ShowSubTables", FieldType.BOOLEAN)
|
|
116
|
+
SHOW_TABS__FIELD_NAME = WrapperField("ShowTabs", FieldType.BOOLEAN)
|
|
117
|
+
SINGLE_PARENT__FIELD_NAME = WrapperField("SingleParent", FieldType.BOOLEAN)
|
|
118
|
+
UNDER_CONTAINER__FIELD_NAME = WrapperField("UnderContainer", FieldType.BOOLEAN)
|
|
119
|
+
|
|
120
|
+
|
|
121
|
+
class EnbDataTypeDefinitionPseudoDef:
|
|
122
|
+
DATA_TYPE_NAME: str = "EnbDataTypeDefinition"
|
|
123
|
+
DATA_TYPE_ID__FIELD_NAME = WrapperField("DataTypeId", FieldType.LONG)
|
|
124
|
+
DATA_TYPE_NAME__FIELD_NAME = WrapperField("DataTypeName", FieldType.STRING)
|
|
125
|
+
DESCRIPTION__FIELD_NAME = WrapperField("Description", FieldType.STRING)
|
|
126
|
+
DISPLAY_NAME__FIELD_NAME = WrapperField("DisplayName", FieldType.STRING)
|
|
127
|
+
ENB_DATA_TYPE_NAME__FIELD_NAME = WrapperField("EnbDataTypeName", FieldType.STRING)
|
|
128
|
+
ICON_COLOR__FIELD_NAME = WrapperField("IconColor", FieldType.STRING)
|
|
129
|
+
ICON_NAME__FIELD_NAME = WrapperField("IconName", FieldType.STRING)
|
|
130
|
+
NOTEBOOK_EXPERIMENT_ID__FIELD_NAME = WrapperField("Notebook_Experiment_ID", FieldType.LONG)
|
|
131
|
+
PLURAL_DISPLAY_NAME__FIELD_NAME = WrapperField("PluralDisplayName", FieldType.STRING)
|
|
132
|
+
|
|
133
|
+
|
|
134
|
+
class EnbEntryPseudoDef:
|
|
135
|
+
DATA_TYPE_NAME: str = "EnbEntry"
|
|
136
|
+
APPROVAL_DUE_DATE__FIELD_NAME = WrapperField("ApprovalDueDate", FieldType.DATE)
|
|
137
|
+
COLUMN_ORDER__FIELD_NAME = WrapperField("ColumnOrder", FieldType.INTEGER)
|
|
138
|
+
COLUMN_SPAN__FIELD_NAME = WrapperField("ColumnSpan", FieldType.INTEGER)
|
|
139
|
+
CREATED_BY__FIELD_NAME = WrapperField("CreatedBy", FieldType.STRING)
|
|
140
|
+
DATA_TYPE_NAME__FIELD_NAME = WrapperField("DataTypeName", FieldType.STRING)
|
|
141
|
+
DATE_CREATED__FIELD_NAME = WrapperField("DateCreated", FieldType.DATE)
|
|
142
|
+
DEPENDENT_ENTRY_ID_LIST__FIELD_NAME = WrapperField("DependentEntryIdList", FieldType.STRING)
|
|
143
|
+
ENTRY_DESCRIPTION__FIELD_NAME = WrapperField("EntryDescription", FieldType.STRING)
|
|
144
|
+
ENTRY_HEIGHT__FIELD_NAME = WrapperField("EntryHeight", FieldType.INTEGER)
|
|
145
|
+
ENTRY_ID__FIELD_NAME = WrapperField("EntryId", FieldType.LONG)
|
|
146
|
+
ENTRY_NAME__FIELD_NAME = WrapperField("EntryName", FieldType.STRING)
|
|
147
|
+
ENTRY_ORDER__FIELD_NAME = WrapperField("EntryOrder", FieldType.INTEGER)
|
|
148
|
+
ENTRY_REQUIRES_E_SIGN__FIELD_NAME = WrapperField("EntryRequiresESign", FieldType.BOOLEAN)
|
|
149
|
+
ENTRY_SINGLETON_ID__FIELD_NAME = WrapperField("EntrySingletonId", FieldType.STRING)
|
|
150
|
+
ENTRY_STATUS__FIELD_NAME = WrapperField("EntryStatus", FieldType.STRING)
|
|
151
|
+
ENTRY_TYPE__FIELD_NAME = WrapperField("EntryType", FieldType.STRING)
|
|
152
|
+
EXPERIMENT_ID__FIELD_NAME = WrapperField("ExperimentId", FieldType.LONG)
|
|
153
|
+
HAS_COMMENTS__FIELD_NAME = WrapperField("HasComments", FieldType.BOOLEAN)
|
|
154
|
+
IS_CREATED_FROM_TEMPLATE__FIELD_NAME = WrapperField("IsCreatedFromTemplate", FieldType.BOOLEAN)
|
|
155
|
+
IS_REQUIRED_ENTRY__FIELD_NAME = WrapperField("IsRequiredEntry", FieldType.BOOLEAN)
|
|
156
|
+
IS_SHOWN_IN_TEMPLATE__FIELD_NAME = WrapperField("IsShownInTemplate", FieldType.BOOLEAN)
|
|
157
|
+
LAST_MODIFIED_BY__FIELD_NAME = WrapperField("LastModifiedBy", FieldType.STRING)
|
|
158
|
+
LAST_MODIFIED_DATE__FIELD_NAME = WrapperField("LastModifiedDate", FieldType.DATE)
|
|
159
|
+
RELATED_ENTRY_ID_LIST__FIELD_NAME = WrapperField("RelatedEntryIdList", FieldType.STRING)
|
|
160
|
+
REQUIRES_GRABBER_PLUGIN__FIELD_NAME = WrapperField("RequriesGrabberPlugin", FieldType.BOOLEAN)
|
|
161
|
+
SOURCE_ENTRY_ID__FIELD_NAME = WrapperField("SourceEntryId", FieldType.LONG)
|
|
162
|
+
SUBMITTED_BY__FIELD_NAME = WrapperField("SubmittedBy", FieldType.STRING)
|
|
163
|
+
SUBMITTED_DATE__FIELD_NAME = WrapperField("SubmittedDate", FieldType.DATE)
|
|
164
|
+
TAB_ID__FIELD_NAME = WrapperField("TabId", FieldType.LONG)
|
|
165
|
+
TEMPLATE_ITEM_FULFILLED_TIME_STAMP__FIELD_NAME = WrapperField("TemplateItemFulfilledTimeStamp", FieldType.LONG)
|
|
166
|
+
|
|
167
|
+
|
|
168
|
+
class EnbEntryOptionsPseudoDef:
|
|
169
|
+
DATA_TYPE_NAME: str = "EnbEntryOptions"
|
|
170
|
+
ENTRY_ID__FIELD_NAME = WrapperField("EntryId", FieldType.LONG)
|
|
171
|
+
ENTRY_OPTION_VALUE__FIELD_NAME = WrapperField("EntryOptionValue", FieldType.STRING)
|
|
172
|
+
ENTRY_OPTION_KEY__FIELD_NAME = WrapperField("EntryOptionkey", FieldType.STRING)
|
|
173
|
+
|
|
174
|
+
|
|
175
|
+
class ExperimentEntryRecordPseudoDef:
|
|
176
|
+
DATA_TYPE_NAME: str = "ExperimentEntryRecord"
|
|
177
|
+
ENTRY_ID__FIELD_NAME = WrapperField("EntryId", FieldType.LONG)
|
|
178
|
+
RECORD_ID__FIELD_NAME = WrapperField("RecordId", FieldType.LONG)
|
|
179
|
+
|
|
180
|
+
|
|
181
|
+
class LimsUserPseudoDef:
|
|
182
|
+
DATA_TYPE_NAME: str = "LimsUser"
|
|
183
|
+
API_USER__FIELD_NAME = WrapperField("ApiUser", FieldType.BOOLEAN)
|
|
184
|
+
EMAIL_ADDRESS__FIELD_NAME = WrapperField("EmailAddress", FieldType.STRING)
|
|
185
|
+
FIRST_NAME__FIELD_NAME = WrapperField("FirstName", FieldType.STRING)
|
|
186
|
+
LAST_NAME__FIELD_NAME = WrapperField("LastName", FieldType.STRING)
|
|
187
|
+
MIDDLE_NAME__FIELD_NAME = WrapperField("MiddleName", FieldType.STRING)
|
|
188
|
+
PWD_EXPIRE_DATE__FIELD_NAME = WrapperField("PwdExpireDate", FieldType.DATE)
|
|
189
|
+
PWD_EXPIRE_INTERVAL__FIELD_NAME = WrapperField("PwdExpireInterval", FieldType.INTEGER)
|
|
190
|
+
USER_NAME__FIELD_NAME = WrapperField("UserName", FieldType.STRING)
|
|
191
|
+
|
|
192
|
+
|
|
193
|
+
class NotebookExperimentPseudoDef:
|
|
194
|
+
DATA_TYPE_NAME: str = "NotebookExperiment"
|
|
195
|
+
ACCESS_LEVEL__FIELD_NAME = WrapperField("AccessLevel", FieldType.STRING)
|
|
196
|
+
APPROVAL_DUE_DATE__FIELD_NAME = WrapperField("ApprovalDueDate", FieldType.DATE)
|
|
197
|
+
CREATED_BY__FIELD_NAME = WrapperField("CreatedBy", FieldType.STRING)
|
|
198
|
+
DATE_CREATED__FIELD_NAME = WrapperField("DateCreated", FieldType.DATE)
|
|
199
|
+
DESCRIPTION__FIELD_NAME = WrapperField("Description", FieldType.STRING)
|
|
200
|
+
EXPERIMENT_ID__FIELD_NAME = WrapperField("ExperimentId", FieldType.LONG)
|
|
201
|
+
EXPERIMENT_NAME__FIELD_NAME = WrapperField("ExperimentName", FieldType.STRING)
|
|
202
|
+
EXPERIMENT_OWNER__FIELD_NAME = WrapperField("ExperimentOwner", FieldType.STRING)
|
|
203
|
+
EXPERIMENT_RECORD_ID__FIELD_NAME = WrapperField("ExperimentRecordId", FieldType.LONG)
|
|
204
|
+
EXPERIMENT_TYPE_NAME__FIELD_NAME = WrapperField("ExperimentTypeName", FieldType.STRING)
|
|
205
|
+
IS_ACTIVE__FIELD_NAME = WrapperField("IsActive", FieldType.BOOLEAN)
|
|
206
|
+
IS_MODIFIABLE__FIELD_NAME = WrapperField("IsModifiable", FieldType.BOOLEAN)
|
|
207
|
+
IS_TEMPLATE__FIELD_NAME = WrapperField("IsTemplate", FieldType.BOOLEAN)
|
|
208
|
+
IS_PROTOCOL_TEMPLATE__FIELD_NAME = WrapperField("Is_Protocol_Template", FieldType.BOOLEAN)
|
|
209
|
+
LAST_MODIFIED_BY__FIELD_NAME = WrapperField("LastModifiedBy", FieldType.STRING)
|
|
210
|
+
LAST_MODIFIED_DATE__FIELD_NAME = WrapperField("LastModifiedDate", FieldType.DATE)
|
|
211
|
+
SOURCE_TEMPLATE_ID__FIELD_NAME = WrapperField("SourceTemplateId", FieldType.LONG)
|
|
212
|
+
STATUS__FIELD_NAME = WrapperField("Status", FieldType.STRING)
|
|
213
|
+
|
|
214
|
+
|
|
215
|
+
class NotebookExperimentOptionPseudoDef:
|
|
216
|
+
DATA_TYPE_NAME: str = "NotebookExperimentOption"
|
|
217
|
+
EXPERIMENT_ID__FIELD_NAME = WrapperField("ExperimentId", FieldType.LONG)
|
|
218
|
+
OPTION_KEY__FIELD_NAME = WrapperField("OptionKey", FieldType.STRING)
|
|
219
|
+
OPTION_VALUE__FIELD_NAME = WrapperField("OptionValue", FieldType.STRING)
|
|
220
|
+
|
|
221
|
+
|
|
222
|
+
class SystemLogPseudoDef:
|
|
223
|
+
DATA_TYPE_NAME: str = "SystemLog"
|
|
224
|
+
DATA_FIELD_NAME__FIELD_NAME = WrapperField("DataFieldName", FieldType.STRING)
|
|
225
|
+
DATA_TYPE_NAME__FIELD_NAME = WrapperField("DataTypeName", FieldType.STRING)
|
|
226
|
+
DESCRIPTION__FIELD_NAME = WrapperField("Description", FieldType.STRING)
|
|
227
|
+
EVENT_ID__FIELD_NAME = WrapperField("EventId", FieldType.LONG)
|
|
228
|
+
EVENT_TYPE__FIELD_NAME = WrapperField("EventType", FieldType.STRING)
|
|
229
|
+
FULL_NAME__FIELD_NAME = WrapperField("FullName", FieldType.STRING)
|
|
230
|
+
NEW_VALUE__FIELD_NAME = WrapperField("NewValue", FieldType.STRING)
|
|
231
|
+
ORIGINAL_VALUE__FIELD_NAME = WrapperField("OriginalValue", FieldType.STRING)
|
|
232
|
+
RECORD_ID__FIELD_NAME = WrapperField("RecordId", FieldType.LONG)
|
|
233
|
+
RECORD_NAME__FIELD_NAME = WrapperField("RecordName", FieldType.STRING)
|
|
234
|
+
TIMESTAMP__FIELD_NAME = WrapperField("Timestamp", FieldType.DATE)
|
|
235
|
+
USER_COMMENT__FIELD_NAME = WrapperField("UserComment", FieldType.STRING)
|
|
236
|
+
USERNAME__FIELD_NAME = WrapperField("Username", FieldType.STRING)
|
|
237
|
+
|
|
238
|
+
|
|
239
|
+
class SystemObjectChangeLogPseudoDef:
|
|
240
|
+
DATA_TYPE_NAME: str = "System_Object_Change_Log"
|
|
241
|
+
ALT_ID__FIELD_NAME = WrapperField("Alt_Id", FieldType.STRING)
|
|
242
|
+
ATTRIBUTE_NAME__FIELD_NAME = WrapperField("Attribute_Name", FieldType.STRING)
|
|
243
|
+
CHANGE_TYPE__FIELD_NAME = WrapperField("Change_Type", FieldType.STRING)
|
|
244
|
+
DATA_FIELD_NAME__FIELD_NAME = WrapperField("Data_Field_Name", FieldType.STRING)
|
|
245
|
+
DATA_TYPE_NAME__FIELD_NAME = WrapperField("Data_Type_Name", FieldType.STRING)
|
|
246
|
+
EVENT_ID__FIELD_NAME = WrapperField("Event_Id", FieldType.STRING)
|
|
247
|
+
NEW_VALUE__FIELD_NAME = WrapperField("New_Value", FieldType.STRING)
|
|
248
|
+
OBJECT_ID__FIELD_NAME = WrapperField("Object_Id", FieldType.STRING)
|
|
249
|
+
OBJECT_TYPE__FIELD_NAME = WrapperField("Object_Type", FieldType.STRING)
|
|
250
|
+
OLD_VALUE__FIELD_NAME = WrapperField("Old_Value", FieldType.STRING)
|
|
251
|
+
TIMESTAMP__FIELD_NAME = WrapperField("Timestamp", FieldType.DATE)
|
|
252
|
+
USERNAME__FIELD_NAME = WrapperField("Username", FieldType.STRING)
|
|
253
|
+
|
|
254
|
+
|
|
255
|
+
class TaskPseudoDef:
|
|
256
|
+
DATA_TYPE_NAME: str = "Task"
|
|
257
|
+
ATTACHMENT_REQUIRED__FIELD_NAME = WrapperField("AttachmentRequired", FieldType.BOOLEAN)
|
|
258
|
+
CREATED_BY__FIELD_NAME = WrapperField("CreatedBy", FieldType.STRING)
|
|
259
|
+
CUSTOM_ACTION__FIELD_NAME = WrapperField("CustomAction", FieldType.STRING)
|
|
260
|
+
DATA_TYPE_NAME_LIST__FIELD_NAME = WrapperField("DataTypeNameList", FieldType.STRING)
|
|
261
|
+
DATE_CREATED__FIELD_NAME = WrapperField("DateCreated", FieldType.DATE)
|
|
262
|
+
DATE_EDITED__FIELD_NAME = WrapperField("DateEdited", FieldType.DATE)
|
|
263
|
+
DISPLAY_TYPE__FIELD_NAME = WrapperField("DisplayType", FieldType.ENUM)
|
|
264
|
+
EDITED_BY__FIELD_NAME = WrapperField("EditedBy", FieldType.STRING)
|
|
265
|
+
INPUT_DATA_TYPE_NAME__FIELD_NAME = WrapperField("InputDataTypeName", FieldType.STRING)
|
|
266
|
+
IS_TEMPLATE__FIELD_NAME = WrapperField("IsTemplate", FieldType.BOOLEAN)
|
|
267
|
+
LONG_DESC__FIELD_NAME = WrapperField("LongDesc", FieldType.STRING)
|
|
268
|
+
MENU_TASK_ID__FIELD_NAME = WrapperField("MenuTaskId", FieldType.ENUM)
|
|
269
|
+
NAME__FIELD_NAME = WrapperField("Name", FieldType.STRING)
|
|
270
|
+
SHORT_DESC__FIELD_NAME = WrapperField("ShortDesc", FieldType.STRING)
|
|
271
|
+
TASK_ID__FIELD_NAME = WrapperField("TaskId", FieldType.LONG)
|
|
272
|
+
TASK_VERSION__FIELD_NAME = WrapperField("TaskVersion", FieldType.LONG)
|
|
273
|
+
TEMPLATE_TASK_ID__FIELD_NAME = WrapperField("TemplateTaskId", FieldType.LONG)
|
|
274
|
+
TYPE__FIELD_NAME = WrapperField("Type", FieldType.ENUM)
|
|
275
|
+
|
|
276
|
+
|
|
277
|
+
class TaskAttachmentPseudoDef:
|
|
278
|
+
DATA_TYPE_NAME: str = "TaskAttachment"
|
|
279
|
+
ACTIVE_TASK_ID__FIELD_NAME = WrapperField("ActiveTaskId", FieldType.LONG)
|
|
280
|
+
RECORD_ID__FIELD_NAME = WrapperField("RecordId", FieldType.LONG)
|
|
281
|
+
|
|
282
|
+
|
|
283
|
+
class TaskOptionPseudoDef:
|
|
284
|
+
DATA_TYPE_NAME: str = "TaskOption"
|
|
285
|
+
OPTION_KEY__FIELD_NAME = WrapperField("OptionKey", FieldType.STRING)
|
|
286
|
+
OPTION_VALUE__FIELD_NAME = WrapperField("OptionValue", FieldType.STRING)
|
|
287
|
+
TASK_ID__FIELD_NAME = WrapperField("TaskId", FieldType.LONG)
|
|
288
|
+
|
|
289
|
+
|
|
290
|
+
class TaskUsagePseudoDef:
|
|
291
|
+
DATA_TYPE_NAME: str = "TaskUsage"
|
|
292
|
+
FORCE_ATTACH__FIELD_NAME = WrapperField("ForceAttach", FieldType.BOOLEAN)
|
|
293
|
+
IS_TEMPLATE__FIELD_NAME = WrapperField("IsTemplate", FieldType.BOOLEAN)
|
|
294
|
+
TASK_ID__FIELD_NAME = WrapperField("TaskId", FieldType.LONG)
|
|
295
|
+
TASK_ORDER__FIELD_NAME = WrapperField("TaskOrder", FieldType.INTEGER)
|
|
296
|
+
TASK_USAGE_ID__FIELD_NAME = WrapperField("TaskUsageId", FieldType.LONG)
|
|
297
|
+
WORKFLOW_ID__FIELD_NAME = WrapperField("WorkflowId", FieldType.LONG)
|
|
298
|
+
|
|
299
|
+
|
|
300
|
+
class VeloxWebhookPseudoDef:
|
|
301
|
+
DATA_TYPE_NAME: str = "VELOXWEBHOOK"
|
|
302
|
+
CUSTOM_PLUGIN_POINT__FIELD_NAME = WrapperField("CUSTOM_PLUGIN_POINT", FieldType.STRING)
|
|
303
|
+
DATA_TYPE_NAME_SET__FIELD_NAME = WrapperField("DATA_TYPE_NAME_SET", FieldType.STRING)
|
|
304
|
+
DESCRIPTION__FIELD_NAME = WrapperField("DESCRIPTION", FieldType.STRING)
|
|
305
|
+
ENB_ENTRY_TYPE__FIELD_NAME = WrapperField("ENB_ENTRY_TYPE", FieldType.STRING)
|
|
306
|
+
EXPERIMENT_ENTRY_NAME__FIELD_NAME = WrapperField("EXPERIMENT_ENTRY_NAME", FieldType.STRING)
|
|
307
|
+
GUID__FIELD_NAME = WrapperField("GUID", FieldType.STRING)
|
|
308
|
+
ICON_COLOR__FIELD_NAME = WrapperField("ICON_COLOR", FieldType.STRING)
|
|
309
|
+
ICON_GUID__FIELD_NAME = WrapperField("ICON_GUID", FieldType.STRING)
|
|
310
|
+
IS_RETRY_ON_FAILURE__FIELD_NAME = WrapperField("IS_RETRY_ON_FAILURE", FieldType.BOOLEAN)
|
|
311
|
+
IS_TRANSACTIONAL__FIELD_NAME = WrapperField("IS_TRANSACTIONAL", FieldType.BOOLEAN)
|
|
312
|
+
LINE_1_TEXT__FIELD_NAME = WrapperField("LINE_1_TEXT", FieldType.STRING)
|
|
313
|
+
LINE_2_TEXT__FIELD_NAME = WrapperField("LINE_2_TEXT", FieldType.STRING)
|
|
314
|
+
PLUGIN_ORDER__FIELD_NAME = WrapperField("PLUGIN_ORDER", FieldType.INTEGER)
|
|
315
|
+
PLUGIN_POINT__FIELD_NAME = WrapperField("PLUGIN_POINT", FieldType.STRING)
|
|
316
|
+
SECTION_NAME_PATH__FIELD_NAME = WrapperField("SECTION_NAME_PATH", FieldType.STRING)
|
|
317
|
+
TEMPLATE_NAME__FIELD_NAME = WrapperField("TEMPLATE_NAME", FieldType.STRING)
|
|
318
|
+
WEBHOOK_URL__FIELD_NAME = WrapperField("WEBHOOK_URL", FieldType.STRING)
|
|
319
|
+
|
|
320
|
+
|
|
321
|
+
class VeloxWebhookExecutionPseudoDef:
|
|
322
|
+
DATA_TYPE_NAME: str = "VELOXWEBHOOK_EXECUTION"
|
|
323
|
+
EXECUTION_TIMESTAMP__FIELD_NAME = WrapperField("EXECUTION_TIMESTAMP", FieldType.DATE)
|
|
324
|
+
EXECUTION_USERNAME__FIELD_NAME = WrapperField("EXECUTION_USERNAME", FieldType.STRING)
|
|
325
|
+
GUID__FIELD_NAME = WrapperField("GUID", FieldType.STRING)
|
|
326
|
+
LAST_ATTEMPT_NUMBER__FIELD_NAME = WrapperField("LAST_ATTEMPT_NUMBER", FieldType.INTEGER)
|
|
327
|
+
LAST_ATTEMPT_RESULT__FIELD_NAME = WrapperField("LAST_ATTEMPT_RESULT", FieldType.STRING)
|
|
328
|
+
REQUEST_BODY__FIELD_NAME = WrapperField("REQUEST_BODY", FieldType.STRING)
|
|
329
|
+
WEBHOOK_GUID__FIELD_NAME = WrapperField("WEBHOOK_GUID", FieldType.STRING)
|
|
330
|
+
WEBHOOK_URL__FIELD_NAME = WrapperField("WEBHOOK_URL", FieldType.STRING)
|
|
331
|
+
|
|
332
|
+
|
|
333
|
+
class VeloxWebhookExecutionAttemptPseudoDef:
|
|
334
|
+
DATA_TYPE_NAME: str = "VELOXWEBHOOK_EXECUTION_ATTEMPT"
|
|
335
|
+
ATTEMPT_DURATION__FIELD_NAME = WrapperField("ATTEMPT_DURATION", FieldType.INTEGER)
|
|
336
|
+
ATTEMPT_NUMBER__FIELD_NAME = WrapperField("ATTEMPT_NUMBER", FieldType.INTEGER)
|
|
337
|
+
ATTEMPT_RESULT__FIELD_NAME = WrapperField("ATTEMPT_RESULT", FieldType.STRING)
|
|
338
|
+
ATTEMPT_TIMESTAMP__FIELD_NAME = WrapperField("ATTEMPT_TIMESTAMP", FieldType.DATE)
|
|
339
|
+
EXECUTION_GUID__FIELD_NAME = WrapperField("EXECUTION_GUID", FieldType.STRING)
|
|
340
|
+
GUID__FIELD_NAME = WrapperField("GUID", FieldType.STRING)
|
|
341
|
+
RESPONSE_BODY__FIELD_NAME = WrapperField("RESPONSE_BODY", FieldType.STRING)
|
|
342
|
+
RESPONSE_CODE__FIELD_NAME = WrapperField("RESPONSE_CODE", FieldType.INTEGER)
|
|
343
|
+
WEBHOOK_GUID__FIELD_NAME = WrapperField("WEBHOOK_GUID", FieldType.STRING)
|
|
344
|
+
WEBHOOK_URL__FIELD_NAME = WrapperField("WEBHOOK_URL", FieldType.STRING)
|
|
345
|
+
|
|
346
|
+
|
|
347
|
+
class VeloxWebhookExecutionLogPseudoDef:
|
|
348
|
+
DATA_TYPE_NAME: str = "VELOXWEBHOOK_EXECUTION_LOG"
|
|
349
|
+
ATTEMPT_GUID__FIELD_NAME = WrapperField("ATTEMPT_GUID", FieldType.STRING)
|
|
350
|
+
LOG_LEVEL__FIELD_NAME = WrapperField("LOG_LEVEL", FieldType.STRING)
|
|
351
|
+
LOG_LINE_NUM__FIELD_NAME = WrapperField("LOG_LINE_NUM", FieldType.INTEGER)
|
|
352
|
+
LOG_MESSAGE__FIELD_NAME = WrapperField("LOG_MESSAGE", FieldType.STRING)
|
|
353
|
+
LOG_TIMESTAMP__FIELD_NAME = WrapperField("LOG_TIMESTAMP", FieldType.DATE)
|
|
354
|
+
|
|
355
|
+
|
|
356
|
+
class VeloxRuleCostPseudoDef:
|
|
357
|
+
DATA_TYPE_NAME: str = "VELOX_RULE_COST"
|
|
358
|
+
ACTION_COST__FIELD_NAME = WrapperField("ACTION_COST", FieldType.LONG)
|
|
359
|
+
ACTION_COUNT__FIELD_NAME = WrapperField("ACTION_COUNT", FieldType.LONG)
|
|
360
|
+
ANCESTOR_DESCENDANT_COUNT__FIELD_NAME = WrapperField("ANCESTOR_DESCENDANT_COUNT", FieldType.LONG)
|
|
361
|
+
PARENT_CHILD_COUNT__FIELD_NAME = WrapperField("PARENT_CHILD_COUNT", FieldType.LONG)
|
|
362
|
+
PROCESSING_TIME__FIELD_NAME = WrapperField("PROCESSING_TIME", FieldType.LONG)
|
|
363
|
+
RULE_GUID__FIELD_NAME = WrapperField("RULE_GUID", FieldType.STRING)
|
|
364
|
+
SOURCE_RECORD_COUNT__FIELD_NAME = WrapperField("SOURCE_RECORD_COUNT", FieldType.LONG)
|
|
365
|
+
TIMESTAMP__FIELD_NAME = WrapperField("TIMESTAMP", FieldType.DATE)
|
|
366
|
+
TOTAL_COST__FIELD_NAME = WrapperField("TOTAL_COST", FieldType.LONG)
|
|
367
|
+
TRANSACTION_GUID__FIELD_NAME = WrapperField("TRANSACTION_GUID", FieldType.STRING)
|
|
368
|
+
USERNAME__FIELD_NAME = WrapperField("USERNAME", FieldType.STRING)
|
|
369
|
+
|
|
370
|
+
|
|
371
|
+
class VeloxConversationPseudoDef:
|
|
372
|
+
DATA_TYPE_NAME: str = "VeloxConversation"
|
|
373
|
+
CONVERSATION_DESCRIPTION__FIELD_NAME = WrapperField("ConversationDescription", FieldType.STRING)
|
|
374
|
+
CONVERSATION_GUID__FIELD_NAME = WrapperField("ConversationGuid", FieldType.STRING)
|
|
375
|
+
CONVERSATION_NAME__FIELD_NAME = WrapperField("ConversationName", FieldType.STRING)
|
|
376
|
+
CREATED_BY__FIELD_NAME = WrapperField("CreatedBy", FieldType.STRING)
|
|
377
|
+
DATE_CREATED__FIELD_NAME = WrapperField("DateCreated", FieldType.DATE)
|
|
378
|
+
SERVER_PLUGIN_PATH__FIELD_NAME = WrapperField("Server_Plugin_Path", FieldType.STRING)
|
|
379
|
+
|
|
380
|
+
|
|
381
|
+
class VeloxConversationMessagePseudoDef:
|
|
382
|
+
DATA_TYPE_NAME: str = "VeloxConversationMessage"
|
|
383
|
+
CONVERSATION_GUID__FIELD_NAME = WrapperField("ConversationGuid", FieldType.STRING)
|
|
384
|
+
MESSAGE__FIELD_NAME = WrapperField("Message", FieldType.STRING)
|
|
385
|
+
MESSAGE_GUID__FIELD_NAME = WrapperField("MessageGuid", FieldType.STRING)
|
|
386
|
+
MESSAGE_SENDER__FIELD_NAME = WrapperField("MessageSender", FieldType.STRING)
|
|
387
|
+
MESSAGE_TIMESTAMP__FIELD_NAME = WrapperField("MessageTimestamp", FieldType.DATE)
|
|
388
|
+
|
|
389
|
+
|
|
390
|
+
class VeloxScriptPseudoDef:
|
|
391
|
+
DATA_TYPE_NAME: str = "VeloxScript"
|
|
392
|
+
CODE__FIELD_NAME = WrapperField("Code", FieldType.STRING)
|
|
393
|
+
CREATED_BY__FIELD_NAME = WrapperField("CreatedBy", FieldType.STRING)
|
|
394
|
+
DATE_CREATED__FIELD_NAME = WrapperField("DateCreated", FieldType.LONG)
|
|
395
|
+
LAST_MODIFIED_BY__FIELD_NAME = WrapperField("LastModifiedBy", FieldType.STRING)
|
|
396
|
+
LAST_MODIFIED_DATE__FIELD_NAME = WrapperField("LastModifiedDate", FieldType.LONG)
|
|
397
|
+
PATH__FIELD_NAME = WrapperField("Path", FieldType.STRING)
|
|
398
|
+
PLUGIN_DESCRIPTION__FIELD_NAME = WrapperField("PluginDescription", FieldType.STRING)
|
|
399
|
+
PLUGIN_LINE1_TEXT__FIELD_NAME = WrapperField("PluginLine1Text", FieldType.STRING)
|
|
400
|
+
PLUGIN_LINE2_TEXT__FIELD_NAME = WrapperField("PluginLine2Text", FieldType.STRING)
|
|
401
|
+
PLUGIN_ORDER__FIELD_NAME = WrapperField("PluginOrder", FieldType.INTEGER)
|
|
402
|
+
PLUGIN_POINT__FIELD_NAME = WrapperField("PluginPoint", FieldType.STRING)
|
|
403
|
+
PROJECT_GUID__FIELD_NAME = WrapperField("ProjectGuid", FieldType.STRING)
|
|
404
|
+
SCRIPT_GUID__FIELD_NAME = WrapperField("ScriptGuid", FieldType.STRING)
|
|
405
|
+
|
|
406
|
+
|
|
407
|
+
class VeloxScriptProjectPseudoDef:
|
|
408
|
+
DATA_TYPE_NAME: str = "VeloxScriptProject"
|
|
409
|
+
CLASS_PATH__FIELD_NAME = WrapperField("ClassPath", FieldType.STRING)
|
|
410
|
+
CREATED_BY__FIELD_NAME = WrapperField("CreatedBy", FieldType.STRING)
|
|
411
|
+
DATE_CREATED__FIELD_NAME = WrapperField("DateCreated", FieldType.LONG)
|
|
412
|
+
DEPLOYMENT_OUT_OF_DATE__FIELD_NAME = WrapperField("DeploymentOutOfDate", FieldType.BOOLEAN)
|
|
413
|
+
DESCRIPTION__FIELD_NAME = WrapperField("Description", FieldType.STRING)
|
|
414
|
+
PROJECT_GUID__FIELD_NAME = WrapperField("ProjectGuid", FieldType.STRING)
|
|
415
|
+
PROJECT_NAME__FIELD_NAME = WrapperField("ProjectName", FieldType.STRING)
|
|
416
|
+
SCRIPT_LANGUAGE__FIELD_NAME = WrapperField("ScriptLanguage", FieldType.STRING)
|
|
417
|
+
|
|
418
|
+
|
|
419
|
+
class WorkflowPseudoDef:
|
|
420
|
+
DATA_TYPE_NAME: str = "Workflow"
|
|
421
|
+
ALL_ACCESS__FIELD_NAME = WrapperField("AllAccess", FieldType.BOOLEAN)
|
|
422
|
+
CATEGORY__FIELD_NAME = WrapperField("Category", FieldType.STRING)
|
|
423
|
+
CREATED_BY__FIELD_NAME = WrapperField("CreatedBy", FieldType.STRING)
|
|
424
|
+
DATE_CREATED__FIELD_NAME = WrapperField("DateCreated", FieldType.DATE)
|
|
425
|
+
DATE_EDITED__FIELD_NAME = WrapperField("DateEdited", FieldType.DATE)
|
|
426
|
+
DIRECT_LAUNCH__FIELD_NAME = WrapperField("DirectLaunch", FieldType.BOOLEAN)
|
|
427
|
+
EDITED_BY__FIELD_NAME = WrapperField("EditedBy", FieldType.STRING)
|
|
428
|
+
IS_TEMPLATE__FIELD_NAME = WrapperField("IsTemplate", FieldType.BOOLEAN)
|
|
429
|
+
LONG_DESC__FIELD_NAME = WrapperField("LongDesc", FieldType.STRING)
|
|
430
|
+
NAME__FIELD_NAME = WrapperField("Name", FieldType.STRING)
|
|
431
|
+
SHORT_DESC__FIELD_NAME = WrapperField("ShortDesc", FieldType.STRING)
|
|
432
|
+
WORKFLOW_ID__FIELD_NAME = WrapperField("WorkflowId", FieldType.LONG)
|
|
433
|
+
WORKFLOW_VERSION__FIELD_NAME = WrapperField("WorkflowVersion", FieldType.LONG)
|
|
434
|
+
|
|
435
|
+
|
|
436
|
+
class WorkflowOptionPseudoDef:
|
|
437
|
+
DATA_TYPE_NAME: str = "WorkflowOption"
|
|
438
|
+
OPTION_KEY__FIELD_NAME = WrapperField("OptionKey", FieldType.STRING)
|
|
439
|
+
OPTION_VALUE__FIELD_NAME = WrapperField("OptionValue", FieldType.STRING)
|
|
440
|
+
WORKFLOW_ID__FIELD_NAME = WrapperField("WorkflowId", FieldType.LONG)
|
|
@@ -23,6 +23,7 @@ from sapiopylib.rest.utils.recordmodel.RecordModelManager import RecordModelInst
|
|
|
23
23
|
from sapiopylib.rest.utils.recordmodel.RecordModelWrapper import WrappedType
|
|
24
24
|
from sapiopylib.rest.utils.recordmodel.properties import Child
|
|
25
25
|
|
|
26
|
+
from sapiopycommons.eln.experiment_report_util import ExperimentReportUtil
|
|
26
27
|
from sapiopycommons.general.aliases import AliasUtil, SapioRecord, ExperimentIdentifier, UserIdentifier, \
|
|
27
28
|
DataTypeIdentifier, RecordModel
|
|
28
29
|
from sapiopycommons.general.exceptions import SapioException
|
|
@@ -56,9 +57,9 @@ class ExperimentHandler:
|
|
|
56
57
|
# additional queries to obtain, but may also be repeatedly accessed. In such cases, cache the information after it
|
|
57
58
|
# has been requested so that the user doesn't need to worry about caching it themselves.
|
|
58
59
|
# CR-46341: Replace class variables with instance variables.
|
|
59
|
-
__exp_record: DataRecord
|
|
60
|
+
__exp_record: DataRecord | None
|
|
60
61
|
"""The data record for this experiment. Only cached when first accessed."""
|
|
61
|
-
__exp_template: ElnTemplate
|
|
62
|
+
__exp_template: ElnTemplate | None
|
|
62
63
|
"""The template for this experiment. Only cached when first accessed."""
|
|
63
64
|
__exp_options: dict[str, str]
|
|
64
65
|
"""Experiment options for this experiment. Only cached when first accessed."""
|
|
@@ -67,9 +68,9 @@ class ExperimentHandler:
|
|
|
67
68
|
"""Whether this ExperimentHandler has queried the system for all steps in the experiment."""
|
|
68
69
|
__steps: dict[str, ElnEntryStep]
|
|
69
70
|
"""Steps from this experiment. All steps are cached the first time any individual step is accessed."""
|
|
70
|
-
__step_options: dict[
|
|
71
|
-
"""Entry options for each step in this experiment.
|
|
72
|
-
The cache is updated whenever the entry options for a step are changed by this handler."""
|
|
71
|
+
__step_options: dict[int, dict[str, str]]
|
|
72
|
+
"""Entry options for each step in this experiment. All entry options are cached the first time any individual step's
|
|
73
|
+
options are queried. The cache is updated whenever the entry options for a step are changed by this handler."""
|
|
73
74
|
|
|
74
75
|
# Constants
|
|
75
76
|
__ENTRY_COMPLETE_STATUSES = [ExperimentEntryStatus.Completed, ExperimentEntryStatus.CompletedApproved]
|
|
@@ -276,6 +277,7 @@ class ExperimentHandler:
|
|
|
276
277
|
"""
|
|
277
278
|
template_id: int | None = self.__eln_exp.template_id
|
|
278
279
|
if template_id is None:
|
|
280
|
+
self.__exp_template = None
|
|
279
281
|
if exception_on_none:
|
|
280
282
|
raise SapioException(f"Experiment with ID {self.__exp_id} has no template ID.")
|
|
281
283
|
return None
|
|
@@ -549,6 +551,39 @@ class ExperimentHandler:
|
|
|
549
551
|
data_type: str = AliasUtil.to_data_type_name(data_type)
|
|
550
552
|
return [x for x in all_steps if data_type in x.get_data_type_names()]
|
|
551
553
|
|
|
554
|
+
def get_step_by_option(self, key: str, value: str | None = None) -> ElnEntryStep:
|
|
555
|
+
"""
|
|
556
|
+
Retrieve the step in this experiment that contains an entry option with the provided key and value.
|
|
557
|
+
Throws an exception if no entries or multiple entries in the experiment match.
|
|
558
|
+
|
|
559
|
+
:param key: The key of the entry option to match on.
|
|
560
|
+
:param value: The value of the entry option to match on. If not provided, then only matches on key.
|
|
561
|
+
:return: The entry in this experiment that matches the provided entry option key and value.
|
|
562
|
+
"""
|
|
563
|
+
steps: list[ElnEntryStep] = self.get_steps_by_option(key, value)
|
|
564
|
+
count: int = len(steps)
|
|
565
|
+
if count != 1:
|
|
566
|
+
option = key + ("::" + value if value is not None else "")
|
|
567
|
+
raise SapioException(f"{('No' if count == 0 else 'Multiple')} entries in this experiment match the "
|
|
568
|
+
f"provided option: {option}")
|
|
569
|
+
return steps[0]
|
|
570
|
+
|
|
571
|
+
def get_steps_by_option(self, key: str, value: str | None = None) -> list[ElnEntryStep]:
|
|
572
|
+
"""
|
|
573
|
+
Retrieve every step in this experiment that contains an entry option with the provided key and value.
|
|
574
|
+
|
|
575
|
+
:param key: The key of the entry option to match on.
|
|
576
|
+
:param value: The value of the entry option to match on. If not provided, then only matches on key.
|
|
577
|
+
:return: The entries in this experiment that match the provided entry option key and value.
|
|
578
|
+
"""
|
|
579
|
+
ret_list: list[ElnEntryStep] = []
|
|
580
|
+
for step in self.get_all_steps():
|
|
581
|
+
options: dict[str, str] = self.get_step_options(step)
|
|
582
|
+
if key in options:
|
|
583
|
+
if value is None or options[key] == value:
|
|
584
|
+
ret_list.append(step)
|
|
585
|
+
return ret_list
|
|
586
|
+
|
|
552
587
|
def get_step_records(self, step: Step) -> list[DataRecord]:
|
|
553
588
|
"""
|
|
554
589
|
Query for the data records for the given step. The returned records are not cached by the ExperimentHandler.
|
|
@@ -601,6 +636,9 @@ class ExperimentHandler:
|
|
|
601
636
|
if not records:
|
|
602
637
|
return
|
|
603
638
|
dt: str = AliasUtil.to_singular_data_type_name(records)
|
|
639
|
+
if ElnBaseDataType.is_base_data_type(dt):
|
|
640
|
+
raise SapioException(f"{dt} is an ELN data type. This function call has no effect on ELN data types. "
|
|
641
|
+
f"Use add_eln_rows or add_sample_details instead.")
|
|
604
642
|
if dt != step.get_data_type_names()[0]:
|
|
605
643
|
raise SapioException(f"Cannot add {dt} records to entry {step.get_name()} of type "
|
|
606
644
|
f"{step.get_data_type_names()[0]}.")
|
|
@@ -625,6 +663,9 @@ class ExperimentHandler:
|
|
|
625
663
|
if not records:
|
|
626
664
|
return
|
|
627
665
|
dt: str = AliasUtil.to_singular_data_type_name(records)
|
|
666
|
+
if ElnBaseDataType.is_base_data_type(dt):
|
|
667
|
+
raise SapioException(f"{dt} is an ELN data type. This function call has no effect on ELN data types. "
|
|
668
|
+
f"Use remove_eln_rows or remove_sample_details instead.")
|
|
628
669
|
if dt != step.get_data_type_names()[0]:
|
|
629
670
|
raise SapioException(f"Cannot remove {dt} records from entry {step.get_name()} of type "
|
|
630
671
|
f"{step.get_data_type_names()[0]}.")
|
|
@@ -653,6 +694,9 @@ class ExperimentHandler:
|
|
|
653
694
|
step = self.__to_eln_step(step)
|
|
654
695
|
if records:
|
|
655
696
|
dt: str = AliasUtil.to_singular_data_type_name(records)
|
|
697
|
+
if ElnBaseDataType.is_base_data_type(dt):
|
|
698
|
+
raise SapioException(f"{dt} is an ELN data type. This function call has no effect on ELN data types. "
|
|
699
|
+
f"Use add_eln_rows or add_sample_details instead.")
|
|
656
700
|
if dt != step.get_data_type_names()[0]:
|
|
657
701
|
raise SapioException(f"Cannot set {dt} records for entry {step.get_name()} of type "
|
|
658
702
|
f"{step.get_data_type_names()[0]}.")
|
|
@@ -745,7 +789,7 @@ class ExperimentHandler:
|
|
|
745
789
|
raise SapioException("The provided step is not an ELN data type entry.")
|
|
746
790
|
if not records:
|
|
747
791
|
return
|
|
748
|
-
record_dt: str = AliasUtil.to_singular_data_type_name(records)
|
|
792
|
+
record_dt: str = AliasUtil.to_singular_data_type_name(records, False)
|
|
749
793
|
if record_dt != dt:
|
|
750
794
|
raise SapioException(f"Cannot remove {dt} records from entry {step.get_name()} of type "
|
|
751
795
|
f"{step.get_data_type_names()[0]}.")
|
|
@@ -966,7 +1010,7 @@ class ExperimentHandler:
|
|
|
966
1010
|
if clear_template_item_fulfilled_timestamp is True:
|
|
967
1011
|
entry.template_item_fulfilled_timestamp = None
|
|
968
1012
|
if entry_options_map is not None:
|
|
969
|
-
self.__step_options.update({step: entry_options_map})
|
|
1013
|
+
self.__step_options.update({step.get_id(): entry_options_map})
|
|
970
1014
|
|
|
971
1015
|
def get_step_option(self, step: Step, option: str) -> str:
|
|
972
1016
|
"""
|
|
@@ -996,8 +1040,8 @@ class ExperimentHandler:
|
|
|
996
1040
|
list of steps in the experiment and caches them.
|
|
997
1041
|
|
|
998
1042
|
Getting the step options requires a webservice query, which is made the first time any step option
|
|
999
|
-
method is called for
|
|
1000
|
-
method
|
|
1043
|
+
method is called for any step in this experiment. The step options are cached so that subsequent calls of this
|
|
1044
|
+
method don't make a webservice call.
|
|
1001
1045
|
|
|
1002
1046
|
:param step:
|
|
1003
1047
|
The step to get the options of.
|
|
@@ -1005,7 +1049,10 @@ class ExperimentHandler:
|
|
|
1005
1049
|
If given a name, throws an exception if no step of the given name exists in the experiment.
|
|
1006
1050
|
:return: The map of options for the input step.
|
|
1007
1051
|
"""
|
|
1008
|
-
|
|
1052
|
+
step = self.__to_eln_step(step)
|
|
1053
|
+
if step not in self.__step_options:
|
|
1054
|
+
self.__step_options.update(ExperimentReportUtil.get_experiment_entry_options(self.user, self.get_all_steps()))
|
|
1055
|
+
return self.__step_options[step.get_id()]
|
|
1009
1056
|
|
|
1010
1057
|
def add_step_options(self, step: Step, mapping: Mapping[str, str]):
|
|
1011
1058
|
"""
|
|
@@ -1175,16 +1222,3 @@ class ExperimentHandler:
|
|
|
1175
1222
|
return self.__exp_options
|
|
1176
1223
|
self.__exp_options = self.__eln_man.get_notebook_experiment_options(self.__exp_id)
|
|
1177
1224
|
return self.__exp_options
|
|
1178
|
-
|
|
1179
|
-
def __get_step_options(self, step: Step) -> dict[str, str]:
|
|
1180
|
-
"""
|
|
1181
|
-
Cache the options for the input step if they haven't been cached yet.
|
|
1182
|
-
|
|
1183
|
-
:return: The entry options for the input step.
|
|
1184
|
-
"""
|
|
1185
|
-
step = self.__to_eln_step(step)
|
|
1186
|
-
if step in self.__step_options:
|
|
1187
|
-
return self.__step_options.get(step)
|
|
1188
|
-
options: dict[str, str] = step.get_options()
|
|
1189
|
-
self.__step_options.update({step: options})
|
|
1190
|
-
return options
|