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"
|