Source code for ferrosoft.apps.emiflow.apps
"""Django application configuration for the emiflow app.
Wires up settings-menu entries (under the *Emissions* category) and
hooks emiflow updater into ferrobase_update management command.
"""
from django.apps import AppConfig
from django.utils.translation import gettext_lazy as _
from ferrosoft.apps.ferrobase.apps import MenuItem
[docs]
class EmiflowConfig(AppConfig):
"""Django AppConfig for the emiflow application.
Registers the emiflow settings menu items with the shared
:class:`~ferrosoft.apps.ferrobase.apps.SettingsMenuRegistry` and
hooks emiflow updater into ferrobase_update management command.
"""
default_auto_field = "django.db.models.BigAutoField"
name = "ferrosoft.apps.emiflow"
verbose_name = _("Emiflow")
#: Menu items contributed to the *Emissions* category of the settings
#: navigation. Each item is gated by the listed model permissions.
SETTINGS_MENU = [
MenuItem(
category_name=_("Emissions"),
display_name=_("Emitters"),
permissions=["ferrobase.view_material"],
view_name="emiflow:emitter_index",
),
MenuItem(
category_name=_("Emissions"),
display_name=_("Transport Defaults"),
permissions=["emiflow.view_transportchaindefaults"],
view_name="emiflow:settings_transport_defaults",
),
MenuItem(
category_name=_("Emissions"),
display_name=_("Lifecycle Categories"),
permissions=["emiflow.view_lifecyclecategory"],
view_name="emiflow:lifecyclecategory_index",
),
MenuItem(
category_name=_("Emissions"),
display_name=_("Energy Carriers"),
permissions=["emiflow.view_energycarrier"],
view_name="emiflow:energycarrier_index",
),
]
[docs]
def ready(self):
"""Hook the emiflow updater into ferrobase_update and
contribute settings menu entries."""
from ferrosoft.apps.emiflow.services import update
from ferrosoft.apps.ferrobase.apps import SettingsMenuRegistry
update.init()
SettingsMenuRegistry.add_items(*self.SETTINGS_MENU)