mirror of
https://github.com/jumpserver/jumpserver.git
synced 2025-04-27 11:12:54 +00:00
perf: change account filter by asset
This commit is contained in:
parent
2aace05099
commit
e2b8fd0d40
@ -46,6 +46,16 @@ class AccountViewSet(OrgBulkModelViewSet):
|
||||
}
|
||||
export_as_zip = True
|
||||
|
||||
def get_queryset(self):
|
||||
queryset = super().get_queryset()
|
||||
asset_id = self.request.query_params.get('asset') or self.request.query_params.get('asset_id')
|
||||
if not asset_id:
|
||||
return queryset
|
||||
|
||||
asset = get_object_or_404(Asset, pk=asset_id)
|
||||
queryset = asset.all_accounts.all()
|
||||
return queryset
|
||||
|
||||
@action(methods=['get'], detail=False, url_path='su-from-accounts')
|
||||
def su_from_accounts(self, request, *args, **kwargs):
|
||||
account_id = request.query_params.get('account')
|
||||
@ -117,7 +127,7 @@ class AccountViewSet(OrgBulkModelViewSet):
|
||||
self.model.objects.create(**account_data)
|
||||
success_count += 1
|
||||
except Exception as e:
|
||||
logger.debug(f'{ "Move" if move else "Copy" } to assets error: {e}')
|
||||
logger.debug(f'{"Move" if move else "Copy"} to assets error: {e}')
|
||||
creation_results[asset] = {'error': _('Account already exists'), 'state': 'error'}
|
||||
|
||||
results = [{'asset': str(asset), **res} for asset, res in creation_results.items()]
|
||||
|
@ -65,7 +65,6 @@ class AccountFilterSet(UUIDFilterMixin, BaseFilterSet):
|
||||
address = drf_filters.CharFilter(field_name="asset__address", lookup_expr="exact")
|
||||
asset_name = drf_filters.CharFilter(field_name="asset__name", lookup_expr="exact")
|
||||
asset_id = drf_filters.CharFilter(field_name="asset", method="filter_uuid")
|
||||
asset = drf_filters.CharFilter(field_name="asset", method="filter_uuid")
|
||||
assets = drf_filters.CharFilter(field_name="asset_id", method="filter_uuid")
|
||||
has_secret = drf_filters.BooleanFilter(method="filter_has_secret")
|
||||
platform = drf_filters.CharFilter(
|
||||
@ -151,8 +150,9 @@ class AccountFilterSet(UUIDFilterMixin, BaseFilterSet):
|
||||
kwargs.update({"date_change_secret__gt": date})
|
||||
|
||||
if name == "latest_secret_change_failed":
|
||||
queryset = queryset.filter(date_change_secret__gt=date).exclude(
|
||||
change_secret_status=ChangeSecretRecordStatusChoice.success
|
||||
queryset = (
|
||||
queryset.filter(date_change_secret__gt=date)
|
||||
.exclude(change_secret_status=ChangeSecretRecordStatusChoice.success)
|
||||
)
|
||||
|
||||
if kwargs:
|
||||
@ -162,8 +162,8 @@ class AccountFilterSet(UUIDFilterMixin, BaseFilterSet):
|
||||
class Meta:
|
||||
model = Account
|
||||
fields = [
|
||||
"id", "asset", "source_id", "secret_type", "category",
|
||||
"type", "privileged", "secret_reset", "connectivity", 'is_active'
|
||||
"id", "source_id", "secret_type", "category", "type",
|
||||
"privileged", "secret_reset", "connectivity", "is_active"
|
||||
]
|
||||
|
||||
|
||||
|
@ -11,7 +11,6 @@ from rest_framework.decorators import action
|
||||
from rest_framework.response import Response
|
||||
from rest_framework.status import HTTP_200_OK
|
||||
|
||||
from accounts.filters import AccountFilterSet
|
||||
from accounts.serializers import AccountSerializer
|
||||
from accounts.tasks import push_accounts_to_assets_task, verify_accounts_connectivity_task
|
||||
from assets import serializers
|
||||
@ -177,24 +176,6 @@ class AssetViewSet(SuggestionMixin, BaseAssetViewSet):
|
||||
gateways = asset.domain.gateways
|
||||
return self.get_paginated_response_from_queryset(gateways)
|
||||
|
||||
@action(methods=["GET"], detail=True, url_path="accounts")
|
||||
def accounts(self, *args, **kwargs):
|
||||
pk = self.kwargs.get("pk")
|
||||
asset = get_object_or_404(self.model, pk=pk)
|
||||
queryset = asset.all_accounts.all()
|
||||
|
||||
filterset = AccountFilterSet(
|
||||
data=self.request.query_params,
|
||||
queryset=queryset,
|
||||
request=self.request,
|
||||
)
|
||||
|
||||
if not filterset.is_valid():
|
||||
return Response(filterset.errors, status=status.HTTP_400_BAD_REQUEST)
|
||||
|
||||
queryset = filterset.qs
|
||||
return self.get_paginated_response_from_queryset(queryset)
|
||||
|
||||
@action(methods=['post'], detail=False, url_path='sync-platform-protocols')
|
||||
def sync_platform_protocols(self, request, *args, **kwargs):
|
||||
platform_id = request.data.get('platform_id')
|
||||
|
@ -15,10 +15,13 @@ class DirectoryTypes(BaseType):
|
||||
def _get_base_constrains(cls) -> dict:
|
||||
return {
|
||||
'*': {
|
||||
'charset_enabled': False,
|
||||
'charset_enabled': True,
|
||||
'domain_enabled': True,
|
||||
'ds_enabled': False,
|
||||
'su_enabled': True,
|
||||
},
|
||||
cls.WINDOWS_AD: {
|
||||
'su_enabled': False,
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -14,7 +14,7 @@ def add_ds_platforms(apps, schema_editor):
|
||||
"created_by": "system",
|
||||
"updated_by": "system",
|
||||
"comment": "",
|
||||
"name": "Windows active directory",
|
||||
"name": "WindowsActiveDirectory",
|
||||
"category": "ds",
|
||||
"type": "windows_ad",
|
||||
"meta": {},
|
||||
@ -115,19 +115,16 @@ def add_ds_platforms(apps, schema_editor):
|
||||
"category": "ds",
|
||||
"type": "general",
|
||||
"meta": {
|
||||
|
||||
},
|
||||
"internal": true,
|
||||
"domain_enabled": false,
|
||||
"su_enabled": false,
|
||||
"su_method": null,
|
||||
"custom_fields": [
|
||||
|
||||
],
|
||||
"automation": {
|
||||
"ansible_enabled": false,
|
||||
"ansible_config": {
|
||||
|
||||
}
|
||||
},
|
||||
"protocols": [
|
||||
|
@ -220,6 +220,11 @@ class PlatformSerializer(ResourceLabelsMixin, CommonSerializerMixin, WritableNes
|
||||
def set_initial_value(self):
|
||||
if not hasattr(self, 'initial_data'):
|
||||
return
|
||||
|
||||
name = self.initial_data.get('name')
|
||||
if ' ' in name:
|
||||
self.initial_data['name'] = name.replace(' ', '-')
|
||||
|
||||
if self.instance:
|
||||
return
|
||||
if not self.initial_data.get('automation'):
|
||||
|
Loading…
Reference in New Issue
Block a user