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,
},
)