Fix bulk edit of revoked devices (Z#23187227) (#4960)

When selecting revoked devices and using bulk edit on them, the edit was performed 
either *on all active devices* or not at all. This commit fixes that behaviour so that the 
selected devices are edited.
This commit is contained in:
luelista
2025-03-28 17:59:55 +01:00
committed by GitHub
parent d928adf7a3
commit d39a01af4d

View File

@@ -44,7 +44,9 @@ import dateutil
from django import forms from django import forms
from django.conf import settings from django.conf import settings
from django.contrib import messages from django.contrib import messages
from django.core.exceptions import PermissionDenied, ValidationError from django.core.exceptions import (
BadRequest, PermissionDenied, ValidationError,
)
from django.core.files import File from django.core.files import File
from django.db import transaction from django.db import transaction
from django.db.models import ( from django.db.models import (
@@ -944,13 +946,16 @@ class DeviceQueryMixin:
qs = self.request.organizer.devices.prefetch_related( qs = self.request.organizer.devices.prefetch_related(
'limit_events', 'gate', 'limit_events', 'gate',
).order_by('revoked', '-device_id') ).order_by('revoked', '-device_id')
if self.filter_form.is_valid():
qs = self.filter_form.filter_qs(qs)
if 'device' in self.request_data and '__ALL' not in self.request_data: if 'device' in self.request_data and '__ALL' not in self.request_data:
qs = qs.filter( qs = qs.filter(
id__in=self.request_data.getlist('device') id__in=self.request_data.getlist('device')
) )
elif self.request.method == 'GET' or '__ALL' in self.request_data:
if self.filter_form.is_valid():
qs = self.filter_form.filter_qs(qs)
else:
raise BadRequest("No devices selected")
return qs return qs