Skip to content

Commit 224df86

Browse files
authored
Merge pull request #39 from adinhodovic/user-dynamic-usernames
fix: Use dynamic username fields
2 parents 8c6383b + 2813932 commit 224df86

3 files changed

Lines changed: 18 additions & 17 deletions

File tree

django_admin_shellx/templates/django_admin_shellx/terminal.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -142,7 +142,7 @@
142142
<tr>
143143
<td>{{ entry.action_time }}</td>
144144
<td>
145-
<a href="{% url user_reverse_url entry.user.id %}">{{ entry.user.username }}</a>
145+
<a href="{% url user_reverse_url entry.user.id %}">{{ entry.user.username_value }}</a>
146146
</td>
147147
<td>
148148
{% if entry.command %}

django_admin_shellx/views.py

Lines changed: 16 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,9 @@
1212

1313
from .models import TerminalCommand
1414

15+
User = get_user_model()
16+
username_field = User.USERNAME_FIELD
17+
1518

1619
class TerminalView(LoginRequiredMixin, UserPassesTestMixin, TemplateView):
1720

@@ -45,9 +48,10 @@ def get_context_data(self, **kwargs):
4548
if favorite:
4649
commands = commands.filter(favorite=bool(favorite))
4750

48-
username = self.request.GET.get("username", None)
49-
if username and username != "All":
50-
commands = commands.filter(created_by__username=username)
51+
current_username = self.request.GET.get("username", None)
52+
if current_username and current_username != "All":
53+
filter_kwargs = {f"created_by__{username_field}": current_username}
54+
commands = commands.filter(**filter_kwargs)
5155

5256
search = self.request.GET.get("search", None)
5357
if search:
@@ -56,18 +60,14 @@ def get_context_data(self, **kwargs):
5660
commands = commands[:20]
5761
context["commands"] = commands
5862

59-
usernames = (
60-
get_user_model()
61-
.objects.filter(
62-
id__in=TerminalCommand.objects.values_list("created_by_id").distinct()
63-
)
64-
.values_list("username", flat=True)
65-
)
66-
if self.request.user.username in usernames:
67-
usernames = [self.request.user.username] + [
68-
username
69-
for username in usernames
70-
if username != self.request.user.username
63+
usernames = User.objects.filter(
64+
id__in=TerminalCommand.objects.values_list(
65+
"created_by_id", flat=True
66+
).distinct()
67+
).values_list(username_field, flat=True)
68+
if current_username in usernames:
69+
usernames = [current_username] + [
70+
uname for uname in usernames if uname != current_username
7171
]
7272
context["usernames"] = usernames
7373

@@ -81,6 +81,7 @@ def get_context_data(self, **kwargs):
8181
)
8282
for log in log_entries:
8383
log.user = user_model.objects.get(id=log.user_id)
84+
log.user.username_value = log.user.get_username()
8485

8586
tc = TerminalCommand.objects.filter(id=log.object_id).first()
8687
if tc:

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ build-backend = "poetry.core.masonry.api"
44

55
[tool.poetry]
66
name = "django-admin-shellx"
7-
version = "0.3.2"
7+
version = "0.3.3"
88
description = "A Django Admin Shell"
99
authors = ["Adin Hodovic <hodovicadin@gmail.com>"]
1010
license = "MIT"

0 commit comments

Comments
 (0)