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