Skip to content

Commit f3b7618

Browse files
author
Jens Kürten
committed
Merge branch 'main' of github.com:cslab/functions-sdk-python into run-workflow-action
2 parents a43e971 + f20c327 commit f3b7618

File tree

7 files changed

+224
-0
lines changed

7 files changed

+224
-0
lines changed

csfunctions/events/__init__.py

+11
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,11 @@
1111
from .dummy import DummyEvent, DummyEventData
1212
from .engineering_change_release_check import EngineeringChangeReleaseCheckData, EngineeringChangeReleaseCheckEvent
1313
from .engineering_change_released import EngineeringChangeReleasedData, EngineeringChangeReleasedEvent
14+
from .engineering_change_status_change_check import (
15+
EngineeringChangeStatusChangeCheckData,
16+
EngineeringChangeStatusChangeCheckEvent,
17+
)
18+
from .engineering_change_status_changed import EngineeringChangeStatusChangedData, EngineeringChangeStatusChangedEvent
1419
from .field_value_calculation import FieldValueCalculationData, FieldValueCalculationEvent
1520
from .part_create_check import PartCreateCheckData, PartCreateCheckEvent
1621
from .part_field_calculation import PartFieldCalculationData, PartFieldCalculationEvent
@@ -31,6 +36,8 @@
3136
DummyEvent,
3237
EngineeringChangeReleasedEvent,
3338
EngineeringChangeReleaseCheckEvent,
39+
EngineeringChangeStatusChangedEvent,
40+
EngineeringChangeStatusChangeCheckEvent,
3441
WorkflowTaskTriggerEvent,
3542
DocumentCreateCheckEvent,
3643
DocumentModifyCheckEvent,
@@ -50,6 +57,8 @@
5057
DummyEventData,
5158
EngineeringChangeReleasedData,
5259
EngineeringChangeReleaseCheckData,
60+
EngineeringChangeStatusChangedData,
61+
EngineeringChangeStatusChangeCheckData,
5362
WorkflowTaskTriggerEventData,
5463
DocumentCreateCheckData,
5564
DocumentModifyCheckData,
@@ -78,6 +87,8 @@
7887
"DummyEventData",
7988
"EngineeringChangeReleasedData",
8089
"EngineeringChangeReleaseCheckData",
90+
"EngineeringChangeStatusChangedData",
91+
"EngineeringChangeStatusChangeCheckData",
8192
"WorkflowTaskTriggerEventData",
8293
"DocumentReleasedDialogData",
8394
"PartReleasedDialogData",

csfunctions/events/base.py

+2
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@ class EventNames(str, Enum):
1919
DOCUMENT_MODIFY_CHECK = "document_modify_check"
2020
PART_CREATE_CHECK = "part_create_check"
2121
PART_MODIFY_CHECK = "part_modify_check"
22+
ENGINEERING_CHANGE_STATUS_CHANGED = "engineering_change_status_changed"
23+
ENGINEERING_CHANGE_STATUS_CHANGE_CHECK = "engineering_change_status_change_check"
2224

2325

2426
class BaseEvent(BaseModel):
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
from typing import Literal
2+
3+
from pydantic import BaseModel, Field
4+
5+
from csfunctions.objects import Document, EngineeringChange, Part
6+
7+
from .base import BaseEvent, EventNames
8+
9+
10+
class EngineeringChangeStatusChangeCheckData(BaseModel):
11+
engineering_change: EngineeringChange = Field(
12+
..., description="The engineering change that will have its status modified"
13+
)
14+
target_status: int = Field(..., description="The target status of the engineering change")
15+
documents: list[Document] = Field(..., description="List of documents attached to the engineering change")
16+
parts: list[Part] = Field(..., description="List of parts attached to the engineering change")
17+
18+
19+
class EngineeringChangeStatusChangeCheckEvent(BaseEvent):
20+
name: Literal[EventNames.ENGINEERING_CHANGE_STATUS_CHANGE_CHECK] = EventNames.ENGINEERING_CHANGE_STATUS_CHANGE_CHECK
21+
data: EngineeringChangeStatusChangeCheckData
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
from typing import Literal
2+
3+
from pydantic import BaseModel, Field
4+
5+
from csfunctions.objects import Document, EngineeringChange, Part
6+
7+
from .base import BaseEvent, EventNames
8+
9+
10+
class EngineeringChangeStatusChangedData(BaseModel):
11+
engineering_change: EngineeringChange = Field(
12+
..., description="The engineering change that had its status modified"
13+
)
14+
prev_status: int = Field(..., description="The previous status of the engineering change")
15+
documents: list[Document] = Field(..., description="List of documents attached to the engineering change")
16+
parts: list[Part] = Field(..., description="List of parts attached to the engineering change")
17+
18+
19+
class EngineeringChangeStatusChangedEvent(BaseEvent):
20+
name: Literal[EventNames.ENGINEERING_CHANGE_STATUS_CHANGED] = EventNames.ENGINEERING_CHANGE_STATUS_CHANGED
21+
data: EngineeringChangeStatusChangedData

docs/reference/events.md

+36
Original file line numberDiff line numberDiff line change
@@ -281,3 +281,39 @@ This event is fired by the workflow task "Trigger Webhook".
281281
|documents| list[[Document](objects.md#document)]|List of documents attached to the workflow.|
282282
|engineering_changes| list[[EngineeringChange](objects.md#engineeringchange)]|List of engineering changes attached to the workflow.|
283283
|briefcases| list[[Briefcase](objects.md#briefcase)]|List of briefcases attached to the workflow.|
284+
285+
## EngineeringChangeStatusChanged
286+
`csfunctions.events.EngineeringChangeStatusChanged`
287+
288+
This event is fired **after** an engineering change's status has been modified. Raising an exception cannot prevent the status change.
289+
290+
**EngineeringChangeStatusChanged.name:** engineering_change_status_changed
291+
292+
**EngineeringChangeStatusChanged.data:**
293+
294+
|Attribute|Type|Description|
295+
|-|-|-|
296+
|engineering_change|[EngineeringChange](objects.md#engineeringchange)|The engineering change that had its status modified|
297+
|prev_status|str|The previous status of the engineering change|
298+
|documents|list[[Document](objects.md#document)]|List of documents attached to the engineering change|
299+
|parts|list[[Part](objects.md#part)]|List of parts attached to the engineering change|
300+
301+
## EngineeringChangeStatusChangeCheck
302+
`csfunctions.events.EngineeringChangeStatusChangeCheck`
303+
304+
This event is fired when a user tries to modify an engineering change's status. Raising an exception will prevent the status change.
305+
306+
**Supported actions:**
307+
308+
- [AbortAndShowErrorAction](actions.md#AbortAndShowErrorAction)
309+
310+
**EngineeringChangeStatusChangeCheck.name:** engineering_change_status_change_check
311+
312+
**EngineeringChangeStatusChangeCheck.data:**
313+
314+
|Attribute|Type|Description|
315+
|-|-|-|
316+
|engineering_change|[EngineeringChange](objects.md#engineeringchange)|The engineering change that will have its status modified|
317+
|target_status|int|The status the engineering change will be set to|
318+
|documents|list[[Document](objects.md#document)]|List of documents attached to the engineering change|
319+
|parts|list[[Part](objects.md#part)]|List of parts attached to the engineering change|

docs/release_notes.md

+3
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1+
### Version 0.13.0:
2+
- Feature: Added status change events for engineering changes
3+
14
### Version 0.12.0:
25
Breaking changes:
36

json_schemas/request.json

+130
Original file line numberDiff line numberDiff line change
@@ -1511,6 +1511,128 @@
15111511
"title": "EngineeringChangeReleasedEvent",
15121512
"type": "object"
15131513
},
1514+
"EngineeringChangeStatusChangeCheckData": {
1515+
"properties": {
1516+
"engineering_change": {
1517+
"$ref": "#/$defs/EngineeringChange",
1518+
"description": "The engineering change that will have its status modified"
1519+
},
1520+
"target_status": {
1521+
"description": "The target status of the engineering change",
1522+
"title": "Target Status",
1523+
"type": "integer"
1524+
},
1525+
"documents": {
1526+
"description": "List of documents attached to the engineering change",
1527+
"items": {
1528+
"$ref": "#/$defs/Document"
1529+
},
1530+
"title": "Documents",
1531+
"type": "array"
1532+
},
1533+
"parts": {
1534+
"description": "List of parts attached to the engineering change",
1535+
"items": {
1536+
"$ref": "#/$defs/Part"
1537+
},
1538+
"title": "Parts",
1539+
"type": "array"
1540+
}
1541+
},
1542+
"required": [
1543+
"engineering_change",
1544+
"target_status",
1545+
"documents",
1546+
"parts"
1547+
],
1548+
"title": "EngineeringChangeStatusChangeCheckData",
1549+
"type": "object"
1550+
},
1551+
"EngineeringChangeStatusChangeCheckEvent": {
1552+
"properties": {
1553+
"name": {
1554+
"const": "engineering_change_status_change_check",
1555+
"default": "engineering_change_status_change_check",
1556+
"title": "Name",
1557+
"type": "string"
1558+
},
1559+
"event_id": {
1560+
"description": "unique identifier",
1561+
"title": "Event Id",
1562+
"type": "string"
1563+
},
1564+
"data": {
1565+
"$ref": "#/$defs/EngineeringChangeStatusChangeCheckData"
1566+
}
1567+
},
1568+
"required": [
1569+
"event_id",
1570+
"data"
1571+
],
1572+
"title": "EngineeringChangeStatusChangeCheckEvent",
1573+
"type": "object"
1574+
},
1575+
"EngineeringChangeStatusChangedData": {
1576+
"properties": {
1577+
"engineering_change": {
1578+
"$ref": "#/$defs/EngineeringChange",
1579+
"description": "The engineering change that had its status modified"
1580+
},
1581+
"prev_status": {
1582+
"description": "The previous status of the engineering change",
1583+
"title": "Prev Status",
1584+
"type": "integer"
1585+
},
1586+
"documents": {
1587+
"description": "List of documents attached to the engineering change",
1588+
"items": {
1589+
"$ref": "#/$defs/Document"
1590+
},
1591+
"title": "Documents",
1592+
"type": "array"
1593+
},
1594+
"parts": {
1595+
"description": "List of parts attached to the engineering change",
1596+
"items": {
1597+
"$ref": "#/$defs/Part"
1598+
},
1599+
"title": "Parts",
1600+
"type": "array"
1601+
}
1602+
},
1603+
"required": [
1604+
"engineering_change",
1605+
"prev_status",
1606+
"documents",
1607+
"parts"
1608+
],
1609+
"title": "EngineeringChangeStatusChangedData",
1610+
"type": "object"
1611+
},
1612+
"EngineeringChangeStatusChangedEvent": {
1613+
"properties": {
1614+
"name": {
1615+
"const": "engineering_change_status_changed",
1616+
"default": "engineering_change_status_changed",
1617+
"title": "Name",
1618+
"type": "string"
1619+
},
1620+
"event_id": {
1621+
"description": "unique identifier",
1622+
"title": "Event Id",
1623+
"type": "string"
1624+
},
1625+
"data": {
1626+
"$ref": "#/$defs/EngineeringChangeStatusChangedData"
1627+
}
1628+
},
1629+
"required": [
1630+
"event_id",
1631+
"data"
1632+
],
1633+
"title": "EngineeringChangeStatusChangedEvent",
1634+
"type": "object"
1635+
},
15141636
"FieldValueCalculationData": {
15151637
"properties": {
15161638
"scheme_updates": {
@@ -3076,6 +3198,8 @@
30763198
"dummy": "#/$defs/DummyEvent",
30773199
"engineering_change_release_check": "#/$defs/EngineeringChangeReleaseCheckEvent",
30783200
"engineering_change_released": "#/$defs/EngineeringChangeReleasedEvent",
3201+
"engineering_change_status_change_check": "#/$defs/EngineeringChangeStatusChangeCheckEvent",
3202+
"engineering_change_status_changed": "#/$defs/EngineeringChangeStatusChangedEvent",
30793203
"field_value_calculation": "#/$defs/FieldValueCalculationEvent",
30803204
"part_create_check": "#/$defs/PartCreateCheckEvent",
30813205
"part_field_calculation": "#/$defs/PartFieldCalculationEvent",
@@ -3117,6 +3241,12 @@
31173241
{
31183242
"$ref": "#/$defs/EngineeringChangeReleaseCheckEvent"
31193243
},
3244+
{
3245+
"$ref": "#/$defs/EngineeringChangeStatusChangedEvent"
3246+
},
3247+
{
3248+
"$ref": "#/$defs/EngineeringChangeStatusChangeCheckEvent"
3249+
},
31203250
{
31213251
"$ref": "#/$defs/WorkflowTaskTriggerEvent"
31223252
},

0 commit comments

Comments
 (0)