mirror of https://github.com/jumpserver/jumpserver
perf: account history record only secret
parent
237e7b22fb
commit
cd98ec4cac
|
@ -10,7 +10,7 @@ __all__ = ['AccountHistoryViewSet', 'AccountHistorySecretsViewSet']
|
|||
class AccountHistoryFilterSet(AccountFilterSet):
|
||||
class Meta:
|
||||
model = Account.history.model
|
||||
fields = AccountFilterSet.Meta.fields
|
||||
fields = ['id', 'secret_type']
|
||||
|
||||
|
||||
class AccountHistoryViewSet(AccountViewSet):
|
||||
|
|
|
@ -0,0 +1,73 @@
|
|||
# Generated by Django 3.2.13 on 2022-10-09 08:50
|
||||
|
||||
from django.db import migrations
|
||||
|
||||
|
||||
def migrate_create_history_account(apps, schema_editor):
|
||||
db_alias = schema_editor.connection.alias
|
||||
account_model = apps.get_model('assets', 'Account')
|
||||
history_account_model = apps.get_model('assets', 'HistoricalAccount')
|
||||
history_accounts = []
|
||||
for account in account_model.objects.using(db_alias).all():
|
||||
data = {
|
||||
'id': account.id,
|
||||
'secret': account.secret,
|
||||
'secret_type': account.secret_type,
|
||||
'history_date': account.date_created,
|
||||
}
|
||||
history_accounts.append(history_account_model(**data))
|
||||
history_account_model.objects.using(db_alias).bulk_create(history_accounts)
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
dependencies = [
|
||||
('assets', '0106_auto_20220916_1556'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RemoveField(
|
||||
model_name='historicalaccount',
|
||||
name='asset',
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name='historicalaccount',
|
||||
name='comment',
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name='historicalaccount',
|
||||
name='created_by',
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name='historicalaccount',
|
||||
name='date_created',
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name='historicalaccount',
|
||||
name='date_updated',
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name='historicalaccount',
|
||||
name='name',
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name='historicalaccount',
|
||||
name='org_id',
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name='historicalaccount',
|
||||
name='privileged',
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name='historicalaccount',
|
||||
name='su_from',
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name='historicalaccount',
|
||||
name='username',
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name='historicalaccount',
|
||||
name='version',
|
||||
),
|
||||
migrations.RunPython(migrate_create_history_account),
|
||||
]
|
|
@ -9,6 +9,23 @@ from .base import BaseAccount
|
|||
__all__ = ['Account', 'AccountTemplate']
|
||||
|
||||
|
||||
class AccountHistoricalRecords(HistoricalRecords):
|
||||
def __init__(self, *args, **kwargs):
|
||||
self.included_fields = kwargs.pop('included_fields', None)
|
||||
super().__init__(*args, **kwargs)
|
||||
|
||||
def fields_included(self, model):
|
||||
fields = []
|
||||
for field in model._meta.fields:
|
||||
if self.included_fields is None:
|
||||
if field.name not in self.excluded_fields:
|
||||
fields.append(field)
|
||||
else:
|
||||
if field.name in self.included_fields:
|
||||
fields.append(field)
|
||||
return fields
|
||||
|
||||
|
||||
class Account(BaseAccount):
|
||||
class InnerAccount(models.TextChoices):
|
||||
INPUT = '@INPUT', '@INPUT'
|
||||
|
@ -23,7 +40,9 @@ class Account(BaseAccount):
|
|||
on_delete=models.SET_NULL, verbose_name=_("Su from")
|
||||
)
|
||||
version = models.IntegerField(default=0, verbose_name=_('Version'))
|
||||
history = HistoricalRecords()
|
||||
history = AccountHistoricalRecords(
|
||||
included_fields=['id', 'secret_type', 'secret']
|
||||
)
|
||||
|
||||
class Meta:
|
||||
verbose_name = _('Account')
|
||||
|
|
Loading…
Reference in New Issue