mirror of https://github.com/jumpserver/jumpserver
perf: 修改 accounts
parent
fd94713583
commit
b961d1f9ee
|
@ -14,8 +14,10 @@ class Account(BaseUser, AbsConnectivity, ProtocolMixin):
|
||||||
common = 'common', _('Common user')
|
common = 'common', _('Common user')
|
||||||
admin = 'admin', _('Admin user')
|
admin = 'admin', _('Admin user')
|
||||||
|
|
||||||
protocol = models.CharField(max_length=16, choices=ProtocolMixin.Protocol.choices,
|
protocol = models.CharField(
|
||||||
default='ssh', verbose_name=_('Protocol'))
|
max_length=16, choices=ProtocolMixin.Protocol.choices,
|
||||||
|
default='ssh', verbose_name=_('Protocol')
|
||||||
|
)
|
||||||
type = models.CharField(max_length=16, choices=Type.choices, default=Type.common, verbose_name=_("Type"))
|
type = models.CharField(max_length=16, choices=Type.choices, default=Type.common, verbose_name=_("Type"))
|
||||||
asset = models.ForeignKey('assets.Asset', on_delete=models.CASCADE, verbose_name=_('Asset'))
|
asset = models.ForeignKey('assets.Asset', on_delete=models.CASCADE, verbose_name=_('Asset'))
|
||||||
version = models.IntegerField(default=0, verbose_name=_('Version'))
|
version = models.IntegerField(default=0, verbose_name=_('Version'))
|
||||||
|
|
|
@ -199,6 +199,10 @@ class SystemUser(ProtocolMixin, BaseUser):
|
||||||
return
|
return
|
||||||
self.su_from.assets.add(*tuple(assets_or_ids))
|
self.su_from.assets.add(*tuple(assets_or_ids))
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def create_accounts_with_assets(cls, asset_ids, system_user_ids):
|
||||||
|
pass
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
ordering = ['name']
|
ordering = ['name']
|
||||||
unique_together = [('name', 'org_id')]
|
unique_together = [('name', 'org_id')]
|
||||||
|
@ -208,6 +212,12 @@ class SystemUser(ProtocolMixin, BaseUser):
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
|
class SystemUserAccount(models.Model):
|
||||||
|
system_user = models.ForeignKey('SystemUser', on_delete=models.CASCADE, related_name='accounts')
|
||||||
|
account = models.ForeignKey('assets.Account', on_delete=models.CASCADE, related_name='system_users')
|
||||||
|
date_created = models.DateTimeField(auto_now_add=True)
|
||||||
|
|
||||||
|
|
||||||
# Deprecated: 准备废弃
|
# Deprecated: 准备废弃
|
||||||
class AdminUser(BaseUser):
|
class AdminUser(BaseUser):
|
||||||
"""
|
"""
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
#
|
#
|
||||||
from django.db.models.signals import (
|
from django.db.models.signals import (
|
||||||
post_save, m2m_changed, pre_save, pre_delete, post_delete
|
post_save, m2m_changed
|
||||||
)
|
)
|
||||||
from django.dispatch import receiver
|
from django.dispatch import receiver
|
||||||
|
|
||||||
|
@ -32,6 +32,9 @@ def on_system_user_assets_change(instance, action, model, pk_set, **kwargs):
|
||||||
logger.debug('No system user found')
|
logger.debug('No system user found')
|
||||||
return
|
return
|
||||||
|
|
||||||
|
if action != POST_ADD:
|
||||||
|
return
|
||||||
|
|
||||||
if model == Asset:
|
if model == Asset:
|
||||||
system_user_ids = [instance.id]
|
system_user_ids = [instance.id]
|
||||||
asset_ids = pk_set
|
asset_ids = pk_set
|
||||||
|
@ -39,6 +42,7 @@ def on_system_user_assets_change(instance, action, model, pk_set, **kwargs):
|
||||||
system_user_ids = pk_set
|
system_user_ids = pk_set
|
||||||
asset_ids = [instance.id]
|
asset_ids = [instance.id]
|
||||||
# todo: Auto create account if need
|
# todo: Auto create account if need
|
||||||
|
SystemUser.create_accounts_with_assets(asset_ids, system_user_ids)
|
||||||
|
|
||||||
|
|
||||||
@receiver(m2m_changed, sender=SystemUser.users.through)
|
@receiver(m2m_changed, sender=SystemUser.users.through)
|
||||||
|
|
Loading…
Reference in New Issue