diff --git a/django_admin_shellx/templates/django_admin_shellx/terminal.html b/django_admin_shellx/templates/django_admin_shellx/terminal.html index d9e9727..0c54fad 100644 --- a/django_admin_shellx/templates/django_admin_shellx/terminal.html +++ b/django_admin_shellx/templates/django_admin_shellx/terminal.html @@ -142,7 +142,7 @@ {{ entry.action_time }} - {{ entry.user.username }} + {{ entry.user.username_value }} {% if entry.command %} diff --git a/django_admin_shellx/views.py b/django_admin_shellx/views.py index 7ddf141..2d24785 100644 --- a/django_admin_shellx/views.py +++ b/django_admin_shellx/views.py @@ -12,6 +12,9 @@ from .models import TerminalCommand +User = get_user_model() +username_field = User.USERNAME_FIELD + class TerminalView(LoginRequiredMixin, UserPassesTestMixin, TemplateView): @@ -45,9 +48,10 @@ def get_context_data(self, **kwargs): if favorite: commands = commands.filter(favorite=bool(favorite)) - username = self.request.GET.get("username", None) - if username and username != "All": - commands = commands.filter(created_by__username=username) + current_username = self.request.GET.get("username", None) + if current_username and current_username != "All": + filter_kwargs = {f"created_by__{username_field}": current_username} + commands = commands.filter(**filter_kwargs) search = self.request.GET.get("search", None) if search: @@ -56,18 +60,14 @@ def get_context_data(self, **kwargs): commands = commands[:20] context["commands"] = commands - usernames = ( - get_user_model() - .objects.filter( - id__in=TerminalCommand.objects.values_list("created_by_id").distinct() - ) - .values_list("username", flat=True) - ) - if self.request.user.username in usernames: - usernames = [self.request.user.username] + [ - username - for username in usernames - if username != self.request.user.username + usernames = User.objects.filter( + id__in=TerminalCommand.objects.values_list( + "created_by_id", flat=True + ).distinct() + ).values_list(username_field, flat=True) + if current_username in usernames: + usernames = [current_username] + [ + uname for uname in usernames if uname != current_username ] context["usernames"] = usernames @@ -81,6 +81,7 @@ def get_context_data(self, **kwargs): ) for log in log_entries: log.user = user_model.objects.get(id=log.user_id) + log.user.username_value = log.user.get_username() tc = TerminalCommand.objects.filter(id=log.object_id).first() if tc: diff --git a/pyproject.toml b/pyproject.toml index 4e04738..46a4530 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "poetry.core.masonry.api" [tool.poetry] name = "django-admin-shellx" -version = "0.3.2" +version = "0.3.3" description = "A Django Admin Shell" authors = ["Adin Hodovic "] license = "MIT"