mirror of
https://github.com/cisagov/manage.get.gov.git
synced 2025-07-25 20:18:38 +02:00
Fixe some linting issues / comments
This commit is contained in:
parent
1371837103
commit
ed26035763
2 changed files with 33 additions and 31 deletions
|
@ -4,29 +4,26 @@ from django.contrib.auth.admin import UserAdmin as BaseUserAdmin
|
|||
from django.contrib.contenttypes.models import ContentType
|
||||
from django.http.response import HttpResponseRedirect
|
||||
from django.urls import reverse
|
||||
from registrar.models.utility.admin_form_order_helper import AdminFormOrderHelper, SortingDictInterface # noqa
|
||||
from registrar.models.utility.admin_form_order_helper import AdminFormOrderHelper, SortingDict
|
||||
# Split up for the linter
|
||||
from registrar.models.utility.admin_form_order_helper import SortingDict
|
||||
from . import models
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
# The linter does not like the length of SortingDictInterface, so these are split here
|
||||
audited_admin_item_names = ["submitter", "authorizing_official",
|
||||
"investigator", "creator", "user"]
|
||||
audited_admin_orderby_names = ['first_name', 'last_name']
|
||||
|
||||
special_audited_admin_item_names = ["domain", "requested_domain"]
|
||||
special_audited_admin_orderby_names = ["name"]
|
||||
# Used to keep track of how we want to order_by certain FKs
|
||||
foreignkey_orderby_dict: list[SortingDictInterface] = [
|
||||
foreignkey_orderby_dict: list[SortingDict] = [
|
||||
# foreign_key - order_by
|
||||
SortingDictInterface(
|
||||
audited_admin_item_names,
|
||||
audited_admin_orderby_names
|
||||
).sorting_dict,
|
||||
# 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'
|
||||
SortingDictInterface(
|
||||
special_audited_admin_item_names,
|
||||
special_audited_admin_orderby_names
|
||||
).sorting_dict
|
||||
SortingDict(
|
||||
["domain", "requested_domain"],
|
||||
["name"]
|
||||
)
|
||||
]
|
||||
|
||||
|
||||
|
|
|
@ -5,16 +5,14 @@ from django.forms import ModelChoiceField
|
|||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
class SortingDictInterface:
|
||||
_model_list: Dict[type, type] = {}
|
||||
_sort_list: list[type] = []
|
||||
sorting_dict: Dict[type, type] = {}
|
||||
class SortingDict:
|
||||
_sorting_dict: Dict[type, type] = {}
|
||||
|
||||
# _model_list and _sort_list can be
|
||||
# any length, and will be called multiple times.
|
||||
# We want the perf advantage of a dictionary,
|
||||
# while making creating new SortingDictInterface
|
||||
# items pretty straight forward and easy (aka as a list)
|
||||
# model_list can be will be called multiple times.
|
||||
# Not super necessary, but it'd be nice
|
||||
# to have the perf advantage of a dictionary,
|
||||
# while minimizing typing when
|
||||
# adding a new SortingDict (input as a list)
|
||||
def convert_list_to_dict(self, value_list):
|
||||
dictionary: Dict[type, type] = {}
|
||||
for item in value_list:
|
||||
|
@ -22,30 +20,37 @@ class SortingDictInterface:
|
|||
return dictionary
|
||||
|
||||
def __init__(self, model_list, sort_list):
|
||||
self.sorting_dict = {
|
||||
self._sorting_dict = {
|
||||
"dropDownSelected": self.convert_list_to_dict(model_list),
|
||||
"sortBy": sort_list
|
||||
}
|
||||
|
||||
def get_dict(self):
|
||||
# This should never happen so we need to log this
|
||||
if self._sorting_dict is None:
|
||||
raise ValueError("_sorting_dict was None")
|
||||
return self._sorting_dict
|
||||
|
||||
|
||||
class AdminFormOrderHelper():
|
||||
"""A helper class to order a dropdown field in Django Admin,
|
||||
takes the fields you want to order by as an array"""
|
||||
|
||||
# Used to keep track of how we want to order_by certain FKs
|
||||
_sorting_dict: list[SortingDictInterface] = []
|
||||
_sorting_list: list[SortingDict] = []
|
||||
|
||||
def __init__(self, sort):
|
||||
self._sorting_dict = sort
|
||||
self._sorting_list = sort
|
||||
|
||||
def get_ordered_form_field(self, form_field, db_field) -> (ModelChoiceField | None):
|
||||
"""Orders the queryset for a ModelChoiceField
|
||||
based on the order_by_dict dictionary"""
|
||||
_order_by_list = []
|
||||
|
||||
for item in self._sorting_dict:
|
||||
drop_down_selected = item["dropDownSelected"]
|
||||
sort_by = item["sortBy"]
|
||||
for item in self._sorting_list:
|
||||
item_dict = item.get_dict()
|
||||
drop_down_selected = item_dict.get("dropDownSelected")
|
||||
sort_by = item_dict.get("sortBy")
|
||||
|
||||
if db_field.name in drop_down_selected:
|
||||
_order_by_list = sort_by
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue