From daf279304ab66cc9767073e6726cf0f8554174ba Mon Sep 17 00:00:00 2001 From: ibuler Date: Mon, 5 Dec 2022 18:54:12 +0800 Subject: [PATCH] =?UTF-8?q?perf:=20=E4=BF=AE=E6=94=B9=E5=AE=8C=E5=86=B2?= =?UTF-8?q?=E7=AA=81=E4=BA=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ..._options.py => 0113_auto_20221122_2015.py} | 0 apps/assets/migrations/0114_node_domain.py | 37 ------------------- .../migrations/0002_auto_20190729_1423.py | 5 +-- apps/authentication/models/access_key.py | 8 ++-- apps/authentication/models/sso_token.py | 8 ++-- apps/common/db/fields.py | 6 +-- apps/notifications/models/notification.py | 3 ++ .../ops/migrations/0027_auto_20221024_1709.py | 2 +- .../0016_commandstorage_replaystorage.py | 15 +++++--- .../migrations/0017_auto_20191125_0931.py | 8 ++-- apps/terminal/models/component/terminal.py | 2 +- apps/users/models/user.py | 28 +++++++------- 12 files changed, 49 insertions(+), 73 deletions(-) rename apps/assets/migrations/{0113_alter_accounttemplate_options.py => 0113_auto_20221122_2015.py} (100%) delete mode 100644 apps/assets/migrations/0114_node_domain.py diff --git a/apps/assets/migrations/0113_alter_accounttemplate_options.py b/apps/assets/migrations/0113_auto_20221122_2015.py similarity index 100% rename from apps/assets/migrations/0113_alter_accounttemplate_options.py rename to apps/assets/migrations/0113_auto_20221122_2015.py diff --git a/apps/assets/migrations/0114_node_domain.py b/apps/assets/migrations/0114_node_domain.py deleted file mode 100644 index 1abcde400..000000000 --- a/apps/assets/migrations/0114_node_domain.py +++ /dev/null @@ -1,37 +0,0 @@ -# Generated by Django 3.2.14 on 2022-11-29 05:14 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - dependencies = [ - ('assets', '0113_alter_accounttemplate_options'), - ] - - operations = [ - migrations.AddField( - model_name='database', - name='allow_invalid_cert', - field=models.BooleanField(default=False, verbose_name='Allow invalid cert'), - ), - migrations.AddField( - model_name='database', - name='ca_cert', - field=models.TextField(blank=True, verbose_name='CA cert'), - ), - migrations.AddField( - model_name='database', - name='client_cert', - field=models.TextField(blank=True, verbose_name='Client cert'), - ), - migrations.AddField( - model_name='database', - name='client_key', - field=models.TextField(blank=True, verbose_name='Client key'), - ), - migrations.AddField( - model_name='database', - name='use_ssl', - field=models.BooleanField(default=False, verbose_name='Use SSL'), - ), - ] diff --git a/apps/authentication/migrations/0002_auto_20190729_1423.py b/apps/authentication/migrations/0002_auto_20190729_1423.py index c4333f899..6e971e96b 100644 --- a/apps/authentication/migrations/0002_auto_20190729_1423.py +++ b/apps/authentication/migrations/0002_auto_20190729_1423.py @@ -1,12 +1,9 @@ # Generated by Django 2.1.7 on 2019-07-29 06:23 -import datetime from django.db import migrations, models -from django.utils.timezone import utc class Migration(migrations.Migration): - dependencies = [ ('authentication', '0001_initial'), ] @@ -15,7 +12,7 @@ class Migration(migrations.Migration): migrations.AddField( model_name='accesskey', name='date_created', - field=models.DateTimeField(auto_now_add=True, default=datetime.datetime(2019, 7, 29, 6, 23, 54, 115123, tzinfo=utc), verbose_name='Date created'), + field=models.DateTimeField(auto_now_add=True), preserve_default=False, ), migrations.AddField( diff --git a/apps/authentication/models/access_key.py b/apps/authentication/models/access_key.py index 67aa6b812..d0e6fb0ef 100644 --- a/apps/authentication/models/access_key.py +++ b/apps/authentication/models/access_key.py @@ -1,8 +1,10 @@ import uuid -from django.utils.translation import ugettext_lazy as _ -from django.conf import settings +from django.conf import settings from django.db import models +from django.utils.translation import ugettext_lazy as _ + +import common.db.models class AccessKey(models.Model): @@ -11,7 +13,7 @@ class AccessKey(models.Model): secret = models.UUIDField(verbose_name='AccessKeySecret', default=uuid.uuid4, editable=False) user = models.ForeignKey(settings.AUTH_USER_MODEL, verbose_name='User', - on_delete=models.CASCADE, related_name='access_keys') + on_delete=common.db.models.CASCADE_SIGNAL_SKIP, related_name='access_keys') is_active = models.BooleanField(default=True, verbose_name=_('Active')) date_created = models.DateTimeField(auto_now_add=True) diff --git a/apps/authentication/models/sso_token.py b/apps/authentication/models/sso_token.py index fb4c68827..c8ec1e9eb 100644 --- a/apps/authentication/models/sso_token.py +++ b/apps/authentication/models/sso_token.py @@ -1,8 +1,9 @@ import uuid -from django.utils.translation import ugettext_lazy as _ from django.db import models -from common.db.models import BaseCreateUpdateModel +from django.utils.translation import ugettext_lazy as _ + +from common.db.models import BaseCreateUpdateModel, CASCADE_SIGNAL_SKIP class SSOToken(BaseCreateUpdateModel): @@ -12,7 +13,8 @@ class SSOToken(BaseCreateUpdateModel): """ authkey = models.UUIDField(primary_key=True, default=uuid.uuid4, verbose_name=_('Token')) expired = models.BooleanField(default=False, verbose_name=_('Expired')) - user = models.ForeignKey('users.User', on_delete=models.CASCADE, verbose_name=_('User'), db_constraint=False) + user = models.ForeignKey('users.User', on_delete=CASCADE_SIGNAL_SKIP, verbose_name=_('User'), + db_constraint=False) class Meta: verbose_name = _('SSO token') diff --git a/apps/common/db/fields.py b/apps/common/db/fields.py index 7b2cccd7b..d4a58e618 100644 --- a/apps/common/db/fields.py +++ b/apps/common/db/fields.py @@ -7,8 +7,8 @@ from django.db import models from django.utils.encoding import force_text from django.utils.translation import ugettext_lazy as _ -from common.utils import signer, crypto from common.local import add_encrypted_field_set +from common.utils import signer, crypto __all__ = [ "JsonMixin", @@ -131,7 +131,7 @@ class EncryptMixin: return signer.unsign(value) or "" def from_db_value(self, value, expression, connection, context=None): - if not value: + if value is None: return value value = force_text(value) @@ -148,7 +148,7 @@ class EncryptMixin: return plain_value def get_prep_value(self, value): - if not value: + if value is None: return value # 先 json 再解密 diff --git a/apps/notifications/models/notification.py b/apps/notifications/models/notification.py index fc6f8aa96..24995e975 100644 --- a/apps/notifications/models/notification.py +++ b/apps/notifications/models/notification.py @@ -13,6 +13,9 @@ class UserMsgSubscription(JMSBaseModel): ) receive_backends = models.JSONField(default=list, verbose_name=_('receive backend')) + class Meta: + verbose_name = _('User message') + def __str__(self): return _('{} subscription').format(self.user) diff --git a/apps/ops/migrations/0027_auto_20221024_1709.py b/apps/ops/migrations/0027_auto_20221024_1709.py index 08411d42b..2ded6ca58 100644 --- a/apps/ops/migrations/0027_auto_20221024_1709.py +++ b/apps/ops/migrations/0027_auto_20221024_1709.py @@ -38,7 +38,7 @@ class Migration(migrations.Migration): ('date_updated', models.DateTimeField(auto_now=True, verbose_name='Date updated')), ('org_id', models.CharField(blank=True, db_index=True, default='', max_length=36, verbose_name='Organization')), - ('is_periodic', models.BooleanField(default=False)), + ('is_periodic', models.BooleanField(default=False, verbose_name='Periodic perform')), ('interval', models.IntegerField(blank=True, default=24, null=True, verbose_name='Cycle perform')), ('crontab', models.CharField(blank=True, max_length=128, null=True, verbose_name='Regularly perform')), ('id', models.UUIDField(default=uuid.uuid4, primary_key=True, serialize=False)), diff --git a/apps/terminal/migrations/0016_commandstorage_replaystorage.py b/apps/terminal/migrations/0016_commandstorage_replaystorage.py index 55ed5c784..1f1b04966 100644 --- a/apps/terminal/migrations/0016_commandstorage_replaystorage.py +++ b/apps/terminal/migrations/0016_commandstorage_replaystorage.py @@ -1,12 +1,13 @@ # Generated by Django 2.2.5 on 2019-11-22 10:07 -import common.db.fields -from django.db import migrations, models import uuid +from django.db import migrations, models + +import common.db.fields + class Migration(migrations.Migration): - dependencies = [ ('terminal', '0015_auto_20190923_1529'), ] @@ -20,7 +21,8 @@ class Migration(migrations.Migration): ('date_created', models.DateTimeField(auto_now_add=True, null=True, verbose_name='Date created')), ('date_updated', models.DateTimeField(auto_now=True, verbose_name='Date updated')), ('name', models.CharField(max_length=32, unique=True, verbose_name='Name')), - ('type', models.CharField(choices=[('null', 'Null'), ('server', 'Server'), ('es', 'Elasticsearch')], default='server', max_length=16, verbose_name='Type')), + ('type', models.CharField(choices=[('null', 'Null'), ('server', 'Server'), ('es', 'Elasticsearch')], + default='server', max_length=16, verbose_name='Type')), ('meta', common.db.fields.EncryptJsonDictTextField(default={})), ('comment', models.TextField(blank=True, default='', max_length=128, verbose_name='Comment')), ], @@ -36,7 +38,10 @@ class Migration(migrations.Migration): ('date_created', models.DateTimeField(auto_now_add=True, null=True, verbose_name='Date created')), ('date_updated', models.DateTimeField(auto_now=True, verbose_name='Date updated')), ('name', models.CharField(max_length=32, unique=True, verbose_name='Name')), - ('type', models.CharField(choices=[('null', 'Null'), ('server', 'Server'), ('s3', 'S3'), ('ceph', 'Ceph'), ('swift', 'Swift'), ('oss', 'OSS'), ('azure', 'Azure')], default='server', max_length=16, verbose_name='Type')), + ('type', models.CharField( + choices=[('null', 'Null'), ('server', 'Server'), ('s3', 'S3'), ('ceph', 'Ceph'), ('swift', 'Swift'), + ('oss', 'OSS'), ('azure', 'Azure')], default='server', max_length=16, + verbose_name='Type')), ('meta', common.db.fields.EncryptJsonDictTextField(default={})), ('comment', models.TextField(blank=True, default='', max_length=128, verbose_name='Comment')), ], diff --git a/apps/terminal/migrations/0017_auto_20191125_0931.py b/apps/terminal/migrations/0017_auto_20191125_0931.py index d3389d82b..ad6267c39 100644 --- a/apps/terminal/migrations/0017_auto_20191125_0931.py +++ b/apps/terminal/migrations/0017_auto_20191125_0931.py @@ -31,14 +31,16 @@ def init_storage_data(model): name='null', type='null', defaults={ 'name': 'null', 'type': 'null', - 'comment': "Do not save" + 'comment': "Do not save", + 'meta': '{}' } ) model.objects.update_or_create( name='default', type='server', defaults={ 'name': 'default', 'type': 'server', - 'comment': "Store locally" + 'comment': "Store locally", + 'meta': '{}' } ) @@ -55,6 +57,7 @@ def migrate_command_storage(apps, schema_editor): tp = meta.pop("TYPE") if not tp or name in ['default', 'null']: continue + print("- command storage Meta: ", meta) model.objects.create(name=name, type=tp, meta=meta) @@ -74,7 +77,6 @@ def migrate_replay_storage(apps, schema_editor): class Migration(migrations.Migration): - dependencies = [ ('settings', '0001_initial'), ('terminal', '0016_commandstorage_replaystorage'), diff --git a/apps/terminal/models/component/terminal.py b/apps/terminal/models/component/terminal.py index 71f409e6f..e244c8a40 100644 --- a/apps/terminal/models/component/terminal.py +++ b/apps/terminal/models/component/terminal.py @@ -87,7 +87,7 @@ class Terminal(StorageMixin, TerminalStatusMixin, models.Model): replay_storage = models.CharField(max_length=128, verbose_name=_("Replay storage"), default='default') user = models.OneToOneField(User, related_name='terminal', verbose_name=_('Application User'), null=True, on_delete=models.CASCADE) - is_deleted = models.BooleanField(default=False, verbose_name=_('Is deleted')) + is_deleted = models.BooleanField(default=False) date_created = models.DateTimeField(auto_now_add=True) comment = models.TextField(blank=True, verbose_name=_('Comment')) diff --git a/apps/users/models/user.py b/apps/users/models/user.py index b50b8e525..2534837b5 100644 --- a/apps/users/models/user.py +++ b/apps/users/models/user.py @@ -1,31 +1,33 @@ #!/usr/bin/env python # -*- coding: utf-8 -*- # -import uuid import base64 -import string -import random import datetime +import random +import string +import uuid from typing import Callable -from django.db import models from django.conf import settings -from django.utils import timezone -from django.core.cache import cache -from django.contrib.auth.models import AbstractUser from django.contrib.auth.hashers import check_password -from django.utils.translation import ugettext_lazy as _ +from django.contrib.auth.models import AbstractUser +from django.core.cache import cache +from django.db import models from django.shortcuts import reverse +from django.utils import timezone from django.utils.module_loading import import_string +from django.utils.translation import ugettext_lazy as _ -from orgs.utils import current_org -from orgs.models import Organization -from rbac.const import Scope from common.db import fields, models as jms_models from common.utils import ( - date_expired_default, get_logger, lazyproperty, random_string, bulk_create_with_signal + date_expired_default, get_logger, lazyproperty, + random_string, bulk_create_with_signal +) +from orgs.utils import current_org +from rbac.const import Scope +from ..signals import ( + post_user_change_password, post_user_leave_org, pre_user_leave_org ) -from ..signals import post_user_change_password, post_user_leave_org, pre_user_leave_org __all__ = ['User', 'UserPasswordHistory']