Merge pull request #9373 from jumpserver/pr@dev@change_migrations

perf: 修改 database 的 cert model field
pull/9374/head
老广 2023-01-31 13:05:19 +08:00 committed by GitHub
commit bebfe10d73
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 10 additions and 14 deletions

View File

@ -2,6 +2,7 @@
import django.db import django.db
from django.db import migrations, models from django.db import migrations, models
import common.db.fields
def migrate_to_host(apps, schema_editor): def migrate_to_host(apps, schema_editor):
@ -120,9 +121,9 @@ class Migration(migrations.Migration):
primary_key=True, serialize=False, to='assets.asset')), primary_key=True, serialize=False, to='assets.asset')),
('db_name', models.CharField(blank=True, max_length=1024, verbose_name='Database')), ('db_name', models.CharField(blank=True, max_length=1024, verbose_name='Database')),
('allow_invalid_cert', models.BooleanField(default=False, verbose_name='Allow invalid cert')), ('allow_invalid_cert', models.BooleanField(default=False, verbose_name='Allow invalid cert')),
('ca_cert', models.TextField(blank=True, verbose_name='CA cert')), ('ca_cert', common.db.fields.EncryptTextField(blank=True, verbose_name='CA cert')),
('client_cert', models.TextField(blank=True, verbose_name='Client cert')), ('client_cert', common.db.fields.EncryptTextField(blank=True, verbose_name='Client cert')),
('client_key', models.TextField(blank=True, verbose_name='Client key'),), ('client_key', common.db.fields.EncryptTextField(blank=True, verbose_name='Client key'),),
('use_ssl', models.BooleanField(default=False, verbose_name='Use SSL'),), ('use_ssl', models.BooleanField(default=False, verbose_name='Use SSL'),),
], ],
options={ options={

View File

@ -11,6 +11,7 @@ from django.utils.translation import ugettext_lazy as _
from assets import const from assets import const
from common.utils import lazyproperty from common.utils import lazyproperty
from common.db.fields import EncryptMixin
from orgs.mixins.models import OrgManager, JMSOrgBaseModel from orgs.mixins.models import OrgManager, JMSOrgBaseModel
from ..base import AbsConnectivity from ..base import AbsConnectivity
from ..platform import Platform from ..platform import Platform
@ -139,6 +140,7 @@ class Asset(NodesRelationMixin, AbsConnectivity, JMSOrgBaseModel):
if not instance: if not instance:
return [] return []
specific_fields = self.get_specific_fields(instance) specific_fields = self.get_specific_fields(instance)
specific_fields = [i for i in specific_fields if not isinstance(i, EncryptMixin)]
info = [ info = [
{ {
'label': i.verbose_name, 'label': i.verbose_name,

View File

@ -1,28 +1,21 @@
from django.db import models from django.db import models
from django.utils.translation import gettext_lazy as _ from django.utils.translation import gettext_lazy as _
from common.db.fields import EncryptTextField
from .common import Asset from .common import Asset
class Database(Asset): class Database(Asset):
db_name = models.CharField(max_length=1024, verbose_name=_("Database"), blank=True) db_name = models.CharField(max_length=1024, verbose_name=_("Database"), blank=True)
use_ssl = models.BooleanField(default=False, verbose_name=_("Use SSL")) use_ssl = models.BooleanField(default=False, verbose_name=_("Use SSL"))
ca_cert = models.TextField(verbose_name=_("CA cert"), blank=True) ca_cert = EncryptTextField(verbose_name=_("CA cert"), blank=True)
client_cert = models.TextField(verbose_name=_("Client cert"), blank=True) client_cert = EncryptTextField(verbose_name=_("Client cert"), blank=True)
client_key = models.TextField(verbose_name=_("Client key"), blank=True) client_key = EncryptTextField(verbose_name=_("Client key"), blank=True)
allow_invalid_cert = models.BooleanField(default=False, verbose_name=_('Allow invalid cert')) allow_invalid_cert = models.BooleanField(default=False, verbose_name=_('Allow invalid cert'))
def __str__(self): def __str__(self):
return '{}({}://{}/{})'.format(self.name, self.type, self.address, self.db_name) return '{}({}://{}/{})'.format(self.name, self.type, self.address, self.db_name)
@property
def specific(self):
return {
'db_name': self.db_name,
'use_ssl': self.use_ssl,
'allow_invalid_cert': self.allow_invalid_cert,
}
@property @property
def ip(self): def ip(self):
return self.address return self.address