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