Skip to content

Commit

Permalink
Merge pull request #274 from ral-facilities/expands-search-api-structure
Browse files Browse the repository at this point in the history
Search API Structure
  • Loading branch information
MRichards99 authored Nov 19, 2021
2 parents 1f84b8e + a2de545 commit 14dfc2a
Show file tree
Hide file tree
Showing 88 changed files with 583 additions and 166 deletions.
5 changes: 3 additions & 2 deletions .flake8
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ per-file-ignores =
test/*: S101
util/icat_db_generator.py: S311
datagateway_api/wsgi.py:E402,F401
datagateway_api/common/database/models.py: N815,A003
datagateway_api/common/icat/filters.py: C901
datagateway_api/src/datagateway_api/database/models.py: N815,A003
datagateway_api/src/datagateway_api/icat/filters.py: C901
datagateway_api/src/search_api/models.py: B950
enable-extensions=G
8 changes: 4 additions & 4 deletions datagateway_api/src/api_start_utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,10 @@
from flask_restful import Api
from flask_swagger_ui import get_swaggerui_blueprint

from datagateway_api.common.backends import create_backend
from datagateway_api.common.config import APIConfigOptions, config
from datagateway_api.common.database.helpers import db
from datagateway_api.common.icat.icat_client_pool import create_client_pool
from datagateway_api.src.common.config import APIConfigOptions, config
from datagateway_api.src.datagateway_api.backends import create_backend
from datagateway_api.src.datagateway_api.database.helpers import db
from datagateway_api.src.datagateway_api.icat.icat_client_pool import create_client_pool
from datagateway_api.src.resources.entities.entity_endpoint import (
get_count_endpoint,
get_endpoint,
Expand Down
File renamed without changes.
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ class APIConfigOptions(Enum):


class Config(object):
def __init__(self, path=Path(__file__).parent.parent / "config.json"):
def __init__(self, path=Path(__file__).parent.parent.parent / "config.json"):
self.path = path
with open(self.path) as target:
self._config = json.load(target)
Expand Down
File renamed without changes.
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
from dateutil.parser import parse
from icat import helper

from datagateway_api.common.exceptions import BadRequestError
from datagateway_api.src.common.exceptions import BadRequestError


class DateHandler:
Expand Down
File renamed without changes.
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
from abc import ABC, abstractmethod
import logging

from datagateway_api.common.exceptions import BadRequestError, FilterError
from datagateway_api.src.common.exceptions import BadRequestError, FilterError

log = logging.getLogger()

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,16 +8,16 @@
from flask_restful import reqparse
from sqlalchemy.exc import IntegrityError

from datagateway_api.common.database import models
from datagateway_api.common.date_handler import DateHandler
from datagateway_api.common.exceptions import (
from datagateway_api.src.common.date_handler import DateHandler
from datagateway_api.src.common.exceptions import (
ApiError,
AuthenticationError,
BadRequestError,
FilterError,
MissingCredentialsError,
)
from datagateway_api.common.query_filter_factory import QueryFilterFactory
from datagateway_api.src.datagateway_api.database import models
from datagateway_api.src.datagateway_api.query_filter_factory import QueryFilterFactory
from datagateway_api.src.resources.entities.entity_endpoint_dict import endpoints

log = logging.getLogger()
Expand Down Expand Up @@ -115,7 +115,7 @@ def get_entity_object_from_name(entity_name):
:param entity_name: Name of the entity to fetch a version from this model
:type entity_name: :class:`str`
:return: Object of the entity requested (e.g.
:class:`datagateway_api.common.database.models.INVESTIGATIONINSTRUMENT`)
:class:`.datagateway_api.database.models.INVESTIGATIONINSTRUMENT`)
:raises: KeyError: If an entity model cannot be found as a class in this model
"""
try:
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import logging.config
from pathlib import Path

from datagateway_api.common.config import APIConfigOptions, config
from datagateway_api.src.common.config import APIConfigOptions, config

LOG_FILE_NAME = Path(config.get_config_value(APIConfigOptions.LOG_LOCATION))
logger_config = {
Expand Down
File renamed without changes.
File renamed without changes.
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import sys

from datagateway_api.common.database.backend import DatabaseBackend
from datagateway_api.common.icat.backend import PythonICATBackend
from datagateway_api.src.datagateway_api.database.backend import DatabaseBackend
from datagateway_api.src.datagateway_api.icat.backend import PythonICATBackend


def create_backend(backend_type):
Expand Down
File renamed without changes.
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,14 @@
from sqlalchemy import inspect
from sqlalchemy.exc import SQLAlchemyError

from datagateway_api.common.backend import Backend
from datagateway_api.common.constants import Constants
from datagateway_api.common.database.helpers import (
from datagateway_api.src.common.constants import Constants
from datagateway_api.src.common.exceptions import AuthenticationError, DatabaseError
from datagateway_api.src.common.helpers import (
get_entity_object_from_name,
queries_records,
)
from datagateway_api.src.datagateway_api.backend import Backend
from datagateway_api.src.datagateway_api.database.helpers import (
create_rows_from_json,
db,
delete_row_by_id,
Expand All @@ -24,9 +29,7 @@
requires_session_id,
update_row_from_id,
)
from datagateway_api.common.database.models import SESSION
from datagateway_api.common.exceptions import AuthenticationError, DatabaseError
from datagateway_api.common.helpers import get_entity_object_from_name, queries_records
from datagateway_api.src.datagateway_api.database.models import SESSION


log = logging.getLogger()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,16 +2,16 @@

from sqlalchemy import asc, desc

from datagateway_api.common.exceptions import FilterError, MultipleIncludeError
from datagateway_api.common.filters import (
from datagateway_api.src.common.exceptions import FilterError, MultipleIncludeError
from datagateway_api.src.common.filters import (
DistinctFieldFilter,
IncludeFilter,
LimitFilter,
OrderFilter,
SkipFilter,
WhereFilter,
)
from datagateway_api.common.helpers import get_entity_object_from_name
from datagateway_api.src.common.helpers import get_entity_object_from_name


log = logging.getLogger()
Expand Down Expand Up @@ -73,7 +73,7 @@ def add_query_join(self, query):
filter
:param query: The query to have filters applied to
:type query: :class:`datagateway_api.common.database.helpers.[QUERY]`
:type query: :class:`.common.datagateway_api.database.helpers.[QUERY]`
"""

if self.related_related_field:
Expand All @@ -92,7 +92,7 @@ def get_entity_model_for_filter(self, query):
variables of this class
:param query: The query to have filters applied to
:type query: :class:`datagateway_api.common.database.helpers.[QUERY]`
:type query: :class:`.common.datagateway_api.database.helpers.[QUERY]`
:return: Entity model of the field (usually the field relating to the endpoint
the request is coming from)
"""
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,26 +6,26 @@
from flask_sqlalchemy import SQLAlchemy
from sqlalchemy.orm import aliased

from datagateway_api.common.database.filters import (
from datagateway_api.src.common.exceptions import (
AuthenticationError,
BadRequestError,
MissingRecordError,
)
from datagateway_api.src.common.helpers import map_distinct_attributes_to_results
from datagateway_api.src.datagateway_api.database.filters import (
DatabaseDistinctFieldFilter,
DatabaseIncludeFilter as IncludeFilter,
DatabaseWhereFilter as WhereFilter,
)
from datagateway_api.common.database.models import (
from datagateway_api.src.datagateway_api.database.models import (
FACILITY,
FACILITYCYCLE,
INSTRUMENT,
INVESTIGATION,
INVESTIGATIONINSTRUMENT,
SESSION,
)
from datagateway_api.common.exceptions import (
AuthenticationError,
BadRequestError,
MissingRecordError,
)
from datagateway_api.common.filter_order_handler import FilterOrderHandler
from datagateway_api.common.helpers import map_distinct_attributes_to_results
from datagateway_api.src.datagateway_api.filter_order_handler import FilterOrderHandler


log = logging.getLogger()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,8 @@
from sqlalchemy.orm import relationship
from sqlalchemy.orm.collections import InstrumentedList

from datagateway_api.common.date_handler import DateHandler
from datagateway_api.common.exceptions import DatabaseError, FilterError
from datagateway_api.src.common.date_handler import DateHandler
from datagateway_api.src.common.exceptions import DatabaseError, FilterError

Base = declarative_base()

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import logging

from datagateway_api.common.icat.filters import (
from datagateway_api.src.datagateway_api.icat.filters import (
PythonICATLimitFilter,
PythonICATOrderFilter,
PythonICATSkipFilter,
Expand Down
Empty file.
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,11 @@

from icat.exception import ICATError, ICATSessionError

from datagateway_api.common.backend import Backend
from datagateway_api.common.constants import Constants
from datagateway_api.common.exceptions import AuthenticationError, PythonICATError
from datagateway_api.common.helpers import queries_records
from datagateway_api.common.icat.helpers import (
from datagateway_api.src.common.constants import Constants
from datagateway_api.src.common.exceptions import AuthenticationError, PythonICATError
from datagateway_api.src.common.helpers import queries_records
from datagateway_api.src.datagateway_api.backend import Backend
from datagateway_api.src.datagateway_api.icat.helpers import (
create_entities,
delete_entity_by_id,
get_cached_client,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import logging

from datagateway_api.common.config import config
from datagateway_api.common.exceptions import FilterError
from datagateway_api.common.filters import (
from datagateway_api.src.common.config import config
from datagateway_api.src.common.exceptions import FilterError
from datagateway_api.src.common.filters import (
DistinctFieldFilter,
IncludeFilter,
LimitFilter,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,21 +14,20 @@
ICATValidationError,
)

from datagateway_api.common.date_handler import DateHandler
from datagateway_api.common.exceptions import (
from datagateway_api.src.common.date_handler import DateHandler
from datagateway_api.src.common.exceptions import (
AuthenticationError,
BadRequestError,
MissingRecordError,
PythonICATError,
)
from datagateway_api.common.filter_order_handler import FilterOrderHandler
from datagateway_api.common.icat.filters import (
from datagateway_api.src.datagateway_api.filter_order_handler import FilterOrderHandler
from datagateway_api.src.datagateway_api.icat.filters import (
PythonICATLimitFilter,
PythonICATWhereFilter,
)
from datagateway_api.common.icat.lru_cache import ExtendedLRUCache
from datagateway_api.common.icat.query import ICATQuery

from datagateway_api.src.datagateway_api.icat.lru_cache import ExtendedLRUCache
from datagateway_api.src.datagateway_api.icat.query import ICATQuery

log = logging.getLogger()

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
from icat.client import Client
from object_pool import ObjectPool

from datagateway_api.common.config import APIConfigOptions, config
from datagateway_api.src.common.config import APIConfigOptions, config

log = logging.getLogger()

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

from cachetools.lru import LRUCache

from datagateway_api.common.config import APIConfigOptions, config
from datagateway_api.src.common.config import APIConfigOptions, config

log = logging.getLogger()

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,9 @@
from icat.exception import ICATInternalError, ICATValidationError
from icat.query import Query

from datagateway_api.common.date_handler import DateHandler
from datagateway_api.common.exceptions import PythonICATError
from datagateway_api.common.helpers import map_distinct_attributes_to_results
from datagateway_api.src.common.date_handler import DateHandler
from datagateway_api.src.common.exceptions import PythonICATError
from datagateway_api.src.common.helpers import map_distinct_attributes_to_results


log = logging.getLogger()
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import logging

from datagateway_api.common.config import APIConfigOptions, config
from datagateway_api.common.exceptions import (
from datagateway_api.src.common.config import APIConfigOptions, config
from datagateway_api.src.common.exceptions import (
ApiError,
FilterError,
)
Expand Down Expand Up @@ -29,7 +29,7 @@ def get_query_filter(request_filter):

backend_type = config.get_config_value(APIConfigOptions.BACKEND)
if backend_type == "db":
from datagateway_api.common.database.filters import (
from datagateway_api.src.datagateway_api.database.filters import (
DatabaseDistinctFieldFilter as DistinctFieldFilter,
DatabaseIncludeFilter as IncludeFilter,
DatabaseLimitFilter as LimitFilter,
Expand All @@ -38,7 +38,7 @@ def get_query_filter(request_filter):
DatabaseWhereFilter as WhereFilter,
)
elif backend_type == "python_icat":
from datagateway_api.common.icat.filters import (
from datagateway_api.src.datagateway_api.icat.filters import (
PythonICATDistinctFieldFilter as DistinctFieldFilter,
PythonICATIncludeFilter as IncludeFilter,
PythonICATLimitFilter as LimitFilter,
Expand Down
4 changes: 2 additions & 2 deletions datagateway_api/src/main.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,14 @@

from flask import Flask

from datagateway_api.common.config import APIConfigOptions, config
from datagateway_api.common.logger_setup import setup_logger
from datagateway_api.src.api_start_utils import (
create_api_endpoints,
create_app_infrastructure,
create_openapi_endpoint,
openapi_config,
)
from datagateway_api.src.common.config import APIConfigOptions, config
from datagateway_api.src.common.logger_setup import setup_logger

setup_logger()
log = logging.getLogger()
Expand Down
2 changes: 1 addition & 1 deletion datagateway_api/src/resources/entities/entity_endpoint.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
from flask import request
from flask_restful import Resource

from datagateway_api.common.helpers import (
from datagateway_api.src.common.helpers import (
get_filters_from_query_string,
get_session_id_from_auth_header,
)
Expand Down
2 changes: 1 addition & 1 deletion datagateway_api/src/resources/entities/entity_map.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

from sqlalchemy.inspection import inspect

from datagateway_api.common.helpers import get_entity_object_from_name
from datagateway_api.src.common.helpers import get_entity_object_from_name
from datagateway_api.src.resources.entities.entity_endpoint_dict import endpoints


Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@
from flask import request
from flask_restful import Resource

from datagateway_api.common.exceptions import AuthenticationError
from datagateway_api.common.helpers import get_session_id_from_auth_header
from datagateway_api.src.common.exceptions import AuthenticationError
from datagateway_api.src.common.helpers import get_session_id_from_auth_header


log = logging.getLogger()
Expand Down
Loading

0 comments on commit 14dfc2a

Please sign in to comment.