mirror of
https://github.com/jumpserver/jumpserver.git
synced 2025-07-17 16:31:28 +00:00
fix: Integrations Application: Failed to filter accounts by selecting multiple attributes when creating or editing
This commit is contained in:
parent
47029be3da
commit
e8c581b08a
@ -3,6 +3,7 @@ from django.utils import timezone
|
|||||||
from django.utils.translation import gettext_lazy as _
|
from django.utils.translation import gettext_lazy as _
|
||||||
from simple_history.models import HistoricalRecords
|
from simple_history.models import HistoricalRecords
|
||||||
|
|
||||||
|
from assets.models import Asset
|
||||||
from assets.models.base import AbsConnectivity
|
from assets.models.base import AbsConnectivity
|
||||||
from common.utils import lazyproperty, get_logger
|
from common.utils import lazyproperty, get_logger
|
||||||
from labels.mixins import LabeledMixin
|
from labels.mixins import LabeledMixin
|
||||||
@ -59,7 +60,24 @@ class AccountHistoricalRecords(HistoricalRecords):
|
|||||||
return super().create_history_model(model, inherited)
|
return super().create_history_model(model, inherited)
|
||||||
|
|
||||||
|
|
||||||
class Account(AbsConnectivity, LabeledMixin, BaseAccount):
|
class JSONFilterMixin:
|
||||||
|
@staticmethod
|
||||||
|
def get_json_filter_attr_q(name, value, match):
|
||||||
|
if name == "asset":
|
||||||
|
if match == "m2m_all":
|
||||||
|
asset_id = (
|
||||||
|
Asset.objects.filter(id__in=value)
|
||||||
|
.annotate(count=models.Count("id"))
|
||||||
|
.filter(count=len(value))
|
||||||
|
.values_list("id", flat=True)
|
||||||
|
)
|
||||||
|
else:
|
||||||
|
asset_id = Asset.objects.filter(id__in=value).values_list("id", flat=True)
|
||||||
|
return models.Q(asset_id__in=asset_id)
|
||||||
|
return None
|
||||||
|
|
||||||
|
|
||||||
|
class Account(AbsConnectivity, LabeledMixin, BaseAccount, JSONFilterMixin):
|
||||||
asset = models.ForeignKey(
|
asset = models.ForeignKey(
|
||||||
'assets.Asset', related_name='accounts',
|
'assets.Asset', related_name='accounts',
|
||||||
on_delete=models.CASCADE, verbose_name=_('Asset')
|
on_delete=models.CASCADE, verbose_name=_('Asset')
|
||||||
|
Loading…
Reference in New Issue
Block a user