Skip to content
Snippets Groups Projects

WS-31: Viewing and creating capability requests

Merged Nathan Hertz requested to merge WS-31-create-capability-request-view into main
1 unresolved thread
2 files
+ 20
15
Compare changes
  • Side-by-side
  • Inline
Files
2
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,
}
)
Loading