mirror of
https://github.com/cisagov/manage.get.gov.git
synced 2025-05-29 17:00:02 +02:00
AdminSortFields class
This commit is contained in:
parent
0978c91450
commit
74571069c3
2 changed files with 30 additions and 28 deletions
|
@ -4,29 +4,13 @@ from django.contrib.auth.admin import UserAdmin as BaseUserAdmin
|
||||||
from django.contrib.contenttypes.models import ContentType
|
from django.contrib.contenttypes.models import ContentType
|
||||||
from django.http.response import HttpResponseRedirect
|
from django.http.response import HttpResponseRedirect
|
||||||
from django.urls import reverse
|
from django.urls import reverse
|
||||||
from registrar.models.utility.admin_form_order_helper import (
|
from registrar.models.utility.admin_sort_fields import AdminSortFields
|
||||||
AdminFormOrderHelper,
|
|
||||||
SortingDict,
|
|
||||||
)
|
|
||||||
from . import models
|
from . import models
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
# Used to keep track of how we want to order_by certain FKs
|
|
||||||
foreignkey_orderby_dict: list[SortingDict] = [
|
|
||||||
# foreign_key - order_by
|
|
||||||
# Handles fields that are sorted by 'first_name / last_name
|
|
||||||
SortingDict(
|
|
||||||
["submitter", "authorizing_official", "investigator", "creator", "user"],
|
|
||||||
["first_name", "last_name"],
|
|
||||||
),
|
|
||||||
# Handles fields that are sorted by 'name'
|
|
||||||
SortingDict(["domain", "requested_domain"], ["name"]),
|
|
||||||
SortingDict(["domain_application"], ["requested_domain__name"]),
|
|
||||||
]
|
|
||||||
|
|
||||||
|
class AuditedAdmin(admin.ModelAdmin, AdminSortFields):
|
||||||
class AuditedAdmin(admin.ModelAdmin):
|
|
||||||
"""Custom admin to make auditing easier."""
|
"""Custom admin to make auditing easier."""
|
||||||
|
|
||||||
def history_view(self, request, object_id, extra_context=None):
|
def history_view(self, request, object_id, extra_context=None):
|
||||||
|
@ -42,7 +26,7 @@ class AuditedAdmin(admin.ModelAdmin):
|
||||||
def formfield_for_foreignkey(self, db_field, request, **kwargs):
|
def formfield_for_foreignkey(self, db_field, request, **kwargs):
|
||||||
"""Used to sort dropdown fields alphabetically but can be expanded upon"""
|
"""Used to sort dropdown fields alphabetically but can be expanded upon"""
|
||||||
form_field = super().formfield_for_foreignkey(db_field, request, **kwargs)
|
form_field = super().formfield_for_foreignkey(db_field, request, **kwargs)
|
||||||
return form_field_order_helper(form_field, db_field)
|
return self.form_field_order_helper(form_field, db_field)
|
||||||
|
|
||||||
|
|
||||||
class ListHeaderAdmin(AuditedAdmin):
|
class ListHeaderAdmin(AuditedAdmin):
|
||||||
|
@ -323,15 +307,6 @@ class DomainApplicationAdmin(ListHeaderAdmin):
|
||||||
return self.readonly_fields
|
return self.readonly_fields
|
||||||
|
|
||||||
|
|
||||||
# For readability purposes, but can be replaced with a one liner
|
|
||||||
def form_field_order_helper(form_field, db_field):
|
|
||||||
"""A shorthand for AdminFormOrderHelper(foreignkey_orderby_dict)
|
|
||||||
.get_ordered_form_field(form_field, db_field)"""
|
|
||||||
|
|
||||||
form = AdminFormOrderHelper(foreignkey_orderby_dict)
|
|
||||||
return form.get_ordered_form_field(form_field, db_field)
|
|
||||||
|
|
||||||
|
|
||||||
admin.site.register(models.User, MyUserAdmin)
|
admin.site.register(models.User, MyUserAdmin)
|
||||||
admin.site.register(models.UserDomainRole, AuditedAdmin)
|
admin.site.register(models.UserDomainRole, AuditedAdmin)
|
||||||
admin.site.register(models.Contact, ContactAdmin)
|
admin.site.register(models.Contact, ContactAdmin)
|
||||||
|
|
27
src/registrar/models/utility/admin_sort_fields.py
Normal file
27
src/registrar/models/utility/admin_sort_fields.py
Normal file
|
@ -0,0 +1,27 @@
|
||||||
|
from registrar.models.utility.admin_form_order_helper import (
|
||||||
|
AdminFormOrderHelper,
|
||||||
|
SortingDict,
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
class AdminSortFields:
|
||||||
|
# Used to keep track of how we want to order_by certain FKs
|
||||||
|
foreignkey_orderby_dict: list[SortingDict] = [
|
||||||
|
# foreign_key - order_by
|
||||||
|
# Handles fields that are sorted by 'first_name / last_name
|
||||||
|
SortingDict(
|
||||||
|
["submitter", "authorizing_official", "investigator", "creator", "user"],
|
||||||
|
["first_name", "last_name"],
|
||||||
|
),
|
||||||
|
# Handles fields that are sorted by 'name'
|
||||||
|
SortingDict(["domain", "requested_domain"], ["name"]),
|
||||||
|
SortingDict(["domain_application"], ["requested_domain__name"]),
|
||||||
|
]
|
||||||
|
|
||||||
|
# For readability purposes, but can be replaced with a one liner
|
||||||
|
def form_field_order_helper(self, form_field, db_field):
|
||||||
|
"""A shorthand for AdminFormOrderHelper(foreignkey_orderby_dict)
|
||||||
|
.get_ordered_form_field(form_field, db_field)"""
|
||||||
|
|
||||||
|
form = AdminFormOrderHelper(self.foreignkey_orderby_dict)
|
||||||
|
return form.get_ordered_form_field(form_field, db_field)
|
Loading…
Add table
Add a link
Reference in a new issue