Skip to content

Commit 901d561

Browse files
Added resource handler (ComponentResourceHanlder) for Components
1 parent f7a156f commit 901d561

20 files changed

+369
-239
lines changed

docs/source/dev/adapter.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -147,9 +147,9 @@ This generates:
147147
Below is an example of how to define a resource handler configuration for a `MotorAdapter`:
148148

149149
```python
150-
from mxcubeweb.core.models.configmodels import AdapterResourceHandlerConfigModel
150+
from mxcubeweb.core.models.configmodels import ResourceHandlerConfigModel
151151

152-
resource_handler_config = AdapterResourceHandlerConfigModel(
152+
resource_handler_config = ResourceHandlerConfigModel(
153153
commands=[
154154
"set_value",
155155
"get_value",

mxcubeweb/app.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,9 +29,10 @@
2929
from mxcubeweb.core.components.samplechanger import SampleChanger
3030
from mxcubeweb.core.components.sampleview import SampleView
3131
from mxcubeweb.core.components.workflow import Workflow
32+
from mxcubeweb.core.components.log import Log
3233
from mxcubeweb.core.models.configmodels import UIComponentModel
3334
from mxcubeweb.logging_handler import MX3LoggingHandler
34-
from mxcubeweb.core.server.resource_handler import AdapterResourceHandlerFactory
35+
from mxcubeweb.core.server.resource_handler import ResourceHandlerFactory
3536

3637
removeLoggingHandlers()
3738

@@ -131,7 +132,7 @@ def init(
131132
# re-initializes the application for each test, we thus
132133
# need to remove all AdapterResourceHandlers from the
133134
# factory.
134-
AdapterResourceHandlerFactory.unregister_all()
135+
ResourceHandlerFactory.unregister_all()
135136

136137
logging.getLogger("MX3.HWR").info("Starting MXCuBE-Web...")
137138
MXCUBEApplication.server = server
@@ -165,6 +166,7 @@ def init(
165166
MXCUBEApplication.sample_view = SampleView(MXCUBEApplication, {})
166167
MXCUBEApplication.workflow = Workflow(MXCUBEApplication, {})
167168
MXCUBEApplication.harvester = Harvester(MXCUBEApplication, {})
169+
MXCUBEApplication.log = Log(MXCUBEApplication, {})
168170

169171
MXCUBEApplication.init_signal_handlers()
170172
# Install server-side UI state storage

mxcubeweb/core/adapter/actuator_adapter.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,10 @@
88
FloatValueModel,
99
HOActuatorValueChangeModel,
1010
)
11-
from mxcubeweb.core.models.configmodels import AdapterResourceHandlerConfigModel
11+
from mxcubeweb.core.models.configmodels import ResourceHandlerConfigModel
1212
from mxcubeweb.core.util.networkutils import RateLimited
1313

14-
resource_handler_config = AdapterResourceHandlerConfigModel(
14+
resource_handler_config = ResourceHandlerConfigModel(
1515
commands=["get_value", "set_value", "stop"], attributes=["data"]
1616
)
1717

mxcubeweb/core/adapter/adapter_base.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -16,12 +16,12 @@
1616
HOActuatorModel,
1717
HOModel,
1818
)
19-
from mxcubeweb.core.models.configmodels import AdapterResourceHandlerConfigModel
19+
from mxcubeweb.core.models.configmodels import ResourceHandlerConfigModel
2020
from mxcubeweb.core.server.resource_handler import (
21-
AdapterResourceHandlerFactory,
21+
ResourceHandlerFactory,
2222
)
2323

24-
default_resource_handler_config = AdapterResourceHandlerConfigModel(
24+
default_resource_handler_config = ResourceHandlerConfigModel(
2525
commands=[
2626
"set_value",
2727
"get_value",
@@ -67,10 +67,10 @@ def __init__(self, ho, role, app, resource_handler_config=None):
6767
self.ADAPTER_DICT[cls_name][ho.name] = self
6868

6969
if resource_handler_config:
70-
AdapterResourceHandlerFactory.create_or_get(
70+
ResourceHandlerFactory.create_or_get(
7171
name=cls_name,
7272
url_prefix="/mxcube/api/v0.1/hwobj/" + self._type.lower(),
73-
adapter_dict=self.ADAPTER_DICT[cls_name],
73+
handler_dict=self.ADAPTER_DICT[cls_name],
7474
app=self.app,
7575
exports=resource_handler_config.exports,
7676
commands=resource_handler_config.commands,
@@ -251,7 +251,7 @@ def _exported_methods(self):
251251
# been explicitly configured to be exported
252252
configured_exported = self._ho.exported_attributes.keys()
253253

254-
rh = AdapterResourceHandlerFactory.get_handler(self.__class__.__name__.lower())
254+
rh = ResourceHandlerFactory.get_handler(self.__class__.__name__.lower())
255255

256256
if rh:
257257
for export in rh.commands:

mxcubeweb/core/adapter/beamline_action_adapter.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,9 @@
1919
HOActuatorValueChangeModel,
2020
NStateModel,
2121
)
22-
from mxcubeweb.core.models.configmodels import AdapterResourceHandlerConfigModel
22+
from mxcubeweb.core.models.configmodels import ResourceHandlerConfigModel
2323

24-
resource_handler_config = AdapterResourceHandlerConfigModel(
24+
resource_handler_config = ResourceHandlerConfigModel(
2525
commands=["stop", "run_action"], attributes=["data", "get_all_actions"]
2626
)
2727

@@ -62,7 +62,7 @@ def __init__(
6262
ho: HardwareObject,
6363
role: str,
6464
app,
65-
resource_handler_config: AdapterResourceHandlerConfigModel = resource_handler_config, # noqa: E501
65+
resource_handler_config: ResourceHandlerConfigModel = resource_handler_config,
6666
):
6767
"""
6868
Args:

mxcubeweb/core/adapter/detector_adapter.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,9 @@
33
from mxcubecore.HardwareObjects.abstract import AbstractDetector
44

55
from mxcubeweb.core.adapter.adapter_base import AdapterBase
6-
from mxcubeweb.core.models.configmodels import AdapterResourceHandlerConfigModel
6+
from mxcubeweb.core.models.configmodels import ResourceHandlerConfigModel
77

8-
resource_handler_config = AdapterResourceHandlerConfigModel(
8+
resource_handler_config = ResourceHandlerConfigModel(
99
name="detector_test",
1010
url_prefix="/mxcube/api/v0.1/detectortest",
1111
attributes=["data"],

mxcubeweb/core/adapter/energy_adapter.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,9 @@
55

66
from mxcubeweb.core.adapter.actuator_adapter import ActuatorAdapter
77
from mxcubeweb.core.adapter.wavelength_adapter import WavelengthAdapter
8-
from mxcubeweb.core.models.configmodels import AdapterResourceHandlerConfigModel
8+
from mxcubeweb.core.models.configmodels import ResourceHandlerConfigModel
99

10-
resource_handler_config = AdapterResourceHandlerConfigModel(
10+
resource_handler_config = ResourceHandlerConfigModel(
1111
commands=["get_value", "set_value", "stop", "get_resolution_limits_for_energy"],
1212
attributes=["data"],
1313
)

mxcubeweb/core/adapter/motor_adapter.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,10 @@
66
from mxcubeweb.core.models.adaptermodels import (
77
FloatValueModel,
88
)
9-
from mxcubeweb.core.models.configmodels import AdapterResourceHandlerConfigModel
9+
from mxcubeweb.core.models.configmodels import ResourceHandlerConfigModel
1010
from mxcubeweb.core.util.networkutils import RateLimited
1111

12-
resource_handler_config = AdapterResourceHandlerConfigModel(
12+
resource_handler_config = ResourceHandlerConfigModel(
1313
url_prefix="/mxcube/api/v0.1/motor_test",
1414
commands=["set_value", "get_value", "stop"],
1515
attributes=["data"],

mxcubeweb/core/adapter/nstate_adapter.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,9 @@
1313
NStateModel,
1414
StrValueModel,
1515
)
16-
from mxcubeweb.core.models.configmodels import AdapterResourceHandlerConfigModel
16+
from mxcubeweb.core.models.configmodels import ResourceHandlerConfigModel
1717

18-
resource_handler_config = AdapterResourceHandlerConfigModel(
18+
resource_handler_config = ResourceHandlerConfigModel(
1919
commands=["get_value", "set_value", "stop"], attributes=["data"]
2020
)
2121

mxcubeweb/core/components/component_base.py

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,30 @@
11
import importlib
22
import logging
33

4+
from mxcubeweb.core.server.resource_handler import (
5+
ResourceHandlerFactory,
6+
)
7+
48

59
class ComponentBase:
6-
def __init__(self, app, config):
10+
def __init__(self, app, config, resource_handler_config=None):
711
self.app = app
812
self.config = config
913

14+
if resource_handler_config:
15+
cls_name = self.__class__.__name__.lower()
16+
17+
ResourceHandlerFactory.create_or_get(
18+
name=cls_name,
19+
url_prefix="/mxcube/api/v0.1/" + cls_name,
20+
handler_dict={cls_name: self},
21+
app=self.app,
22+
exports=resource_handler_config.exports,
23+
commands=resource_handler_config.commands,
24+
attributes=resource_handler_config.attributes,
25+
handler_type="component",
26+
)
27+
1028

1129
def import_component(config, package="", module=""):
1230
_module = "mxcubeweb.core"

0 commit comments

Comments
 (0)