cs-models 0.0.747__py3-none-any.whl → 0.0.749__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 cs-models might be problematic. Click here for more details.

File without changes
@@ -0,0 +1,36 @@
1
+ from sqlalchemy import (
2
+ Column,
3
+ Integer,
4
+ DateTime,
5
+ Boolean,
6
+ ForeignKey,
7
+ )
8
+ from datetime import datetime
9
+ from sqlalchemy.orm import relationship
10
+
11
+ from ...database import Base
12
+ from ..WorkbookWorkflowBlock.models import WorkbookWorkflowBlockModel
13
+
14
+
15
+ class WorkbookWorkflowModel(Base):
16
+ __tablename__ = 'workbook_workflows'
17
+
18
+ id = Column(Integer, primary_key=True)
19
+ workbook_id = Column(
20
+ Integer,
21
+ ForeignKey("workbooks.id"),
22
+ nullable=False,
23
+ )
24
+ is_deleted = Column(Boolean, nullable=True)
25
+ updated_at = Column(
26
+ DateTime,
27
+ default=datetime.utcnow,
28
+ onupdate=datetime.utcnow,
29
+ )
30
+
31
+ workflow_blocks = relationship(
32
+ "WorkbookWorkflowBlockModel",
33
+ primaryjoin="WorkbookWorkflowModel.id==WorkbookWorkflowBlockModel.workflow_id",
34
+ order_by=WorkbookWorkflowBlockModel.sequence_number,
35
+ back_populates="workbook_workflow",
36
+ )
@@ -0,0 +1,22 @@
1
+ from marshmallow import (
2
+ Schema,
3
+ fields,
4
+ validate,
5
+ )
6
+ from ..WorkbookWorkflowBlock.schemas import (
7
+ WorkbookWorkflowBlockResourceSchema,
8
+ )
9
+
10
+
11
+ class WorkbookWorkflowResourceSchema(Schema):
12
+ not_blank = validate.Length(min=1, error="Field cannot be blank")
13
+
14
+ id = fields.Integer(dump_only=True)
15
+ workbook_id = fields.Integer(required=True)
16
+ is_deleted = fields.Boolean(allow_none=True)
17
+ workflow_blocks = fields.Nested(
18
+ WorkbookWorkflowBlockResourceSchema(exclude=("workflow_id",)),
19
+ many=True,
20
+ dump_only=True,
21
+ )
22
+ updated_at = fields.DateTime(dump_only=True)
File without changes
@@ -0,0 +1,34 @@
1
+ from datetime import datetime
2
+ from sqlalchemy import Column, DateTime, Boolean, ForeignKey, Integer, Text, String
3
+ from sqlalchemy.orm import relationship
4
+ from ...database import Base
5
+
6
+
7
+ class WorkbookWorkflowBlockModel(Base):
8
+ __tablename__ = "workbook_workflow_blocks"
9
+
10
+ id = Column(Integer, primary_key=True)
11
+ workflow_id = Column(
12
+ Integer,
13
+ ForeignKey("workbook_workflows.id"),
14
+ nullable=False,
15
+ )
16
+ sequence_number = Column(Integer, nullable=False)
17
+ block_type = Column(String(50), nullable=False)
18
+ data = Column(Text, nullable=True)
19
+ is_deleted = Column(Boolean, nullable=True)
20
+ created_at = Column(DateTime, nullable=False, default=lambda: datetime.utcnow())
21
+ updated_at = Column(
22
+ DateTime,
23
+ nullable=False,
24
+ # https://stackoverflow.com/questions/58776476/why-doesnt-freezegun-work-with-sqlalchemy-default-values
25
+ default=lambda: datetime.utcnow(),
26
+ onupdate=lambda: datetime.utcnow(),
27
+ )
28
+
29
+ # These are ORM fields. Don't need to be added in the corresponding migration.
30
+ # https://docs.sqlalchemy.org/en/14/orm/tutorial.html#building-a-relationship
31
+ workbook_workflow = relationship(
32
+ "WorkbookWorkflowModel",
33
+ back_populates="workflow_blocks",
34
+ )
@@ -0,0 +1,57 @@
1
+ """Marshmallow Schema for AssistantCommand."""
2
+ import json
3
+ from marshmallow import Schema, fields
4
+ from ..WorkbookBlockComment.schemas import (
5
+ WorkbookBlockCommentResourceSchema,
6
+ )
7
+
8
+
9
+ class WorkbookWorkflowBlockDataField(fields.Field):
10
+ """Field that stores result for the Assistant command."""
11
+
12
+ def _serialize(self, value, attr, obj, **kwargs):
13
+ """
14
+ In the DB, the `result` field is a text field. We persist
15
+ data by performing the following:
16
+
17
+ AssistantCommandModel(
18
+ ...
19
+ result=json.dumps({...}),
20
+ )
21
+
22
+ So here we need to perform the inverse operation (i.e `json.loads(..)`)
23
+ """
24
+ if value is None:
25
+ return None
26
+ return json.loads(value)
27
+
28
+ def _deserialize(self, value, attr, data, **kwargs):
29
+ """
30
+ In the DB, the `result` field is a text field. We persist
31
+ data by performing the following:
32
+
33
+
34
+
35
+ AssistantCommandModel(
36
+ ***AssistantCommandResourceSchema().load({
37
+ ...
38
+ "result": [{"some_key": 1}, {"some_key": 2}],
39
+ }),
40
+ )
41
+ """
42
+ if value is None:
43
+ return None
44
+ return json.dumps(value)
45
+
46
+
47
+ class WorkbookWorkflowBlockResourceSchema(Schema):
48
+ """Class for AssistantCommandResource schema"""
49
+
50
+ id = fields.Integer(dump_only=True)
51
+ workflow_id = fields.Integer(required=True)
52
+ sequence_number = fields.Integer(required=True)
53
+ block_type = fields.String(required=True)
54
+ data = WorkbookWorkflowBlockDataField(required=True, allow_none=True)
55
+ is_deleted = fields.Boolean(allow_none=True)
56
+ created_at = fields.DateTime(dump_only=True)
57
+ updated_at = fields.DateTime(dump_only=True)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: cs-models
3
- Version: 0.0.747
3
+ Version: 0.0.749
4
4
  Summary: MySQL db models
5
5
  Home-page: https://github.com/mindgram/cs-models
6
6
  Author: Shrey Verma
@@ -1176,6 +1176,12 @@ cs_models/resources/WorkbookBlock/schemas.py,sha256=lRon0US-VHMOGypaiUSZsskgFpjN
1176
1176
  cs_models/resources/WorkbookBlockComment/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1177
1177
  cs_models/resources/WorkbookBlockComment/models.py,sha256=t1dLdweoPOzld1uBqrGJ3rrr66UkMwdiplNZEA1WtPU,1251
1178
1178
  cs_models/resources/WorkbookBlockComment/schemas.py,sha256=9UI_mTuPBYBk5qKUC2u0oR_clHA9XZ-bh5hhr24E-vs,563
1179
+ cs_models/resources/WorkbookWorkflow/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1180
+ cs_models/resources/WorkbookWorkflow/models.py,sha256=hwzg5DeABtljOX7c6_MgrsVGqKN4-Rxs6owURPiUs4o,934
1181
+ cs_models/resources/WorkbookWorkflow/schemas.py,sha256=HBB3p-ZBcJehee5t6XlEJcrP--UVR-CcCii-PK-_5VY,617
1182
+ cs_models/resources/WorkbookWorkflowBlock/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1183
+ cs_models/resources/WorkbookWorkflowBlock/models.py,sha256=YxDqMG1o_hawbPjlM_GwlPSQ8xGmzHTZV--fUVWOaGg,1269
1184
+ cs_models/resources/WorkbookWorkflowBlock/schemas.py,sha256=cfL_XcEjgCEVI0SyzTkl6cyavGaS_r3BL5WPfXhKPTE,1731
1179
1185
  cs_models/resources_aact/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1180
1186
  cs_models/resources_aact/something.py,sha256=WM5m0FzNJce1BgWjDc5YVnMQoHomeeKEyi36EKcd33s,1561
1181
1187
  cs_models/resources_aact/BriefSummary/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -1222,7 +1228,7 @@ cs_models/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1222
1228
  cs_models/utils/alchemy.py,sha256=fhINGFn41owJ2DLXQKXAAtLqeZ1BRzD_qU0wPK_bsGQ,1598
1223
1229
  cs_models/utils/utils.py,sha256=bY623DuzycfPQiaOQT2AxfANeWfwr5w76dBuQ813-ns,3664
1224
1230
  cs_models/utils/profiling/__init__.py,sha256=N-73vb0M92C975fxgXyBCBjCPELl8Oh21ZY_-tzDnns,569
1225
- cs_models-0.0.747.dist-info/METADATA,sha256=mZIwG4qnjF0mB37dvpTGayPh7MiXfmpX15YBSx4Qdpo,751
1226
- cs_models-0.0.747.dist-info/WHEEL,sha256=tZoeGjtWxWRfdplE7E3d45VPlLNQnvbKiYnx7gwAy8A,92
1227
- cs_models-0.0.747.dist-info/top_level.txt,sha256=M7CA8Nh5t0vRManQ9gHfphhO16uhMqIbfaxr1jPDg18,10
1228
- cs_models-0.0.747.dist-info/RECORD,,
1231
+ cs_models-0.0.749.dist-info/METADATA,sha256=Drg0j5Ad3m11t10J4-D5aHYy-RiizzgR2kNaJY6ZuN0,751
1232
+ cs_models-0.0.749.dist-info/WHEEL,sha256=tZoeGjtWxWRfdplE7E3d45VPlLNQnvbKiYnx7gwAy8A,92
1233
+ cs_models-0.0.749.dist-info/top_level.txt,sha256=M7CA8Nh5t0vRManQ9gHfphhO16uhMqIbfaxr1jPDg18,10
1234
+ cs_models-0.0.749.dist-info/RECORD,,