Skip to content

filter

Demo filter strategy.

OPTIMADEFilterStrategy

Filter Strategy.

Implements strategies:

  • ("filterType", "OPTIMADE")
Source code in oteapi_optimade/strategies/filter.py
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
@dataclass
class OPTIMADEFilterStrategy:
    """Filter Strategy.

    **Implements strategies**:

    - `("filterType", "OPTIMADE")`

    """

    filter_config: OPTIMADEFilterConfig

    def initialize(self) -> OPTIMADEFilterResult:
        """Initialize strategy.

        This method will be called through the `/initialize` endpoint of the OTE-API
        Services.

        Configuration values, specifically URL query parameters, can be provided to the
        OPTIMADE resource strategy through this filter strategy.

        Workflow:

        1. Compile received information.
        2. Update session with compiled information.

        Returns:
            An update model of key/value-pairs to be stored in the
            session-specific context from services.

        """
        if self.filter_config.configuration.optimade_config:
            self.filter_config.configuration.update(
                self.filter_config.configuration.optimade_config.model_dump(
                    exclude_defaults=True,
                    exclude_unset=True,
                    exclude={"optimade_config", "downloadUrl", "mediaType"},
                )
            )

        optimade_config = self.filter_config.configuration.model_copy()

        if not optimade_config.query_parameters:
            optimade_config.query_parameters = OPTIMADEQueryParameters()

        if self.filter_config.query:
            LOGGER.debug("Setting filter from query.")
            optimade_config.query_parameters.filter = self.filter_config.query

        if self.filter_config.limit:
            LOGGER.debug("Setting page_limit from limit.")
            optimade_config.query_parameters.page_limit = self.filter_config.limit

        return OPTIMADEFilterResult(
            optimade_config=optimade_config.model_dump(
                exclude={"optimade_config", "downloadUrl", "mediaType"},
                exclude_unset=True,
                exclude_defaults=True,
            )
        )

    def get(self) -> AttrDict:
        """Execute the strategy.

        This method will be called through the strategy-specific endpoint of the
        OTE-API Services.

        Returns:
            An update model of key/value-pairs to be stored in the
            session-specific context from services.

        """
        return AttrDict()

get()

Execute the strategy.

This method will be called through the strategy-specific endpoint of the OTE-API Services.

Returns:

Type Description
AttrDict

An update model of key/value-pairs to be stored in the

AttrDict

session-specific context from services.

Source code in oteapi_optimade/strategies/filter.py
77
78
79
80
81
82
83
84
85
86
87
88
def get(self) -> AttrDict:
    """Execute the strategy.

    This method will be called through the strategy-specific endpoint of the
    OTE-API Services.

    Returns:
        An update model of key/value-pairs to be stored in the
        session-specific context from services.

    """
    return AttrDict()

initialize()

Initialize strategy.

This method will be called through the /initialize endpoint of the OTE-API Services.

Configuration values, specifically URL query parameters, can be provided to the OPTIMADE resource strategy through this filter strategy.

Workflow:

  1. Compile received information.
  2. Update session with compiled information.

Returns:

Type Description
OPTIMADEFilterResult

An update model of key/value-pairs to be stored in the

OPTIMADEFilterResult

session-specific context from services.

Source code in oteapi_optimade/strategies/filter.py
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
def initialize(self) -> OPTIMADEFilterResult:
    """Initialize strategy.

    This method will be called through the `/initialize` endpoint of the OTE-API
    Services.

    Configuration values, specifically URL query parameters, can be provided to the
    OPTIMADE resource strategy through this filter strategy.

    Workflow:

    1. Compile received information.
    2. Update session with compiled information.

    Returns:
        An update model of key/value-pairs to be stored in the
        session-specific context from services.

    """
    if self.filter_config.configuration.optimade_config:
        self.filter_config.configuration.update(
            self.filter_config.configuration.optimade_config.model_dump(
                exclude_defaults=True,
                exclude_unset=True,
                exclude={"optimade_config", "downloadUrl", "mediaType"},
            )
        )

    optimade_config = self.filter_config.configuration.model_copy()

    if not optimade_config.query_parameters:
        optimade_config.query_parameters = OPTIMADEQueryParameters()

    if self.filter_config.query:
        LOGGER.debug("Setting filter from query.")
        optimade_config.query_parameters.filter = self.filter_config.query

    if self.filter_config.limit:
        LOGGER.debug("Setting page_limit from limit.")
        optimade_config.query_parameters.page_limit = self.filter_config.limit

    return OPTIMADEFilterResult(
        optimade_config=optimade_config.model_dump(
            exclude={"optimade_config", "downloadUrl", "mediaType"},
            exclude_unset=True,
            exclude_defaults=True,
        )
    )