kodexa 7.4.413159458494__py3-none-any.whl → 7.4.413228679383__py3-none-any.whl
Sign up to get free protection for your applications and to get access to all the features.
- kodexa/model/objects.py +116 -16
- kodexa/platform/client.py +161 -2
- {kodexa-7.4.413159458494.dist-info → kodexa-7.4.413228679383.dist-info}/METADATA +1 -1
- {kodexa-7.4.413159458494.dist-info → kodexa-7.4.413228679383.dist-info}/RECORD +6 -6
- {kodexa-7.4.413159458494.dist-info → kodexa-7.4.413228679383.dist-info}/LICENSE +0 -0
- {kodexa-7.4.413159458494.dist-info → kodexa-7.4.413228679383.dist-info}/WHEEL +0 -0
kodexa/model/objects.py
CHANGED
@@ -2930,14 +2930,51 @@ class Project(BaseModel):
|
|
2930
2930
|
owner: Optional[User] = None
|
2931
2931
|
options: Optional[ProjectOptions] = Field(None, alias="options")
|
2932
2932
|
|
2933
|
-
|
2934
2933
|
class TaskStatus(str, Enum):
|
2935
2934
|
TODO = "TODO"
|
2936
2935
|
IN_PROGRESS = "IN_PROGRESS"
|
2937
2936
|
DONE = "DONE"
|
2938
2937
|
|
2939
2938
|
|
2940
|
-
class
|
2939
|
+
class TaskActivityType(str, Enum):
|
2940
|
+
TASK_CREATED = "TASK_CREATED"
|
2941
|
+
TITLE_CHANGED = "TITLE_CHANGED"
|
2942
|
+
DESCRIPTION_UPDATED = "DESCRIPTION_UPDATED"
|
2943
|
+
STATUS_CHANGED = "STATUS_CHANGED"
|
2944
|
+
ASSIGNEE_CHANGED = "ASSIGNEE_CHANGED"
|
2945
|
+
DUE_DATE_CHANGED = "DUE_DATE_CHANGED"
|
2946
|
+
PROJECT_CHANGED = "PROJECT_CHANGED"
|
2947
|
+
COMMENT = "COMMENT"
|
2948
|
+
|
2949
|
+
|
2950
|
+
class TaskActivityDetail(BaseModel):
|
2951
|
+
model_config = ConfigDict(
|
2952
|
+
populate_by_name=True,
|
2953
|
+
use_enum_values=True,
|
2954
|
+
arbitrary_types_allowed=True,
|
2955
|
+
protected_namespaces=("model_config",),
|
2956
|
+
)
|
2957
|
+
type: TaskActivityType
|
2958
|
+
interpolated_values: Dict[str, Any] = Field(default_factory=dict, alias="interpolatedValues")
|
2959
|
+
|
2960
|
+
|
2961
|
+
class TaskActivity(BaseModel):
|
2962
|
+
model_config = ConfigDict(
|
2963
|
+
populate_by_name=True,
|
2964
|
+
use_enum_values=True,
|
2965
|
+
arbitrary_types_allowed=True,
|
2966
|
+
protected_namespaces=("model_config",),
|
2967
|
+
)
|
2968
|
+
|
2969
|
+
task: Optional['Task'] = None
|
2970
|
+
content: Optional[str] = None
|
2971
|
+
detail: Optional[TaskActivityDetail] = None
|
2972
|
+
user: Optional['User'] = None
|
2973
|
+
search_text: Optional[str] = Field(None, alias="searchText")
|
2974
|
+
transient_values: Dict[str, Any] = Field(default_factory=dict, alias="transientValues")
|
2975
|
+
|
2976
|
+
|
2977
|
+
class TaskTag(BaseModel):
|
2941
2978
|
model_config = ConfigDict(
|
2942
2979
|
populate_by_name=True,
|
2943
2980
|
use_enum_values=True,
|
@@ -2945,10 +2982,61 @@ class TaskCheckItem(BaseModel):
|
|
2945
2982
|
protected_namespaces=("model_config",),
|
2946
2983
|
)
|
2947
2984
|
|
2985
|
+
project: Optional['Project'] = None
|
2948
2986
|
name: str
|
2987
|
+
color: Optional[str] = None
|
2988
|
+
|
2989
|
+
|
2990
|
+
class DataFormAction(BaseModel):
|
2991
|
+
model_config = ConfigDict(
|
2992
|
+
populate_by_name=True,
|
2993
|
+
use_enum_values=True,
|
2994
|
+
arbitrary_types_allowed=True,
|
2995
|
+
protected_namespaces=("model_config",),
|
2996
|
+
)
|
2997
|
+
|
2998
|
+
type: Optional[str] = None
|
2999
|
+
label: Optional[str] = None
|
3000
|
+
properties: Dict[str, Any] = Field(default_factory=dict)
|
3001
|
+
|
3002
|
+
|
3003
|
+
class TemplateDataForm(BaseModel):
|
3004
|
+
model_config = ConfigDict(
|
3005
|
+
populate_by_name=True,
|
3006
|
+
use_enum_values=True,
|
3007
|
+
arbitrary_types_allowed=True,
|
3008
|
+
protected_namespaces=("model_config",),
|
3009
|
+
)
|
3010
|
+
|
3011
|
+
data_form_ref: Optional[str] = Field(None, alias="dataFormRef")
|
3012
|
+
actions: List[DataFormAction] = Field(default_factory=list)
|
3013
|
+
|
3014
|
+
|
3015
|
+
class TaskTemplateMetadata(BaseModel):
|
3016
|
+
model_config = ConfigDict(
|
3017
|
+
populate_by_name=True,
|
3018
|
+
use_enum_values=True,
|
3019
|
+
arbitrary_types_allowed=True,
|
3020
|
+
protected_namespaces=("model_config",),
|
3021
|
+
)
|
3022
|
+
|
3023
|
+
options: List[Option] = Field(default_factory=list)
|
3024
|
+
forms: List[TemplateDataForm] = Field(default_factory=list)
|
3025
|
+
workspace_id: Optional[str] = Field(None, alias="workspaceId")
|
3026
|
+
|
3027
|
+
|
3028
|
+
class TaskTemplate(BaseModel):
|
3029
|
+
model_config = ConfigDict(
|
3030
|
+
populate_by_name=True,
|
3031
|
+
use_enum_values=True,
|
3032
|
+
arbitrary_types_allowed=True,
|
3033
|
+
protected_namespaces=("model_config",),
|
3034
|
+
)
|
3035
|
+
|
3036
|
+
project: Optional['Project'] = None
|
3037
|
+
name: Optional[str] = None
|
2949
3038
|
description: Optional[str] = None
|
2950
|
-
|
2951
|
-
taxonomy_ref: Optional[str] = Field(None, alias="taxonomyRef")
|
3039
|
+
metadata: Optional[TaskTemplateMetadata] = None
|
2952
3040
|
|
2953
3041
|
|
2954
3042
|
class TaskMetadata(BaseModel):
|
@@ -2959,10 +3047,19 @@ class TaskMetadata(BaseModel):
|
|
2959
3047
|
protected_namespaces=("model_config",),
|
2960
3048
|
)
|
2961
3049
|
|
2962
|
-
|
2963
|
-
|
2964
|
-
|
2965
|
-
|
3050
|
+
properties: Dict[str, Any] = Field(default_factory=dict)
|
3051
|
+
|
3052
|
+
|
3053
|
+
class TaskDocumentFamily(BaseModel):
|
3054
|
+
model_config = ConfigDict(
|
3055
|
+
populate_by_name=True,
|
3056
|
+
use_enum_values=True,
|
3057
|
+
arbitrary_types_allowed=True,
|
3058
|
+
protected_namespaces=("model_config",),
|
3059
|
+
)
|
3060
|
+
|
3061
|
+
task: Optional['Task'] = None
|
3062
|
+
document_family: Optional['DocumentFamily'] = Field(None, alias="documentFamily")
|
2966
3063
|
|
2967
3064
|
|
2968
3065
|
class Task(BaseModel):
|
@@ -2973,16 +3070,19 @@ class Task(BaseModel):
|
|
2973
3070
|
protected_namespaces=("model_config",),
|
2974
3071
|
)
|
2975
3072
|
|
2976
|
-
project: Optional['Project'] =
|
2977
|
-
title: Optional[str] =
|
2978
|
-
|
2979
|
-
|
2980
|
-
|
3073
|
+
project: Optional['Project'] = None
|
3074
|
+
title: Optional[str] = None
|
3075
|
+
description: Optional[str] = None
|
3076
|
+
metadata: Optional[TaskMetadata] = None
|
3077
|
+
template: Optional[TaskTemplate] = None
|
2981
3078
|
due_date: Optional[StandardDateTime] = Field(None, alias="dueDate")
|
2982
3079
|
completed_date: Optional[StandardDateTime] = Field(None, alias="completedDate")
|
2983
|
-
status: Optional[
|
2984
|
-
assignee: Optional['User'] =
|
2985
|
-
|
3080
|
+
status: Optional[TaskStatus] = None
|
3081
|
+
assignee: Optional['User'] = None
|
3082
|
+
task_activity: List[TaskActivity] = Field(default_factory=list, alias="taskActivity")
|
3083
|
+
task_document_families: List[TaskDocumentFamily] = Field(default_factory=list, alias="taskDocumentFamilies")
|
3084
|
+
search_text: Optional[str] = Field(None, alias="searchText")
|
3085
|
+
tags: List[TaskTag] = Field(default_factory=list)
|
2986
3086
|
|
2987
3087
|
class FeatureSet(BaseModel):
|
2988
3088
|
"""
|
kodexa/platform/client.py
CHANGED
@@ -86,7 +86,8 @@ from kodexa.model.objects import (
|
|
86
86
|
PageExtensionPack,
|
87
87
|
PageOrganization,
|
88
88
|
DocumentFamilyStatistics, MessageContext, PagePrompt, Prompt, GuidanceSet, PageGuidanceSet, DocumentEmbedding,
|
89
|
-
DocumentExternalData, Task, PageTask, RetainedGuidance, PageRetainedGuidance,
|
89
|
+
DocumentExternalData, Task, PageTask, RetainedGuidance, PageRetainedGuidance, TaskTemplate, TaskStatus,
|
90
|
+
TaskActivity, TaskDocumentFamily, TaskTag,
|
90
91
|
)
|
91
92
|
|
92
93
|
logger = logging.getLogger()
|
@@ -1174,8 +1175,166 @@ class PagePipelineEndpoint(PagePipeline, PageEndpoint):
|
|
1174
1175
|
|
1175
1176
|
|
1176
1177
|
class PageTaskEndpoint(PageTask, PageEndpoint):
|
1178
|
+
"""
|
1179
|
+
Represents a page of tasks.
|
1180
|
+
"""
|
1181
|
+
def get_type(self) -> Optional[str]:
|
1182
|
+
return "tasks"
|
1183
|
+
|
1184
|
+
class PageTaskActivityEndpoint(PageEndpoint):
|
1185
|
+
"""
|
1186
|
+
Represents a page of task activities.
|
1187
|
+
"""
|
1188
|
+
def get_type(self) -> Optional[str]:
|
1189
|
+
return "taskActivities"
|
1190
|
+
|
1191
|
+
class PageTaskDocumentFamilyEndpoint(PageEndpoint):
|
1192
|
+
"""
|
1193
|
+
Represents a page of task document families.
|
1194
|
+
"""
|
1177
1195
|
def get_type(self) -> Optional[str]:
|
1178
|
-
return "
|
1196
|
+
return "taskDocumentFamilies"
|
1197
|
+
|
1198
|
+
class PageTaskTagEndpoint(PageEndpoint):
|
1199
|
+
"""
|
1200
|
+
Represents a page of task tags.
|
1201
|
+
"""
|
1202
|
+
def get_type(self) -> Optional[str]:
|
1203
|
+
return "taskTags"
|
1204
|
+
|
1205
|
+
class TaskEndpoint(EntityEndpoint, Task):
|
1206
|
+
"""
|
1207
|
+
Represents a task endpoint.
|
1208
|
+
"""
|
1209
|
+
def get_type(self) -> str:
|
1210
|
+
return "tasks"
|
1211
|
+
|
1212
|
+
def create_with_request(self, task: Task, task_template: Optional[TaskTemplate] = None, document_families: Optional[List[DocumentFamily]] = None):
|
1213
|
+
"""Create a task with the given request."""
|
1214
|
+
url = "/api/tasks/createTaskWithRequest"
|
1215
|
+
response = self.client.post(url, body={
|
1216
|
+
"task": task.model_dump(mode="json", by_alias=True),
|
1217
|
+
"taskTemplate": task_template.model_dump(mode="json", by_alias=True) if task_template else None,
|
1218
|
+
"documentFamilies": [df.model_dump(mode="json", by_alias=True) for df in document_families] if document_families else None
|
1219
|
+
})
|
1220
|
+
return TaskEndpoint.model_validate(response.json()).set_client(self.client)
|
1221
|
+
|
1222
|
+
def update_status(self, status: TaskStatus):
|
1223
|
+
"""Update the status of the task."""
|
1224
|
+
url = f"/api/tasks/{self.id}/status"
|
1225
|
+
response = self.client.put(url, body=status)
|
1226
|
+
return TaskEndpoint.model_validate(response.json()).set_client(self.client)
|
1227
|
+
|
1228
|
+
def remove_status(self):
|
1229
|
+
"""Remove the task status."""
|
1230
|
+
url = f"/api/tasks/{self.id}/status"
|
1231
|
+
response = self.client.delete(url)
|
1232
|
+
return TaskEndpoint.model_validate(response.json()).set_client(self.client)
|
1233
|
+
|
1234
|
+
def update_assignee(self, assignee: User):
|
1235
|
+
"""Update the assignee of the task."""
|
1236
|
+
url = f"/api/tasks/{self.id}/assignee"
|
1237
|
+
response = self.client.put(url, body=assignee.model_dump(mode="json", by_alias=True))
|
1238
|
+
return TaskEndpoint.model_validate(response.json()).set_client(self.client)
|
1239
|
+
|
1240
|
+
def remove_assignee(self):
|
1241
|
+
"""Remove the task assignee."""
|
1242
|
+
url = f"/api/tasks/{self.id}/assignee"
|
1243
|
+
response = self.client.delete(url)
|
1244
|
+
return TaskEndpoint.model_validate(response.json()).set_client(self.client)
|
1245
|
+
|
1246
|
+
class TasksEndpoint(EntitiesEndpoint):
|
1247
|
+
"""
|
1248
|
+
Represents tasks endpoints.
|
1249
|
+
"""
|
1250
|
+
def get_type(self) -> str:
|
1251
|
+
return "tasks"
|
1252
|
+
|
1253
|
+
def get_instance_class(self, object_dict=None):
|
1254
|
+
return TaskEndpoint
|
1255
|
+
|
1256
|
+
def get_page_class(self, object_dict=None):
|
1257
|
+
return PageTaskEndpoint
|
1258
|
+
|
1259
|
+
class TaskTemplateEndpoint(EntityEndpoint, TaskTemplate):
|
1260
|
+
"""
|
1261
|
+
Represents a task template endpoint.
|
1262
|
+
"""
|
1263
|
+
def get_type(self) -> str:
|
1264
|
+
return "taskTemplates"
|
1265
|
+
|
1266
|
+
class TaskTemplatesEndpoint(EntitiesEndpoint):
|
1267
|
+
"""
|
1268
|
+
Represents task templates endpoints.
|
1269
|
+
"""
|
1270
|
+
def get_type(self) -> str:
|
1271
|
+
return "taskTemplates"
|
1272
|
+
|
1273
|
+
def get_instance_class(self, object_dict=None):
|
1274
|
+
return TaskTemplateEndpoint
|
1275
|
+
|
1276
|
+
def get_page_class(self, object_dict=None):
|
1277
|
+
return PageTaskTemplateEndpoint
|
1278
|
+
|
1279
|
+
class TaskActivityEndpoint(EntityEndpoint, TaskActivity):
|
1280
|
+
"""
|
1281
|
+
Represents a task activity endpoint.
|
1282
|
+
"""
|
1283
|
+
def get_type(self) -> str:
|
1284
|
+
return "taskActivities"
|
1285
|
+
|
1286
|
+
class TaskActivitiesEndpoint(EntitiesEndpoint):
|
1287
|
+
"""
|
1288
|
+
Represents task activities endpoints.
|
1289
|
+
"""
|
1290
|
+
def get_type(self) -> str:
|
1291
|
+
return "taskActivities"
|
1292
|
+
|
1293
|
+
def get_instance_class(self, object_dict=None):
|
1294
|
+
return TaskActivityEndpoint
|
1295
|
+
|
1296
|
+
def get_page_class(self, object_dict=None):
|
1297
|
+
return PageTaskActivityEndpoint
|
1298
|
+
|
1299
|
+
class TaskDocumentFamilyEndpoint(EntityEndpoint, TaskDocumentFamily):
|
1300
|
+
"""
|
1301
|
+
Represents a task document family endpoint.
|
1302
|
+
"""
|
1303
|
+
def get_type(self) -> str:
|
1304
|
+
return "taskDocumentFamilies"
|
1305
|
+
|
1306
|
+
class TaskDocumentFamiliesEndpoint(EntitiesEndpoint):
|
1307
|
+
"""
|
1308
|
+
Represents task document families endpoints.
|
1309
|
+
"""
|
1310
|
+
def get_type(self) -> str:
|
1311
|
+
return "taskDocumentFamilies"
|
1312
|
+
|
1313
|
+
def get_instance_class(self, object_dict=None):
|
1314
|
+
return TaskDocumentFamilyEndpoint
|
1315
|
+
|
1316
|
+
def get_page_class(self, object_dict=None):
|
1317
|
+
return PageTaskDocumentFamilyEndpoint
|
1318
|
+
|
1319
|
+
class TaskTagEndpoint(EntityEndpoint, TaskTag):
|
1320
|
+
"""
|
1321
|
+
Represents a task tag endpoint.
|
1322
|
+
"""
|
1323
|
+
def get_type(self) -> str:
|
1324
|
+
return "taskTags"
|
1325
|
+
|
1326
|
+
class TaskTagsEndpoint(EntitiesEndpoint):
|
1327
|
+
"""
|
1328
|
+
Represents task tags endpoints.
|
1329
|
+
"""
|
1330
|
+
def get_type(self) -> str:
|
1331
|
+
return "taskTags"
|
1332
|
+
|
1333
|
+
def get_instance_class(self, object_dict=None):
|
1334
|
+
return TaskTagEndpoint
|
1335
|
+
|
1336
|
+
def get_page_class(self, object_dict=None):
|
1337
|
+
return PageTaskTagEndpoint
|
1179
1338
|
|
1180
1339
|
|
1181
1340
|
class PageRetainedGuidanceEndpoint(PageRetainedGuidance, PageEndpoint):
|
@@ -13,13 +13,13 @@ kodexa/model/entities/product.py,sha256=StUhTEeLXmc05cj6XnZppQfeJsqCPbX1jdhsysHH
|
|
13
13
|
kodexa/model/entities/product_group.py,sha256=540fRGyUf34h1BzAN1DiWu6rGgvaj3xDFhZ2k-RvSFY,3617
|
14
14
|
kodexa/model/entities/product_subscription.py,sha256=UcmWR-qgLfdV7VCtJNwzgkanoS8nBSL6ngVuxQUK1M8,3810
|
15
15
|
kodexa/model/model.py,sha256=qh1YUew3UgtjU0t4fAwSXYYuzQjXTOZWZkafyFp_w8M,118801
|
16
|
-
kodexa/model/objects.py,sha256=
|
16
|
+
kodexa/model/objects.py,sha256=x9Iah3Wo2UvQKDrL1BcrN4qF68ljCQDRnlyKJ4OgKsE,188900
|
17
17
|
kodexa/model/persistence.py,sha256=HX_uIkGs8bqHwqyE5wB2qMlGIG5ZnjuTu7xMdvKhEzA,72033
|
18
18
|
kodexa/model/utils.py,sha256=6R-3rFiW9irBwj0Mq5yhp7EDXkNUFaeFhr3bWmnlW4g,2961
|
19
19
|
kodexa/pipeline/__init__.py,sha256=sA7f5D6qkdMrpp2xTIeefnrUBI6xxEEWostvxfX_1Cs,236
|
20
20
|
kodexa/pipeline/pipeline.py,sha256=Z4O6UwoISeP_HMlxm6l6kbcvFBDw3Glm7lT4cUibri4,25461
|
21
21
|
kodexa/platform/__init__.py,sha256=1O3oiWMg292NPL_NacKDnK1T3_R6cMorrPRue_9e-O4,216
|
22
|
-
kodexa/platform/client.py,sha256=
|
22
|
+
kodexa/platform/client.py,sha256=kw1UOSwGV0zl_V0oOsSS7sP-IJzCQNyua4P52HFpO7U,233867
|
23
23
|
kodexa/platform/interaction.py,sha256=6zpcwXKNZstUGNS6m4JsoRXAqCZPJHWI-ZN3co8nnF0,1055
|
24
24
|
kodexa/platform/kodexa.py,sha256=tPXHO500q3S75GhKGDcaxO51Viq2PNlHmAzpBZlahgo,34857
|
25
25
|
kodexa/selectors/__init__.py,sha256=xA9-4vpyaAZWPSk3bh2kvDLkdv6XEmm7PjFbpziiTIk,100
|
@@ -44,7 +44,7 @@ kodexa/testing/test_utils.py,sha256=v44p__gE7ia67W7WeHN2HBFCWSCUrCZt7G4xBNCmwf8,
|
|
44
44
|
kodexa/training/__init__.py,sha256=xs2L62YpRkIRfslQwtQZ5Yxjhm7sLzX2TrVX6EuBnZQ,52
|
45
45
|
kodexa/training/train_utils.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
46
46
|
kodexa/utils/__init__.py,sha256=Pnim1o9_db5YEnNvDTxpM7HG-qTlL6n8JwFwOafU9wo,5928
|
47
|
-
kodexa-7.4.
|
48
|
-
kodexa-7.4.
|
49
|
-
kodexa-7.4.
|
50
|
-
kodexa-7.4.
|
47
|
+
kodexa-7.4.413228679383.dist-info/LICENSE,sha256=WNHhf_5RCaeuKWyq_K39vmp9F28LxKsB4SpomwSZ2L0,11357
|
48
|
+
kodexa-7.4.413228679383.dist-info/METADATA,sha256=3tV7S-10PS8-yCkEG9VWfnOzsswvfHhGhhLyVCblmPU,3528
|
49
|
+
kodexa-7.4.413228679383.dist-info/WHEEL,sha256=Zb28QaM1gQi8f4VCBhsUklF61CTlNYfs9YAZn-TOGFk,88
|
50
|
+
kodexa-7.4.413228679383.dist-info/RECORD,,
|
File without changes
|
File without changes
|