base import export code in admin

This commit is contained in:
David Kennedy 2024-04-22 09:49:35 -04:00
parent c169ab3214
commit c13e63ec63
No known key found for this signature in database
GPG key ID: 6528A5386E66B96B
3 changed files with 50 additions and 5 deletions

View file

@ -32,6 +32,7 @@ fred-epplib = {git = "https://github.com/cisagov/epplib.git", ref = "master"}
pyzipper="*"
tblib = "*"
django-admin-multiple-choice-list-filter = "*"
django-import-export = "*"
[dev-packages]
django-debug-toolbar = "*"

View file

@ -28,12 +28,20 @@ from django.utils.safestring import mark_safe
from django.utils.html import escape
from django.contrib.auth.forms import UserChangeForm, UsernameField
from django_admin_multiple_choice_list_filter.list_filters import MultipleChoiceListFilter
from import_export import resources
from import_export.admin import ImportExportModelAdmin
from django.utils.translation import gettext_lazy as _
logger = logging.getLogger(__name__)
class UserResource(resources.ModelResource):
class Meta:
model = models.User
class MyUserAdminForm(UserChangeForm):
"""This form utilizes the custom widget for its class's ManyToMany UIs.
@ -468,9 +476,11 @@ class UserContactInline(admin.StackedInline):
model = models.Contact
class MyUserAdmin(BaseUserAdmin):
class MyUserAdmin(BaseUserAdmin, ImportExportModelAdmin):
"""Custom user admin class to use our inlines."""
resource_classes = [UserResource]
form = MyUserAdminForm
class Meta:
@ -848,9 +858,17 @@ class WebsiteAdmin(ListHeaderAdmin):
return response
class UserDomainRoleAdmin(ListHeaderAdmin):
class UserDomainRoleResource(resources.ModelResource):
class Meta:
model = models.UserDomainRole
class UserDomainRoleAdmin(ListHeaderAdmin, ImportExportModelAdmin):
"""Custom user domain role admin class."""
resource_classes = [UserDomainRoleResource]
class Meta:
"""Contains meta information about this class"""
@ -931,9 +949,17 @@ class DomainInvitationAdmin(ListHeaderAdmin):
change_form_template = "django/admin/email_clipboard_change_form.html"
class DomainInformationAdmin(ListHeaderAdmin):
class DomainInformationResource(resources.ModelResource):
class Meta:
model = models.DomainInformation
class DomainInformationAdmin(ListHeaderAdmin, ImportExportModelAdmin):
"""Customize domain information admin class."""
resource_classes = [DomainInformationResource]
form = DomainInformationAdminForm
# Columns
@ -1060,9 +1086,17 @@ class DomainInformationAdmin(ListHeaderAdmin):
return readonly_fields # Read-only fields for analysts
class DomainRequestAdmin(ListHeaderAdmin):
class DomainRequestResource(resources.ModelResource):
class Meta:
model = models.DomainRequest
class DomainRequestAdmin(ListHeaderAdmin, ImportExportModelAdmin):
"""Custom domain requests admin class."""
resource_classes = [DomainRequestResource]
form = DomainRequestAdminForm
change_form_template = "django/admin/domain_request_change_form.html"
@ -1590,9 +1624,17 @@ class DomainInformationInline(admin.StackedInline):
return DomainInformationAdmin.get_readonly_fields(self, request, obj=None)
class DomainAdmin(ListHeaderAdmin):
class DomainResource(resources.ModelResource):
class Meta:
model = models.Domain
class DomainAdmin(ListHeaderAdmin, ImportExportModelAdmin):
"""Custom domain admin class to add extra buttons."""
resource_classes = [DomainResource]
class ElectionOfficeFilter(admin.SimpleListFilter):
"""Define a custom filter for is_election_board"""

View file

@ -148,6 +148,8 @@ INSTALLED_APPS = [
"corsheaders",
# library for multiple choice filters in django admin
"django_admin_multiple_choice_list_filter",
# library for export and import of data
'import_export',
]
# Middleware are routines for processing web requests.