diff --git a/shared/workspaces/workspaces/capability/schema.py b/shared/workspaces/workspaces/capability/schema.py index 0905ffb1048c3dce8023d401da71a9dfd05af67f..3eff65e9949a42b53227d9adfb7c78660c1e0e73 100644 --- a/shared/workspaces/workspaces/capability/schema.py +++ b/shared/workspaces/workspaces/capability/schema.py @@ -1,13 +1,17 @@ from __future__ import annotations import json -from typing import Tuple +from typing import Dict, Tuple import sqlalchemy as sa from sqlalchemy.ext.declarative import declarative_base from sqlalchemy.orm import relationship -from workspaces.capability.enums import CapabilityEventType, CapabilityStepType +from workspaces.capability.enums import ( + CapabilityEventType, + CapabilityRequestState, + CapabilityStepType, +) from workspaces.capability.helpers import CapabilitySequence, CapabilityStep from workspaces.capability.helpers_interfaces import CapabilitySequenceIF, ParameterIF from workspaces.capability.schema_interfaces import ( @@ -116,7 +120,7 @@ class Capability(Base, CapabilityIF): self.requests.append(request) return request - def to_dict(self): + def to_dict(self) -> Dict[str, str]: return { "name": self.name, "max_jobs": self.max_jobs, @@ -124,13 +128,13 @@ class Capability(Base, CapabilityIF): "enabled": self.enabled, } - def __str__(self): + def __str__(self) -> str: return ( f"Capability: {self.name}, max concurrent jobs of {self.max_jobs}" f"\nSequence: {self.steps}" ) - def __json__(self): + def __json__(self) -> str: return json.dumps(self.to_dict()) @@ -152,19 +156,20 @@ class CapabilityRequest(Base, CapabilityRequestIF): versions = relationship("CapabilityVersion", back_populates="request") capability = relationship(Capability, back_populates="requests") - def update_status(self, status: str): - # TODO: create field in table - self.status = status + def update_state(self, state: CapabilityRequestState): + self.state = state.name def __str__(self): return f"CapabilityRequest object: {self.__dict__}" - def __json__(self, request) -> dict: - return dict( - id=self.id, - capability_name=self.capability_name, - state=self.state, - parameters=self.parameters, + def __json__(self) -> str: + return json.dumps( + { + "id": self.id, + "capability_name": self.capability_name, + "state": self.state, + "parameters": self.parameters, + } ) diff --git a/shared/workspaces/workspaces/capability/schema_interfaces.py b/shared/workspaces/workspaces/capability/schema_interfaces.py index dd47a5aad44f981984ed6dc2a7bc1564ced6812a..8868fcc59be0b172f9f5c6daa8f425fec3c04838 100644 --- a/shared/workspaces/workspaces/capability/schema_interfaces.py +++ b/shared/workspaces/workspaces/capability/schema_interfaces.py @@ -27,7 +27,7 @@ class CapabilityRequestIF: future_products: str versions: List[CapabilityVersionIF] - def __json__(self, request: CapabilityRequestIF) -> dict: + def __json__(self) -> str: raise NotImplementedError