updated sqlalchemy to 2.0 due to safety complaints w/ burnettk
This commit is contained in:
parent
16b837daca
commit
e7fef5b6c4
|
@ -45,8 +45,8 @@ def app() -> Flask:
|
|||
def with_db_and_bpmn_file_cleanup() -> None:
|
||||
"""Do it cleanly!"""
|
||||
meta = db.metadata
|
||||
db.session.execute(db.update(BpmnProcessModel, values={"top_level_process_id": None}))
|
||||
db.session.execute(db.update(BpmnProcessModel, values={"direct_parent_process_id": None}))
|
||||
db.session.execute(db.update(BpmnProcessModel).values(top_level_process_id=None))
|
||||
db.session.execute(db.update(BpmnProcessModel).values(direct_parent_process_id=None))
|
||||
|
||||
for table in reversed(meta.sorted_tables):
|
||||
db.session.execute(table.delete())
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -49,7 +49,6 @@ setuptools = "^65.5.1"
|
|||
connexion = {extras = [ "swagger-ui",], version = "^2"}
|
||||
lxml = "^4.9.1"
|
||||
marshmallow-enum = "^1.5.1"
|
||||
marshmallow-sqlalchemy = "^0.28.0"
|
||||
PyJWT = "^2.6.0"
|
||||
gunicorn = "^20.1.0"
|
||||
APScheduler = "*"
|
||||
|
@ -73,7 +72,7 @@ types-pytz = "^2022.1.1"
|
|||
# sqlalchemy-stubs = { git = "https://github.com/dropbox/sqlalchemy-stubs.git", rev = "master" }
|
||||
# sqlalchemy-stubs = {develop = true, path = "/Users/kevin/projects/github/sqlalchemy-stubs"}
|
||||
# for now use my fork
|
||||
sqlalchemy-stubs = { git = "https://github.com/burnettk/sqlalchemy-stubs.git", rev = "scoped-session-delete" }
|
||||
# sqlalchemy-stubs = { git = "https://github.com/burnettk/sqlalchemy-stubs.git", rev = "scoped-session-delete" }
|
||||
simplejson = "^3.17.6"
|
||||
pytz = "^2022.6"
|
||||
dateparser = "^1.1.2"
|
||||
|
@ -83,6 +82,7 @@ pylint = "^2.15.10"
|
|||
flask-simple-crypt = "^0.3.3"
|
||||
cryptography = "^39.0.2"
|
||||
safety = "^2.3.5"
|
||||
sqlalchemy = "^2.0.7"
|
||||
|
||||
|
||||
[tool.poetry.dev-dependencies]
|
||||
|
|
|
@ -44,8 +44,9 @@ class MyJSONEncoder(DefaultJSONProvider):
|
|||
return obj.serialized
|
||||
elif isinstance(obj, sqlalchemy.engine.row.Row): # type: ignore
|
||||
return_dict = {}
|
||||
for row_key in obj.keys():
|
||||
row_value = obj[row_key]
|
||||
row_mapping = obj._mapping
|
||||
for row_key in row_mapping.keys():
|
||||
row_value = row_mapping[row_key]
|
||||
if hasattr(row_value, "serialized"):
|
||||
return_dict.update(row_value.serialized)
|
||||
elif hasattr(row_value, "__dict__"):
|
||||
|
|
|
@ -53,6 +53,7 @@ class ProcessInstanceModel(SpiffworkflowBaseDBModel):
|
|||
"""ProcessInstanceModel."""
|
||||
|
||||
__tablename__ = "process_instance"
|
||||
__allow_unmapped__ = True
|
||||
id: int = db.Column(db.Integer, primary_key=True)
|
||||
process_model_identifier: str = db.Column(db.String(255), nullable=False, index=True)
|
||||
process_model_display_name: str = db.Column(db.String(255), nullable=False, index=True)
|
||||
|
|
|
@ -8,7 +8,6 @@ from typing import Optional
|
|||
from typing import TypedDict
|
||||
|
||||
from sqlalchemy import ForeignKey
|
||||
from sqlalchemy.orm import deferred
|
||||
from sqlalchemy.orm import relationship
|
||||
|
||||
from spiffworkflow_backend.exceptions.process_entity_not_found_error import (
|
||||
|
@ -69,7 +68,7 @@ class ProcessInstanceReportModel(SpiffworkflowBaseDBModel):
|
|||
|
||||
id: int = db.Column(db.Integer, primary_key=True)
|
||||
identifier: str = db.Column(db.String(50), nullable=False, index=True)
|
||||
report_metadata: dict = deferred(db.Column(db.JSON)) # type: ignore
|
||||
report_metadata: dict = db.Column(db.JSON)
|
||||
created_by_id = db.Column(ForeignKey(UserModel.id), nullable=False, index=True) # type: ignore
|
||||
created_by = relationship("UserModel")
|
||||
created_at_in_seconds = db.Column(db.Integer)
|
||||
|
|
|
@ -47,6 +47,7 @@ class MultiInstanceType(enum.Enum):
|
|||
@dataclass
|
||||
class TaskModel(SpiffworkflowBaseDBModel):
|
||||
__tablename__ = "task"
|
||||
__allow_unmapped__ = True
|
||||
id: int = db.Column(db.Integer, primary_key=True)
|
||||
guid: str = db.Column(db.String(36), nullable=False, unique=True)
|
||||
bpmn_process_id: int = db.Column(ForeignKey(BpmnProcessModel.id), nullable=False, index=True) # type: ignore
|
||||
|
|
|
@ -309,11 +309,14 @@ class ProcessInstanceReportService:
|
|||
) -> list[dict]:
|
||||
"""Add_metadata_columns_to_process_instance."""
|
||||
results = []
|
||||
for process_instance in process_instance_sqlalchemy_rows:
|
||||
process_instance_dict = process_instance["ProcessInstanceModel"].serialized
|
||||
for process_instance_row in process_instance_sqlalchemy_rows:
|
||||
process_instance_mapping = process_instance_row._mapping
|
||||
process_instance_dict = process_instance_row[0].serialized
|
||||
for metadata_column in metadata_columns:
|
||||
if metadata_column["accessor"] not in process_instance_dict:
|
||||
process_instance_dict[metadata_column["accessor"]] = process_instance[metadata_column["accessor"]]
|
||||
process_instance_dict[metadata_column["accessor"]] = process_instance_mapping[
|
||||
metadata_column["accessor"]
|
||||
]
|
||||
|
||||
results.append(process_instance_dict)
|
||||
return results
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
import logging
|
||||
import time
|
||||
from typing import Callable
|
||||
from typing import Optional
|
||||
|
@ -280,10 +279,6 @@ class WorkflowExecutionService:
|
|||
|
||||
finally:
|
||||
self.execution_strategy.save()
|
||||
spiff_logger = logging.getLogger("spiff")
|
||||
for handler in spiff_logger.handlers:
|
||||
if hasattr(handler, "bulk_insert_logs"):
|
||||
handler.bulk_insert_logs() # type: ignore
|
||||
db.session.commit()
|
||||
|
||||
if save:
|
||||
|
|
Loading…
Reference in New Issue