Files
catops/cntmanage/flightslot/admins/mission_adm.py
2025-11-18 23:28:50 +01:00

40 lines
1.4 KiB
Python

from django.contrib import admin
from django.utils.safestring import SafeText
from typing import Any
from import_export import fields
from import_export.admin import ImportMixin
from import_export.resources import ModelResource
from ..models.missions import MissionProfile
from django_admin_action_forms import AdminActionFormsMixin
from datetime import timedelta
# Resource Class for Student data import
class MissionProfileResource(ModelResource):
mtype = fields.Field(attribute="mtype", column_name="mtype")
mnum = fields.Field(attribute="mnum", column_name="mnum")
duration = fields.Field(attribute="duration", column_name="duration")
# Cleanup fields before entering
def before_import_row(self, row: dict[str, str | Any], **kwargs) -> None:
row["mtype"] = SafeText(row["mtype"].upper().strip())
row["mnum"] = SafeText(row["mnum"].upper().strip())
h, m, _ = row["duration"].split(":")
row["duration"] = timedelta(hours=float(h), minutes=float(m))
return super().before_import_row(row, **kwargs)
class Meta:
model = MissionProfile
skip_unchanged = True
report_skipped = True
fields = ("mtype", "mnum", "duration")
import_id_fields = ("mtype", "mnum")
class MissionProfileAdmin(ImportMixin, AdminActionFormsMixin, admin.ModelAdmin):
list_display = ("mtype", "mnum", "notes")
list_filter = ("mtype",)