Import mission profiles and better format text fields
This commit is contained in:
@@ -1,5 +1,39 @@
|
||||
from django.contrib import admin
|
||||
from django.utils.safestring import SafeText
|
||||
|
||||
class MissionProfileAdmin(admin.ModelAdmin):
|
||||
list_display = ("mtype", "mnum",)
|
||||
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",)
|
||||
|
||||
Reference in New Issue
Block a user