Skip to content

Commit 21a386b

Browse files
committed
fix: Remove user from autocomplete fields if (swapped) user model does not have search fields
1 parent 93ffea5 commit 21a386b

File tree

3 files changed

+22
-1
lines changed

3 files changed

+22
-1
lines changed

filer/admin/permissionadmin.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
from django.contrib import admin
2+
from django.contrib.auth import get_user_model
23
from django.utils.translation import gettext_lazy as _
34

45
from .. import settings
@@ -19,6 +20,13 @@ class PermissionAdmin(admin.ModelAdmin):
1920
class Media:
2021
css = {'all': ['filer/css/admin_folderpermissions.css']}
2122

23+
def get_autocomplete_fields(self, request):
24+
autocomplete_fields = super().get_autocomplete_fields(request)
25+
user_admin = self.admin_site.get_model_admin(get_user_model())
26+
if not user_admin.get_search_fields(request):
27+
autocomplete_fields.remove('user')
28+
return autocomplete_fields
29+
2230
def get_queryset(self, request):
2331
qs = super().get_queryset(request)
2432
return qs.prefetch_related("group", "folder")

filer/templates/admin/filer/widgets/admin_file.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@
2626
<span class="filerFile js-file-selector">
2727
{% if object %}
2828
{% if object.file.exists %}
29-
<a href="{{ object.url }}" target="_blank">{% file_icon object detail=True %}</a>
29+
<a href="{{ object.url }}" target="_blank">{% file_icon object detail="table" %}</a>
3030
&nbsp;<span class="description_text">{{ object.label }}</span>
3131
{% else %}
3232
{% file_icon object %}

filer/validation.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,19 @@ def sanitize_svg(file_name: str, file: typing.IO, owner: User, mime_type: str) -
9191
file.write(xml) # write to binary file with utf-8 encoding
9292

9393

94+
def validate_octet(file_name: str, file: typing.IO, owner: User, mime_type: str) -> None:
95+
"""Octet streams are binary files without a specific mime type. They are run through
96+
a virus check."""
97+
try:
98+
from django_clamd.validators import validate_file_infection
99+
100+
validate_file_infection(file)
101+
except (ModuleNotFoundError, ImportError):
102+
raise FileValidationError(
103+
_('File "{file_name}": Virus check for binary/unknown file not available').format(file_name=file_name)
104+
)
105+
106+
94107
def validate_upload(file_name: str, file: typing.IO, owner: User, mime_type: str) -> None:
95108
"""Actual validation: Call all validators for the given mime type. The app config reads
96109
the validators from the settings and replaces dotted paths by callables."""

0 commit comments

Comments
 (0)