Skip to content

Commit

Permalink
add attr to set custom insert pos for site column in changelists
Browse files Browse the repository at this point in the history
  • Loading branch information
erikvw committed Aug 28, 2024
1 parent 6ffed90 commit 51f54cd
Showing 1 changed file with 4 additions and 2 deletions.
6 changes: 4 additions & 2 deletions edc_sites/admin/site_model_admin_mixin.py
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ class SiteModelAdminMixin:

limit_related_to_current_country: list[str] = None
limit_related_to_current_site: list[str] = None
site_list_display_insert_pos: int = 1

def user_may_view_other_sites(self, request) -> bool:
return sites.user_may_view_other_sites(request)
Expand Down Expand Up @@ -87,17 +88,18 @@ def get_list_filter(self, request) -> tuple[str | Type[SimpleListFilter], ...]:

def get_list_display(self, request) -> tuple[str]:
"""Insert `site` after the first column"""
pos = self.site_list_display_insert_pos
list_display = super().get_list_display(request)
if (
self.user_may_view_other_sites(request)
or self.has_viewallsites_permission(request)
) and "site" not in list_display:
list_display = (list_display[0],) + (self.site_code,) + tuple(list_display[1:])
list_display = list_display[:pos] + (self.site_code,) + list_display[pos:]
elif "site" in list_display:
list_display = tuple(
[x for x in list_display if x not in ["site", self.site_code]]
)
list_display = (list_display[0],) + (self.site_code,) + list_display[1:]
list_display = list_display[:pos] + (self.site_code,) + list_display[pos:]
return list_display

def get_queryset(self, request) -> QuerySet:
Expand Down

0 comments on commit 51f54cd

Please sign in to comment.