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)