feat: add Django admin configurations and tests for common app

This commit is contained in:
Karl Determe 2026-09-24 11:03:47 +02:00
parent 676e781943
commit 0231f2ac00
2 changed files with 25 additions and 1 deletions

View file

@ -608,7 +608,7 @@ class UserContractAccessAdmin(admin.ModelAdmin):
class UserConfigAdmin(admin.ModelAdmin): class UserConfigAdmin(admin.ModelAdmin):
list_display = ("user", "display_contracts", "display_thematics", "display_views", "is_intern", "display_roles", "company", "display_member_teams", "duplicate_button") list_display = ("user", "display_contracts", "display_thematics", "display_views", "is_intern", "display_roles", "company", "display_member_teams", "duplicate_button")
list_filter = ("thematics", "roles", "company", "user__companymember__teams", "contracts", "accessible_views", "auto_logout_hours") list_filter = ("thematics", "roles", "company", "user__companymember__teams", "contracts", "accessible_views", "auto_logout_hours")
search_fields = ("user__username", "contracts__contract_number") search_fields = ("user__username", "user__first_name", "user__last_name", "contracts__contract_number")
inlines = [UserThematicsInline, UserContractAccessInline, UserWarehouseAccessInline, UserWarehouseLocationAccessInline, UserCompanyTeamAccessInline, UserAssetTypeAccessInline, UserAssetAccessInline] inlines = [UserThematicsInline, UserContractAccessInline, UserWarehouseAccessInline, UserWarehouseLocationAccessInline, UserCompanyTeamAccessInline, UserAssetTypeAccessInline, UserAssetAccessInline]
filter_horizontal = ("linked_configs", "accessible_views") filter_horizontal = ("linked_configs", "accessible_views")
actions = ["duplicate_config_action", "apply_config_from_action", "assign_company_action"] actions = ["duplicate_config_action", "apply_config_from_action", "assign_company_action"]

View file

@ -317,6 +317,30 @@ class UserConfigCopyTests(TestCase):
target_ut = UserThematics.objects.get(user_config=self.config_target, thematic=self.thematic) target_ut = UserThematics.objects.get(user_config=self.config_target, thematic=self.thematic)
self.assertTrue(target_ut.can_inspect) self.assertTrue(target_ut.can_inspect)
def test_userconfig_admin_search_fields_includes_first_and_last_name(self):
from common.admin import UserConfigAdmin
self.assertIn("user__first_name", UserConfigAdmin.search_fields)
self.assertIn("user__last_name", UserConfigAdmin.search_fields)
self.assertIn("user__username", UserConfigAdmin.search_fields)
def test_userconfig_admin_search_by_name(self):
from common.admin import UserConfigAdmin
from django.test import RequestFactory
self.user_source.first_name = "Jean"
self.user_source.last_name = "Dupont"
self.user_source.save()
admin_obj = UserConfigAdmin(UserConfig, None)
request = RequestFactory().get('/admin/common/userconfig/')
qs_first, _ = admin_obj.get_search_results(request, UserConfig.objects.all(), "Jean")
self.assertIn(self.config_source, qs_first)
self.assertNotIn(self.config_target, qs_first)
qs_last, _ = admin_obj.get_search_results(request, UserConfig.objects.all(), "Dupont")
self.assertIn(self.config_source, qs_last)
self.assertNotIn(self.config_target, qs_last)
class ScheduledCommandResolveOutputFileTests(TestCase): class ScheduledCommandResolveOutputFileTests(TestCase):
def test_resolve_output_file_with_placeholders(self): def test_resolve_output_file_with_placeholders(self):