You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
28 lines
1.1 KiB
28 lines
1.1 KiB
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 "-"
|