from django.contrib import admin from django.utils.translation import gettext_lazy as _ from unfold.admin import ModelAdmin from unfold.decorators import display from unfold.contrib.filters.admin import RangeDateTimeFilter, AutocompleteSelectFilter from apps.account.models.user import LoginHistory from utils.admin import project_admin_site @admin.register(LoginHistory, site=project_admin_site) class LoginHistoryAdmin(ModelAdmin): list_display = ('user', 'ip', 'country', 'city', 'device_os', 'display_at_time') list_display_links = ('user', 'ip', 'display_at_time') list_filter = [ ('user', AutocompleteSelectFilter), 'device_os', 'country', 'city', ('at_time', RangeDateTimeFilter), ] search_fields = ('user__email', 'user__fullname', 'ip', 'country', 'city', 'user_agent') readonly_fields = ('at_time',) ordering = ('-at_time',) @display(description=_("Date & Time")) def display_at_time(self, instance: LoginHistory): return instance.at_time.strftime("%Y-%m-%d %H:%M") if instance.at_time else "-"