Source code for ferrosoft.apps.emiflow.views.index

from typing import List

from django.contrib.auth.decorators import login_required
from django.contrib.auth.mixins import LoginRequiredMixin
from django.http import HttpResponse
from django.shortcuts import render
from django.utils.translation import gettext_lazy as _
from django.views.generic import TemplateView

from ferrosoft.apps.emiflow.services.tonnage import TonnageService
from ferrosoft.apps.ferrobase.apps import MenuItem, SettingsMenuRegistry
from ferrosoft.apps.ferrobase.views import PlatformActivityMixin
from ferrosoft.decimal import zero

AREA_CARDS: List[MenuItem] = [
    MenuItem(
        display_name=_("Transports"),
        view_name="emiflow:transportchain_index",
        icon="emiflow/icons/truck.webp",
        permissions=["emiflow.view_transportchain"],
    ),
    MenuItem(
        display_name=_("Treatments"),
        view_name="emiflow:treatment_index",
        icon="emiflow/icons/pcf.webp",
        permissions=["emiflow.view_treatment"],
    ),
    MenuItem(
        display_name=_("Reporting"),
        view_name="emiflow:report_index",
        icon="emiflow/icons/analysis.webp",
        permissions=["emiflow.view_report"],
    ),
    MenuItem(
        display_name=_("File Import"),
        view_name="emiflow:file_import_index",
        icon="emiflow/icons/upload.webp",
        permissions=["dataimport.view_importjob"],
    ),
]


[docs] def empty(request, *args, **kwargs): return HttpResponse("Nothing to see here.")
[docs] class EmiflowIndexView(LoginRequiredMixin, PlatformActivityMixin, TemplateView): template_name = "emiflow/index.html" activity_title = _("Emiflow")
[docs] def get_context_data(self, **kwargs): return super().get_context_data(**kwargs) | { "area_cards": SettingsMenuRegistry.get_menu(self.request, AREA_CARDS), "settings_menu": SettingsMenuRegistry.get_menu(self.request), }
[docs] @login_required def emiflow_stats(request): tonnage_service = TonnageService.get_instance() current_tenant = request.current_tenant stats = tonnage_service.get_org_stats(current_tenant.organization) return render( request, "emiflow/index/stats.html", context={ "stats": stats, "tonnage_unlimited": stats.tonnage_limit == zero, }, )