diff --git a/common/backends.py b/common/backends.py index fa272352..cb8b43df 100644 --- a/common/backends.py +++ b/common/backends.py @@ -1,5 +1,5 @@ from common.database.backend import DatabaseBackend -from common.python_icat_backend import PythonICATBackend +from common.icat.backend import PythonICATBackend from common.backend import Backend from common.config import config import sys diff --git a/common/database/helpers.py b/common/database/helpers.py index 72951c2c..00899d35 100644 --- a/common/database/helpers.py +++ b/common/database/helpers.py @@ -20,7 +20,9 @@ DatabaseOrderFilter as OrderFilter, DatabaseSkipFilter as SkipFilter, DatabaseLimitFilter as LimitFilter, \ DatabaseIncludeFilter as IncludeFilter elif backend_type == "python_icat": - pass + from common.icat.filters import PythonICATWhereFilter as WhereFilter, PythonICATDistinctFieldFilter as DistinctFieldFilter, \ + PythonICATOrderFilter as OrderFilter, PythonICATSkipFilter as SkipFilter, PythonICATLimitFilter as LimitFilter, \ + PythonICATIncludeFilter as IncludeFilter else: # TODO - Check this works raise ApiError("Cannot select which implementation of filters to import, check the config file has a valid backend type") diff --git a/common/python_icat_backend.py b/common/icat/backend.py similarity index 93% rename from common/python_icat_backend.py rename to common/icat/backend.py index 6a3b2a1f..7ce4042e 100644 --- a/common/python_icat_backend.py +++ b/common/icat/backend.py @@ -5,9 +5,9 @@ from common.backend import Backend from common.helpers import queries_records -from common.python_icat_helpers import requires_session_id, get_session_details_helper, logout_icat_client, \ - refresh_client_session, get_entity_by_id, update_entity_by_id, \ - delete_entity_by_id, get_entity_with_filters +from common.icat.helpers import requires_session_id, get_session_details_helper, logout_icat_client, \ + refresh_client_session, get_entity_by_id, update_entity_by_id, delete_entity_by_id, get_entity_with_filters + from common.config import config from common.exceptions import AuthenticationError from common.models.db_models import SESSION diff --git a/common/icat/filters.py b/common/icat/filters.py new file mode 100644 index 00000000..9562082f --- /dev/null +++ b/common/icat/filters.py @@ -0,0 +1,49 @@ +from common.filters import WhereFilter, DistinctFieldFilter, OrderFilter, SkipFilter, LimitFilter, \ + IncludeFilter + +class PythonICATWhereFilter(WhereFilter): + def __init__(self, field, value, operation): + super().__init__(field, value, operation) + + def apply_filter(self, query): + pass + + +class PythonICATDistinctFieldFilter(DistinctFieldFilter): + def __init__(self, fields): + super().__init__(fields) + + def apply_filter(self, query): + pass + + +class PythonICATOrderFilter(OrderFilter): + def __init__(self, field, direction): + super().__init__(field, direction) + + def apply_filter(self, query): + pass + + +class PythonICATSkipFilter(SkipFilter): + def __init__(self, skip_value): + super().__init__(skip_value) + + def apply_filter(self, query): + pass + + +class PythonICATLimitFilter(LimitFilter): + def __init__(self, limit_value): + super().__init__(limit_value) + + def apply_filter(self, query): + pass + + +class PythonICATIncludeFilter(IncludeFilter): + def __init__(self, included_filters): + super().__init__(included_filters) + + def apply_filter(self, query): + pass diff --git a/common/python_icat_helpers.py b/common/icat/helpers.py similarity index 100% rename from common/python_icat_helpers.py rename to common/icat/helpers.py diff --git a/test/test_database_helpers.py b/test/test_database_helpers.py index 0fd6f3ee..7ceedc55 100644 --- a/test/test_database_helpers.py +++ b/test/test_database_helpers.py @@ -9,7 +9,10 @@ DatabaseOrderFilter as OrderFilter, DatabaseSkipFilter as SkipFilter, DatabaseLimitFilter as LimitFilter, \ DatabaseIncludeFilter as IncludeFilter elif backend_type == "python_icat": - pass + # TODO - Adapt these tests for the ICAT implementation of filters + from common.icat.filters import PythonICATWhereFilter as WhereFilter, PythonICATDistinctFieldFilter as DistinctFieldFilter, \ + PythonICATOrderFilter as OrderFilter, PythonICATSkipFilter as SkipFilter, PythonICATLimitFilter as LimitFilter, \ + PythonICATIncludeFilter as IncludeFilter else: # TODO - Check this works raise ApiError("Cannot select which implementation of filters to import, check the config file has a valid backend type")