Source code for ferrosoft.apps.emiflow.catalog.database
from ferrosoft.apps.dataimport.services.database import (
ObjectCreatingFixtureImporter,
import_json,
DATAIMPORT_CONVERTERS,
)
from ferrosoft.apps.emiflow.catalog.conversion import (
convert_catalog_files,
)
from ferrosoft.apps.emiflow.services.emissions import (
TransportChainVisitorImportCallback,
)
from ferrosoft.apps.emiflow.services.geographic import DistanceStrategyCalculator
from ferrosoft.apps.emiflow.services.visitor import GeocodingRoutingVisitor
from ferrosoft.apps.ferrobase.services.static_files import (
static_file_name,
)
from ferrosoft.apps.ferromaps.services.addresses import (
AddressRouterService,
GreatCircleDistanceRouter,
)
[docs]
def import_builtin_fixtures(language: str | None = None):
"""Import very useful and important fixtures."""
language = language or "en"
importer = ObjectCreatingFixtureImporter()
# GLEC Public EU includes a very minimal emissions catalog.
importer.load_fixtures(
convert_catalog_files(
[static_file_name("emiflow", "examples/%s/glec-public-eu.json" % language)],
"catalog.schema.json",
),
)
# GLEC Operations Extract includes transport operations extracted from GLEC Public EU.
importer.load_fixtures(
convert_catalog_files(
[
static_file_name(
"emiflow", "examples/%s/glec-operations-extract.json" % language
),
],
"operation.schema.json",
),
)
# Data import collections for various models.
import_json(
DATAIMPORT_CONVERTERS,
[static_file_name("emiflow", "examples/%s/importcollection.json" % language)],
static_file_name("dataimport", "dataimport.schema.json"),
)
[docs]
def import_emiflow_catalog(catalog: str, schema: str):
fixtures = convert_catalog_files(catalog, schema)
router = AddressRouterService.get_instance()
importer = ObjectCreatingFixtureImporter(
TransportChainVisitorImportCallback(
GeocodingRoutingVisitor(
router,
DistanceStrategyCalculator(GreatCircleDistanceRouter(), router),
)
)
)
importer.load_fixtures(fixtures)