From b4b9c805ffa94750325011ed3cf22a85bc7d0e6f Mon Sep 17 00:00:00 2001 From: ibuler Date: Mon, 24 Jul 2023 11:52:25 +0800 Subject: [PATCH] =?UTF-8?q?perf:=20=E4=BF=AE=E6=94=B9=E6=94=AF=E6=8C=81=20?= =?UTF-8?q?Django4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/accounts/api/automations/base.py | 2 +- apps/accounts/const/account.py | 2 +- apps/accounts/const/automation.py | 2 +- .../models/automations/backup_account.py | 2 +- .../models/automations/change_secret.py | 2 +- .../models/automations/gather_account.py | 2 +- .../models/automations/push_account.py | 2 +- .../models/automations/verify_account.py | 2 +- apps/accounts/models/base.py | 2 +- apps/accounts/notifications.py | 2 +- apps/accounts/serializers/account/account.py | 2 +- apps/accounts/serializers/account/backup.py | 2 +- apps/accounts/serializers/account/base.py | 2 +- .../serializers/account/gathered_account.py | 2 +- apps/accounts/serializers/account/template.py | 2 +- apps/accounts/serializers/automations/base.py | 2 +- .../serializers/automations/change_secret.py | 2 +- apps/accounts/tasks/push_account.py | 2 +- apps/accounts/utils.py | 2 +- apps/acls/apps.py | 2 +- apps/acls/models/command_acl.py | 2 +- apps/acls/models/login_acl.py | 2 +- apps/acls/models/login_asset_acl.py | 2 +- apps/acls/serializers/base.py | 2 +- apps/acls/serializers/command_acl.py | 2 +- apps/acls/serializers/login_acl.py | 2 +- apps/acls/serializers/rules/rules.py | 2 +- apps/applications/apps.py | 3 +- .../migrations/0006_application.py | 2 +- apps/applications/models.py | 2 +- apps/assets/api/domain.py | 3 +- apps/assets/api/node.py | 2 +- apps/assets/apps.py | 5 +- .../automations/ping_gateway/manager.py | 2 +- apps/assets/const/automation.py | 2 +- apps/assets/exceptions.py | 2 +- apps/assets/models/asset/common.py | 2 +- apps/assets/models/asset/host.py | 2 +- apps/assets/models/automations/base.py | 2 +- .../assets/models/automations/gather_facts.py | 2 +- apps/assets/models/automations/ping.py | 2 +- apps/assets/models/base.py | 2 +- apps/assets/models/cmd_filter.py | 2 +- apps/assets/models/domain.py | 2 +- apps/assets/models/favorite_asset.py | 2 +- apps/assets/models/gateway.py | 2 +- apps/assets/models/group.py | 2 +- apps/assets/models/label.py | 2 +- apps/assets/models/node.py | 5 +- apps/assets/models/utils.py | 2 +- apps/assets/notifications.py | 4 +- apps/assets/serializers/asset/common.py | 2 +- apps/assets/serializers/asset/database.py | 4 +- apps/assets/serializers/automations/base.py | 2 +- apps/assets/serializers/domain.py | 2 +- apps/assets/serializers/gateway.py | 2 +- apps/assets/serializers/label.py | 2 +- apps/assets/serializers/node.py | 2 +- apps/assets/tasks/ping_gateway.py | 2 +- apps/assets/tasks/utils.py | 3 +- apps/audits/apps.py | 3 +- apps/audits/backends/db.py | 2 +- apps/audits/const.py | 2 +- apps/audits/handler.py | 2 +- apps/audits/models.py | 4 +- apps/audits/serializers.py | 5 +- apps/audits/signal_handlers/login_log.py | 2 +- apps/authentication/api/confirm.py | 4 +- apps/authentication/api/connection_token.py | 2 +- apps/authentication/api/mfa.py | 12 +- apps/authentication/api/password.py | 26 +-- apps/authentication/apps.py | 7 +- apps/authentication/backends/custom.py | 8 +- apps/authentication/backends/drf.py | 15 +- .../authentication/backends/oauth2/signals.py | 6 +- apps/authentication/backends/oidc/signals.py | 6 +- apps/authentication/backends/oidc/views.py | 25 ++- apps/authentication/backends/saml2/signals.py | 3 +- apps/authentication/confirm/password.py | 2 +- apps/authentication/confirm/relogin.py | 2 +- apps/authentication/errors/failed.py | 4 +- apps/authentication/errors/mfa.py | 2 +- apps/authentication/errors/redirect.py | 2 +- apps/authentication/forms.py | 4 +- apps/authentication/mfa/base.py | 3 +- apps/authentication/mfa/custom.py | 2 +- apps/authentication/mfa/radius.py | 2 +- apps/authentication/mfa/sms.py | 4 +- apps/authentication/middleware.py | 2 +- apps/authentication/mixins.py | 2 +- apps/authentication/models/access_key.py | 2 +- .../authentication/models/connection_token.py | 2 +- apps/authentication/models/private_token.py | 2 +- apps/authentication/models/sso_token.py | 2 +- apps/authentication/models/temp_token.py | 6 +- apps/authentication/notifications.py | 4 +- .../serializers/connect_token_secret.py | 2 +- .../serializers/connection_token.py | 2 +- .../serializers/password_mfa.py | 2 +- apps/authentication/signals.py | 10 +- apps/authentication/utils.py | 8 +- apps/authentication/views/base.py | 13 +- apps/authentication/views/dingtalk.py | 5 +- apps/authentication/views/feishu.py | 6 +- apps/authentication/views/login.py | 2 +- apps/authentication/views/wecom.py | 40 ++--- apps/common/api/action.py | 2 +- apps/common/const/choices.py | 2 +- apps/common/const/common.py | 2 +- apps/common/db/encoder.py | 4 +- apps/common/db/fields.py | 8 +- apps/common/db/mixins.py | 2 +- apps/common/db/models.py | 2 +- apps/common/drf/metadata.py | 8 +- apps/common/drf/parsers/base.py | 2 +- apps/common/drf/renders/base.py | 2 +- apps/common/sdk/im/wecom/__init__.py | 23 ++- apps/common/sdk/sms/cmpp2.py | 16 +- apps/common/tasks.py | 6 +- apps/common/utils/encode.py | 2 +- apps/common/utils/ip/geoip/utils.py | 8 +- apps/common/validators.py | 7 +- apps/jumpserver/conf.py | 4 +- apps/jumpserver/context_processor.py | 2 +- apps/jumpserver/settings/base.py | 2 +- apps/jumpserver/views/celery_flower.py | 6 +- apps/jumpserver/views/other.py | 10 +- apps/locale/ja/LC_MESSAGES/django.po | 4 +- apps/locale/zh/LC_MESSAGES/django.po | 4 +- apps/notifications/apps.py | 4 +- apps/notifications/models/notification.py | 2 +- apps/ops/api/celery.py | 2 +- apps/ops/api/playbook.py | 2 +- apps/ops/const.py | 2 +- apps/ops/mixin.py | 2 +- apps/ops/models/adhoc.py | 3 +- apps/ops/tasks.py | 2 +- apps/orgs/api.py | 2 +- apps/orgs/apps.py | 5 +- apps/orgs/mixins/models.py | 2 +- apps/orgs/mixins/serializers.py | 2 +- apps/orgs/models.py | 2 +- apps/orgs/tasks.py | 2 +- apps/perms/api/user_permission/mixin.py | 9 +- apps/perms/apps.py | 5 +- apps/perms/const.py | 2 +- apps/perms/filters.py | 12 +- apps/perms/models/asset_permission.py | 2 +- apps/perms/models/perm_node.py | 2 +- apps/perms/notifications.py | 2 +- apps/perms/serializers/permission.py | 2 +- apps/perms/serializers/user_permission.py | 2 +- apps/rbac/api/role.py | 2 +- apps/rbac/api/rolebinding.py | 18 +- apps/rbac/apps.py | 3 +- apps/rbac/builtin.py | 16 +- apps/rbac/const.py | 2 +- apps/rbac/models/permission.py | 7 +- apps/rbac/models/role.py | 2 +- apps/rbac/serializers/permission.py | 5 +- apps/rbac/serializers/role.py | 2 +- apps/rbac/serializers/rolebinding.py | 9 +- apps/settings/api/email.py | 2 +- apps/settings/api/ldap.py | 2 +- apps/settings/apps.py | 5 +- apps/settings/models.py | 11 +- apps/settings/serializers/auth/base.py | 2 +- apps/settings/serializers/auth/cas.py | 2 +- apps/settings/serializers/auth/dingtalk.py | 2 +- apps/settings/serializers/auth/feishu.py | 2 +- apps/settings/serializers/auth/ldap.py | 2 +- apps/settings/serializers/auth/oauth2.py | 2 +- apps/settings/serializers/auth/oidc.py | 2 +- apps/settings/serializers/auth/radius.py | 2 +- apps/settings/serializers/auth/saml2.py | 3 +- apps/settings/serializers/auth/sms.py | 6 +- apps/settings/serializers/auth/sso.py | 2 +- apps/settings/serializers/auth/wecom.py | 2 +- apps/settings/serializers/basic.py | 3 +- apps/settings/serializers/cleaning.py | 5 +- apps/settings/serializers/email.py | 2 +- apps/settings/serializers/other.py | 2 +- apps/settings/serializers/security.py | 8 +- apps/settings/serializers/settings.py | 13 +- apps/settings/serializers/sms.py | 2 +- apps/settings/serializers/terminal.py | 2 +- apps/settings/signals.py | 2 +- apps/settings/tasks/ldap.py | 3 +- apps/settings/utils/ldap.py | 2 +- apps/terminal/api/component/endpoint.py | 2 +- apps/terminal/api/component/storage.py | 52 +++--- apps/terminal/api/session/session.py | 2 +- apps/terminal/api/session/sharing.py | 2 +- apps/terminal/backends/command/models.py | 3 +- apps/terminal/connect_methods.py | 2 +- apps/terminal/const.py | 2 +- apps/terminal/exceptions.py | 3 +- apps/terminal/models/component/endpoint.py | 2 +- apps/terminal/models/component/status.py | 2 +- apps/terminal/models/component/storage.py | 2 +- apps/terminal/models/component/task.py | 2 +- apps/terminal/models/component/terminal.py | 4 +- apps/terminal/models/session/command.py | 2 +- apps/terminal/models/session/replay.py | 2 +- apps/terminal/models/session/session.py | 2 +- apps/terminal/models/session/sharing.py | 2 +- apps/terminal/notifications.py | 4 +- apps/terminal/serializers/command.py | 7 +- apps/terminal/serializers/session.py | 2 +- apps/terminal/serializers/sharing.py | 2 +- apps/terminal/serializers/storage.py | 12 +- apps/terminal/serializers/terminal.py | 2 +- apps/terminal/utils/db_port_mapper.py | 2 +- apps/tickets/apps.py | 4 +- apps/tickets/const.py | 2 +- apps/tickets/errors.py | 2 +- apps/tickets/handlers/apply_asset.py | 2 +- apps/tickets/handlers/base.py | 2 +- apps/tickets/models/comment.py | 2 +- apps/tickets/models/flow.py | 2 +- apps/tickets/models/relation.py | 8 +- apps/tickets/models/ticket/general.py | 2 +- apps/tickets/notifications.py | 2 +- apps/tickets/serializers/flow.py | 10 +- .../tickets/serializers/ticket/apply_asset.py | 2 +- apps/tickets/serializers/ticket/common.py | 2 +- apps/tickets/serializers/ticket/ticket.py | 2 +- apps/tickets/views/approve.py | 5 +- apps/users/api/user.py | 3 +- apps/users/apps.py | 5 +- apps/users/const.py | 2 +- apps/users/models/group.py | 2 +- apps/users/models/user.py | 2 +- apps/users/notifications.py | 6 +- apps/users/serializers/group.py | 2 +- apps/users/serializers/profile.py | 2 +- apps/users/serializers/user.py | 2 +- apps/users/signal_handlers.py | 2 +- apps/users/signals.py | 9 +- apps/users/views/profile/otp.py | 16 +- apps/users/views/profile/password.py | 7 +- apps/users/views/profile/reset.py | 8 +- requirements/requirements.txt | 159 +++++++++--------- 243 files changed, 546 insertions(+), 614 deletions(-) diff --git a/apps/accounts/api/automations/base.py b/apps/accounts/api/automations/base.py index 7d5db0ac8..d5e588c04 100644 --- a/apps/accounts/api/automations/base.py +++ b/apps/accounts/api/automations/base.py @@ -1,5 +1,5 @@ from django.shortcuts import get_object_or_404 -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from rest_framework import status, mixins, viewsets from rest_framework.response import Response diff --git a/apps/accounts/const/account.py b/apps/accounts/const/account.py index 9a3541001..44caa2889 100644 --- a/apps/accounts/const/account.py +++ b/apps/accounts/const/account.py @@ -1,5 +1,5 @@ from django.db.models import TextChoices -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ class SecretType(TextChoices): diff --git a/apps/accounts/const/automation.py b/apps/accounts/const/automation.py index 791527078..cb39703e0 100644 --- a/apps/accounts/const/automation.py +++ b/apps/accounts/const/automation.py @@ -1,5 +1,5 @@ from django.db import models -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from assets.const import Connectivity from common.db.fields import TreeChoices diff --git a/apps/accounts/models/automations/backup_account.py b/apps/accounts/models/automations/backup_account.py index fba3b3149..c72e0daef 100644 --- a/apps/accounts/models/automations/backup_account.py +++ b/apps/accounts/models/automations/backup_account.py @@ -6,7 +6,7 @@ import uuid from celery import current_task from django.db import models from django.db.models import F -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from common.const.choices import Trigger from common.db.encoder import ModelJSONFieldEncoder diff --git a/apps/accounts/models/automations/change_secret.py b/apps/accounts/models/automations/change_secret.py index 2226040a2..a2a1d42a2 100644 --- a/apps/accounts/models/automations/change_secret.py +++ b/apps/accounts/models/automations/change_secret.py @@ -1,5 +1,5 @@ from django.db import models -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from accounts.const import ( AutomationTypes, SecretType, SecretStrategy, SSHKeyStrategy diff --git a/apps/accounts/models/automations/gather_account.py b/apps/accounts/models/automations/gather_account.py index dd9b5c862..9ea5dcc3b 100644 --- a/apps/accounts/models/automations/gather_account.py +++ b/apps/accounts/models/automations/gather_account.py @@ -1,6 +1,6 @@ from django.db import models from django.db.models import Q -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from accounts.const import AutomationTypes, Source from accounts.models import Account diff --git a/apps/accounts/models/automations/push_account.py b/apps/accounts/models/automations/push_account.py index d3a14411f..fe628f4cb 100644 --- a/apps/accounts/models/automations/push_account.py +++ b/apps/accounts/models/automations/push_account.py @@ -1,5 +1,5 @@ from django.db import models -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from accounts.const import AutomationTypes from accounts.models import Account diff --git a/apps/accounts/models/automations/verify_account.py b/apps/accounts/models/automations/verify_account.py index 03ec4f8c9..ae9beb9a6 100644 --- a/apps/accounts/models/automations/verify_account.py +++ b/apps/accounts/models/automations/verify_account.py @@ -1,4 +1,4 @@ -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from accounts.const import AutomationTypes from .base import AccountBaseAutomation diff --git a/apps/accounts/models/base.py b/apps/accounts/models/base.py index e4bd780ac..3f9f70883 100644 --- a/apps/accounts/models/base.py +++ b/apps/accounts/models/base.py @@ -6,7 +6,7 @@ from hashlib import md5 import sshpubkeys from django.conf import settings from django.db import models -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from accounts.const import SecretType from common.db import fields diff --git a/apps/accounts/notifications.py b/apps/accounts/notifications.py index 3c4897df1..190eb8fb6 100644 --- a/apps/accounts/notifications.py +++ b/apps/accounts/notifications.py @@ -1,4 +1,4 @@ -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from common.tasks import send_mail_attachment_async from users.models import User diff --git a/apps/accounts/serializers/account/account.py b/apps/accounts/serializers/account/account.py index cc1952a1c..54035e4be 100644 --- a/apps/accounts/serializers/account/account.py +++ b/apps/accounts/serializers/account/account.py @@ -3,7 +3,7 @@ from copy import deepcopy from django.db import IntegrityError from django.db.models import Q -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from rest_framework import serializers from rest_framework.generics import get_object_or_404 from rest_framework.validators import UniqueTogetherValidator diff --git a/apps/accounts/serializers/account/backup.py b/apps/accounts/serializers/account/backup.py index 712bdd095..b6ec22203 100644 --- a/apps/accounts/serializers/account/backup.py +++ b/apps/accounts/serializers/account/backup.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- # -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from rest_framework import serializers from accounts.models import AccountBackupAutomation, AccountBackupExecution diff --git a/apps/accounts/serializers/account/base.py b/apps/accounts/serializers/account/base.py index 2f9660bd5..e2a837b03 100644 --- a/apps/accounts/serializers/account/base.py +++ b/apps/accounts/serializers/account/base.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from rest_framework import serializers from accounts.const import SecretType diff --git a/apps/accounts/serializers/account/gathered_account.py b/apps/accounts/serializers/account/gathered_account.py index b382fda4c..a36bddc5e 100644 --- a/apps/accounts/serializers/account/gathered_account.py +++ b/apps/accounts/serializers/account/gathered_account.py @@ -1,4 +1,4 @@ -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from accounts.models import GatheredAccount from orgs.mixins.serializers import BulkOrgResourceModelSerializer diff --git a/apps/accounts/serializers/account/template.py b/apps/accounts/serializers/account/template.py index ffe8c7564..9642c36b0 100644 --- a/apps/accounts/serializers/account/template.py +++ b/apps/accounts/serializers/account/template.py @@ -1,4 +1,4 @@ -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from rest_framework import serializers from accounts.models import AccountTemplate, Account diff --git a/apps/accounts/serializers/automations/base.py b/apps/accounts/serializers/automations/base.py index 8e7f11f23..c2cd21be3 100644 --- a/apps/accounts/serializers/automations/base.py +++ b/apps/accounts/serializers/automations/base.py @@ -1,4 +1,4 @@ -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from rest_framework import serializers from accounts.models import AutomationExecution diff --git a/apps/accounts/serializers/automations/change_secret.py b/apps/accounts/serializers/automations/change_secret.py index 3c6e11205..da8a1585c 100644 --- a/apps/accounts/serializers/automations/change_secret.py +++ b/apps/accounts/serializers/automations/change_secret.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- # -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from rest_framework import serializers from accounts.const import ( diff --git a/apps/accounts/tasks/push_account.py b/apps/accounts/tasks/push_account.py index 623481be9..0e0608999 100644 --- a/apps/accounts/tasks/push_account.py +++ b/apps/accounts/tasks/push_account.py @@ -1,5 +1,5 @@ from celery import shared_task -from django.utils.translation import gettext_noop, ugettext_lazy as _ +from django.utils.translation import gettext_noop, gettext_lazy as _ from accounts.const import AutomationTypes from accounts.tasks.common import quickstart_automation_by_snapshot diff --git a/apps/accounts/utils.py b/apps/accounts/utils.py index ef0d61fe1..1a24008fc 100644 --- a/apps/accounts/utils.py +++ b/apps/accounts/utils.py @@ -1,4 +1,4 @@ -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from rest_framework import serializers from accounts.const import ( diff --git a/apps/acls/apps.py b/apps/acls/apps.py index 0a93fe495..291ce855e 100644 --- a/apps/acls/apps.py +++ b/apps/acls/apps.py @@ -1,5 +1,5 @@ from django.apps import AppConfig -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ class AclsConfig(AppConfig): diff --git a/apps/acls/models/command_acl.py b/apps/acls/models/command_acl.py index 9029142f2..4fbfd0829 100644 --- a/apps/acls/models/command_acl.py +++ b/apps/acls/models/command_acl.py @@ -3,7 +3,7 @@ import re from django.db import models -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from common.utils import lazyproperty, get_logger from orgs.mixins.models import JMSOrgBaseModel diff --git a/apps/acls/models/login_acl.py b/apps/acls/models/login_acl.py index 7191fe4b6..6f2e21b34 100644 --- a/apps/acls/models/login_acl.py +++ b/apps/acls/models/login_acl.py @@ -1,5 +1,5 @@ from django.db import models -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from common.utils import get_request_ip, get_ip_city from common.utils.timezone import local_now_display diff --git a/apps/acls/models/login_asset_acl.py b/apps/acls/models/login_asset_acl.py index 5d2293a18..7669152b4 100644 --- a/apps/acls/models/login_asset_acl.py +++ b/apps/acls/models/login_asset_acl.py @@ -1,5 +1,5 @@ from django.db import models -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from .base import UserAssetAccountBaseACL diff --git a/apps/acls/serializers/base.py b/apps/acls/serializers/base.py index 94c4d9fa1..4c2d80bfc 100644 --- a/apps/acls/serializers/base.py +++ b/apps/acls/serializers/base.py @@ -1,4 +1,4 @@ -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from rest_framework import serializers from acls.models.base import BaseACL diff --git a/apps/acls/serializers/command_acl.py b/apps/acls/serializers/command_acl.py index 672164012..dde953277 100644 --- a/apps/acls/serializers/command_acl.py +++ b/apps/acls/serializers/command_acl.py @@ -1,4 +1,4 @@ -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from rest_framework import serializers from acls.models import CommandGroup, CommandFilterACL diff --git a/apps/acls/serializers/login_acl.py b/apps/acls/serializers/login_acl.py index c86424986..737e5269d 100644 --- a/apps/acls/serializers/login_acl.py +++ b/apps/acls/serializers/login_acl.py @@ -1,4 +1,4 @@ -from django.utils.translation import ugettext as _ +from django.utils.translation import gettext as _ from common.serializers import MethodSerializer from orgs.mixins.serializers import BulkOrgResourceModelSerializer diff --git a/apps/acls/serializers/rules/rules.py b/apps/acls/serializers/rules/rules.py index 85b865cd6..4c88d0ac7 100644 --- a/apps/acls/serializers/rules/rules.py +++ b/apps/acls/serializers/rules/rules.py @@ -1,7 +1,7 @@ # coding: utf-8 # +from django.utils.translation import gettext_lazy as _ from rest_framework import serializers -from django.utils.translation import ugettext_lazy as _ from common.utils import get_logger from common.utils.ip import is_ip_address, is_ip_network, is_ip_segment diff --git a/apps/applications/apps.py b/apps/applications/apps.py index a025a0517..c672bf36e 100644 --- a/apps/applications/apps.py +++ b/apps/applications/apps.py @@ -1,7 +1,7 @@ from __future__ import unicode_literals -from django.utils.translation import ugettext_lazy as _ from django.apps import AppConfig +from django.utils.translation import gettext_lazy as _ class ApplicationsConfig(AppConfig): @@ -9,5 +9,4 @@ class ApplicationsConfig(AppConfig): verbose_name = _('Applications') def ready(self): - from . import signal_handlers super().ready() diff --git a/apps/applications/migrations/0006_application.py b/apps/applications/migrations/0006_application.py index fbe629873..0333b860d 100644 --- a/apps/applications/migrations/0006_application.py +++ b/apps/applications/migrations/0006_application.py @@ -127,7 +127,7 @@ class Migration(migrations.Migration): ('name', models.CharField(max_length=128, verbose_name='Name')), ('category', models.CharField(choices=[('db', 'Database'), ('remote_app', 'Remote app'), ('cloud', 'Cloud')], max_length=16, verbose_name='Category')), ('type', models.CharField(choices=[('mysql', 'MySQL'), ('oracle', 'Oracle'), ('postgresql', 'PostgreSQL'), ('mariadb', 'MariaDB'), ('chrome', 'Chrome'), ('mysql_workbench', 'MySQL Workbench'), ('vmware_client', 'vSphere Client'), ('custom', 'Custom'), ('k8s', 'Kubernetes')], max_length=16, verbose_name='Type')), - ('attrs', django_mysql.models.JSONField(default=dict)), + ('attrs', models.JSONField(default=dict)), ('comment', models.TextField(blank=True, default='', max_length=128, verbose_name='Comment')), ('domain', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='applications', to='assets.Domain', verbose_name='Domain')), ], diff --git a/apps/applications/models.py b/apps/applications/models.py index 60efc8aab..c13ddc092 100644 --- a/apps/applications/models.py +++ b/apps/applications/models.py @@ -1,5 +1,5 @@ from django.db import models -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from common.db.models import JMSBaseModel from orgs.mixins.models import OrgModelMixin diff --git a/apps/assets/api/domain.py b/apps/assets/api/domain.py index 40d676d78..86097247c 100644 --- a/apps/assets/api/domain.py +++ b/apps/assets/api/domain.py @@ -1,5 +1,5 @@ # ~*~ coding: utf-8 ~*~ -from django.utils.translation import ugettext as _ +from django.utils.translation import gettext as _ from django.views.generic.detail import SingleObjectMixin from rest_framework.serializers import ValidationError from rest_framework.views import APIView, Response @@ -29,6 +29,7 @@ class DomainViewSet(OrgBulkModelViewSet): def get_queryset(self): return super().get_queryset().prefetch_related('assets') + class GatewayViewSet(HostViewSet): perm_model = Gateway filterset_fields = ("domain__name", "name", "domain") diff --git a/apps/assets/api/node.py b/apps/assets/api/node.py index 47ac0b4e6..30c533179 100644 --- a/apps/assets/api/node.py +++ b/apps/assets/api/node.py @@ -3,7 +3,7 @@ from collections import namedtuple, defaultdict from functools import partial from django.db.models.signals import m2m_changed -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from rest_framework import status from rest_framework.decorators import action from rest_framework.generics import get_object_or_404 diff --git a/apps/assets/apps.py b/apps/assets/apps.py index a91b10ffc..2966894d6 100644 --- a/apps/assets/apps.py +++ b/apps/assets/apps.py @@ -1,7 +1,7 @@ from __future__ import unicode_literals -from django.utils.translation import ugettext_lazy as _ from django.apps import AppConfig +from django.utils.translation import gettext_lazy as _ class AssetsConfig(AppConfig): @@ -13,6 +13,3 @@ class AssetsConfig(AppConfig): def ready(self): super().ready() - from . import signal_handlers - from . import tasks - diff --git a/apps/assets/automations/ping_gateway/manager.py b/apps/assets/automations/ping_gateway/manager.py index b3f243fdb..c272570d3 100644 --- a/apps/assets/automations/ping_gateway/manager.py +++ b/apps/assets/automations/ping_gateway/manager.py @@ -2,7 +2,7 @@ import socket import paramiko from django.utils import timezone -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from assets.const import AutomationTypes, Connectivity from assets.models import Gateway diff --git a/apps/assets/const/automation.py b/apps/assets/const/automation.py index 831b11b66..4a2054db1 100644 --- a/apps/assets/const/automation.py +++ b/apps/assets/const/automation.py @@ -1,5 +1,5 @@ from django.db.models import TextChoices -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ class Connectivity(TextChoices): diff --git a/apps/assets/exceptions.py b/apps/assets/exceptions.py index ad22b6339..07e4de0a2 100644 --- a/apps/assets/exceptions.py +++ b/apps/assets/exceptions.py @@ -1,4 +1,4 @@ -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from rest_framework import status from common.exceptions import JMSException diff --git a/apps/assets/models/asset/common.py b/apps/assets/models/asset/common.py index 7a564f787..b7425b870 100644 --- a/apps/assets/models/asset/common.py +++ b/apps/assets/models/asset/common.py @@ -8,7 +8,7 @@ from collections import defaultdict from django.db import models from django.db.models import Q from django.forms import model_to_dict -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from assets import const from common.db.fields import EncryptMixin diff --git a/apps/assets/models/asset/host.py b/apps/assets/models/asset/host.py index 69187c828..a424cfcec 100644 --- a/apps/assets/models/asset/host.py +++ b/apps/assets/models/asset/host.py @@ -1,4 +1,4 @@ -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from .common import Asset diff --git a/apps/assets/models/automations/base.py b/apps/assets/models/automations/base.py index ba9c3ffcb..27e5ed74a 100644 --- a/apps/assets/models/automations/base.py +++ b/apps/assets/models/automations/base.py @@ -2,7 +2,7 @@ import uuid from celery import current_task from django.db import models -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from assets.models.asset import Asset from assets.models.node import Node diff --git a/apps/assets/models/automations/gather_facts.py b/apps/assets/models/automations/gather_facts.py index cf11ea41b..5e179cd83 100644 --- a/apps/assets/models/automations/gather_facts.py +++ b/apps/assets/models/automations/gather_facts.py @@ -1,4 +1,4 @@ -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from assets.const import AutomationTypes from .base import AssetBaseAutomation diff --git a/apps/assets/models/automations/ping.py b/apps/assets/models/automations/ping.py index a8df4e7c8..98aee079e 100644 --- a/apps/assets/models/automations/ping.py +++ b/apps/assets/models/automations/ping.py @@ -1,4 +1,4 @@ -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from assets.const import AutomationTypes from .base import AssetBaseAutomation diff --git a/apps/assets/models/base.py b/apps/assets/models/base.py index 8f5ed713f..c4866c22b 100644 --- a/apps/assets/models/base.py +++ b/apps/assets/models/base.py @@ -3,7 +3,7 @@ from django.db import models from django.utils import timezone -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from assets.const import Connectivity from common.utils import ( diff --git a/apps/assets/models/cmd_filter.py b/apps/assets/models/cmd_filter.py index dd0d7b0d1..ec6f1be3e 100644 --- a/apps/assets/models/cmd_filter.py +++ b/apps/assets/models/cmd_filter.py @@ -4,7 +4,7 @@ import uuid from django.core.validators import MinValueValidator, MaxValueValidator from django.db import models -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from common.utils import get_logger from orgs.mixins.models import OrgModelMixin diff --git a/apps/assets/models/domain.py b/apps/assets/models/domain.py index 6dd5e3c4f..587f41d7c 100644 --- a/apps/assets/models/domain.py +++ b/apps/assets/models/domain.py @@ -3,7 +3,7 @@ import random from django.db import models -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from common.utils import get_logger from orgs.mixins.models import JMSOrgBaseModel diff --git a/apps/assets/models/favorite_asset.py b/apps/assets/models/favorite_asset.py index 92d52fe7f..052551402 100644 --- a/apps/assets/models/favorite_asset.py +++ b/apps/assets/models/favorite_asset.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # from django.db import models -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from common.db.models import JMSBaseModel diff --git a/apps/assets/models/gateway.py b/apps/assets/models/gateway.py index 0fc6626df..c474da26d 100644 --- a/apps/assets/models/gateway.py +++ b/apps/assets/models/gateway.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- # -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from assets.const import GATEWAY_NAME from assets.models.platform import Platform diff --git a/apps/assets/models/group.py b/apps/assets/models/group.py index 02db7f41f..ad3545a1e 100644 --- a/apps/assets/models/group.py +++ b/apps/assets/models/group.py @@ -7,7 +7,7 @@ from __future__ import unicode_literals import uuid from django.db import models -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ __all__ = ['AssetGroup'] diff --git a/apps/assets/models/label.py b/apps/assets/models/label.py index 3aff63385..5dbd50361 100644 --- a/apps/assets/models/label.py +++ b/apps/assets/models/label.py @@ -2,7 +2,7 @@ # from django.db import models -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from common.utils import lazyproperty from orgs.mixins.models import JMSOrgBaseModel diff --git a/apps/assets/models/node.py b/apps/assets/models/node.py index 94ff9aba5..139295f69 100644 --- a/apps/assets/models/node.py +++ b/apps/assets/models/node.py @@ -10,8 +10,7 @@ from django.core.cache import cache from django.db import models, transaction from django.db.models import Q, Manager from django.db.transaction import atomic -from django.utils.translation import ugettext -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _, gettext from common.db.models import output_as_string from common.utils import get_logger @@ -163,7 +162,7 @@ class FamilyMixin: return key def get_next_child_preset_name(self): - name = ugettext("New node") + name = gettext("New node") values = [ child.value[child.value.rfind(' '):] for child in self.get_children() diff --git a/apps/assets/models/utils.py b/apps/assets/models/utils.py index a5e4da1da..ee3de1043 100644 --- a/apps/assets/models/utils.py +++ b/apps/assets/models/utils.py @@ -3,7 +3,7 @@ # from django.core.exceptions import ValidationError -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from common.utils import validate_ssh_private_key diff --git a/apps/assets/notifications.py b/apps/assets/notifications.py index 14e84768e..8f6577b8a 100644 --- a/apps/assets/notifications.py +++ b/apps/assets/notifications.py @@ -1,4 +1,4 @@ -from django.utils.translation import ugettext as _ +from django.utils.translation import gettext as _ from notifications.notifications import UserMessage @@ -22,4 +22,4 @@ class BulkUpdatePlatformSkipAssetUserMsg(UserMessage): from assets.models import Asset user = User.objects.first() assets = Asset.objects.all()[:10] - return cls(user, assets) \ No newline at end of file + return cls(user, assets) diff --git a/apps/assets/serializers/asset/common.py b/apps/assets/serializers/asset/common.py index 69ccf8e21..718efbb0d 100644 --- a/apps/assets/serializers/asset/common.py +++ b/apps/assets/serializers/asset/common.py @@ -3,7 +3,7 @@ from django.db.models import F from django.db.transaction import atomic -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from rest_framework import serializers from accounts.models import Account diff --git a/apps/assets/serializers/asset/database.py b/apps/assets/serializers/asset/database.py index 386cb87e9..17a122fd6 100644 --- a/apps/assets/serializers/asset/database.py +++ b/apps/assets/serializers/asset/database.py @@ -1,6 +1,6 @@ -from django.utils.translation import ugettext_lazy as _ -from rest_framework.serializers import ValidationError +from django.utils.translation import gettext_lazy as _ from rest_framework import serializers +from rest_framework.serializers import ValidationError from assets.models import Database from assets.serializers.gateway import GatewayWithAccountSecretSerializer diff --git a/apps/assets/serializers/automations/base.py b/apps/assets/serializers/automations/base.py index d930fd1dc..f720ed077 100644 --- a/apps/assets/serializers/automations/base.py +++ b/apps/assets/serializers/automations/base.py @@ -1,4 +1,4 @@ -from django.utils.translation import ugettext as _ +from django.utils.translation import gettext as _ from rest_framework import serializers from assets.models import Asset, Node, BaseAutomation, AutomationExecution diff --git a/apps/assets/serializers/domain.py b/apps/assets/serializers/domain.py index 74eb1117a..a22d1a9ad 100644 --- a/apps/assets/serializers/domain.py +++ b/apps/assets/serializers/domain.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- # -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from rest_framework import serializers from common.serializers.fields import ObjectRelatedField diff --git a/apps/assets/serializers/gateway.py b/apps/assets/serializers/gateway.py index 259bc13f8..e596ef5a3 100644 --- a/apps/assets/serializers/gateway.py +++ b/apps/assets/serializers/gateway.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- # -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from rest_framework import serializers from .asset.common import AccountSecretSerializer diff --git a/apps/assets/serializers/label.py b/apps/assets/serializers/label.py index 48bc0885f..3d913aeea 100644 --- a/apps/assets/serializers/label.py +++ b/apps/assets/serializers/label.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # from django.db.models import Count -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from rest_framework import serializers from orgs.mixins.serializers import BulkOrgResourceModelSerializer diff --git a/apps/assets/serializers/node.py b/apps/assets/serializers/node.py index fb4c12d67..ac161318b 100644 --- a/apps/assets/serializers/node.py +++ b/apps/assets/serializers/node.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- +from django.utils.translation import gettext as _ from rest_framework import serializers -from django.utils.translation import ugettext as _ from orgs.mixins.serializers import BulkOrgResourceModelSerializer from ..models import Asset, Node diff --git a/apps/assets/tasks/ping_gateway.py b/apps/assets/tasks/ping_gateway.py index 789a81c87..05ab7fb0c 100644 --- a/apps/assets/tasks/ping_gateway.py +++ b/apps/assets/tasks/ping_gateway.py @@ -1,6 +1,6 @@ # ~*~ coding: utf-8 ~*~ from celery import shared_task -from django.utils.translation import gettext_noop, ugettext_lazy as _ +from django.utils.translation import gettext_noop, gettext_lazy as _ from assets.const import AutomationTypes from common.utils import get_logger diff --git a/apps/assets/tasks/utils.py b/apps/assets/tasks/utils.py index a60f1b494..d65351eaa 100644 --- a/apps/assets/tasks/utils.py +++ b/apps/assets/tasks/utils.py @@ -1,10 +1,9 @@ # -*- coding: utf-8 -*- # -from django.utils.translation import ugettext as _ +from django.utils.translation import gettext as _ from common.utils import get_logger - logger = get_logger(__file__) __all__ = [ 'check_asset_can_run_ansible', 'clean_ansible_task_hosts', diff --git a/apps/audits/apps.py b/apps/audits/apps.py index 6e198176b..40de7ddaa 100644 --- a/apps/audits/apps.py +++ b/apps/audits/apps.py @@ -1,7 +1,7 @@ from django.apps import AppConfig from django.conf import settings -from django.utils.translation import ugettext_lazy as _ from django.db.models.signals import post_save +from django.utils.translation import gettext_lazy as _ class AuditsConfig(AppConfig): @@ -10,7 +10,6 @@ class AuditsConfig(AppConfig): def ready(self): from . import signal_handlers - from . import tasks if settings.SYSLOG_ENABLE: post_save.connect(signal_handlers.on_audits_log_create) diff --git a/apps/audits/backends/db.py b/apps/audits/backends/db.py index 0c0f46a4a..ac589931d 100644 --- a/apps/audits/backends/db.py +++ b/apps/audits/backends/db.py @@ -1,5 +1,5 @@ # ~*~ coding: utf-8 ~*~ -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from audits.models import OperateLog diff --git a/apps/audits/const.py b/apps/audits/const.py index ae8679f01..a2832ef9d 100644 --- a/apps/audits/const.py +++ b/apps/audits/const.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # -from django.utils.translation import ugettext_lazy as _ from django.db.models import TextChoices, IntegerChoices +from django.utils.translation import gettext_lazy as _ DEFAULT_CITY = _("Unknown") diff --git a/apps/audits/handler.py b/apps/audits/handler.py index 6ac055778..7d9e331cb 100644 --- a/apps/audits/handler.py +++ b/apps/audits/handler.py @@ -3,7 +3,7 @@ from datetime import datetime from django.core.cache import cache from django.db import transaction -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from common.local import encrypted_field_set from common.utils import get_request_ip, get_logger diff --git a/apps/audits/models.py b/apps/audits/models.py index a0de58d05..42e712dbd 100644 --- a/apps/audits/models.py +++ b/apps/audits/models.py @@ -1,11 +1,11 @@ import os import uuid +from django.conf import settings from django.db import models from django.db.models import Q -from django.conf import settings from django.utils import timezone -from django.utils.translation import gettext, ugettext_lazy as _ +from django.utils.translation import gettext, gettext_lazy as _ from common.db.encoder import ModelJSONFieldEncoder from common.utils import lazyproperty diff --git a/apps/audits/serializers.py b/apps/audits/serializers.py index 7b7573232..a90651bc9 100644 --- a/apps/audits/serializers.py +++ b/apps/audits/serializers.py @@ -1,13 +1,14 @@ # -*- coding: utf-8 -*- # -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from rest_framework import serializers -from orgs.mixins.serializers import BulkOrgResourceModelSerializer + from audits.backends.db import OperateLogStore from common.serializers.fields import LabeledChoiceField from common.utils import reverse, i18n_trans from common.utils.timezone import as_current_tz from ops.serializers.job import JobExecutionSerializer +from orgs.mixins.serializers import BulkOrgResourceModelSerializer from terminal.models import Session from . import models from .const import ( diff --git a/apps/audits/signal_handlers/login_log.py b/apps/audits/signal_handlers/login_log.py index a73482b20..f74d55e8e 100644 --- a/apps/audits/signal_handlers/login_log.py +++ b/apps/audits/signal_handlers/login_log.py @@ -5,7 +5,7 @@ from django.contrib.auth import BACKEND_SESSION_KEY from django.dispatch import receiver from django.utils import timezone, translation from django.utils.functional import LazyObject -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from rest_framework.request import Request from authentication.signals import post_auth_failed, post_auth_success diff --git a/apps/authentication/api/confirm.py b/apps/authentication/api/confirm.py index d3a32a7c8..0923875a0 100644 --- a/apps/authentication/api/confirm.py +++ b/apps/authentication/api/confirm.py @@ -2,10 +2,10 @@ # import time -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ +from rest_framework import status from rest_framework.generics import RetrieveAPIView, CreateAPIView from rest_framework.response import Response -from rest_framework import status from common.permissions import IsValidUser, UserConfirmation from ..const import ConfirmType diff --git a/apps/authentication/api/connection_token.py b/apps/authentication/api/connection_token.py index a98855f85..5ad3f81db 100644 --- a/apps/authentication/api/connection_token.py +++ b/apps/authentication/api/connection_token.py @@ -7,7 +7,7 @@ from django.conf import settings from django.http import HttpResponse from django.shortcuts import get_object_or_404 from django.utils import timezone -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from rest_framework import status, serializers from rest_framework.decorators import action from rest_framework.exceptions import PermissionDenied, ValidationError diff --git a/apps/authentication/api/mfa.py b/apps/authentication/api/mfa.py index fe81149e3..3436c2eeb 100644 --- a/apps/authentication/api/mfa.py +++ b/apps/authentication/api/mfa.py @@ -1,20 +1,18 @@ # -*- coding: utf-8 -*- # -import time -from django.utils.translation import ugettext as _ -from django.conf import settings from django.shortcuts import get_object_or_404 -from rest_framework.permissions import AllowAny +from django.utils.translation import gettext as _ from rest_framework.generics import CreateAPIView -from rest_framework.serializers import ValidationError +from rest_framework.permissions import AllowAny from rest_framework.response import Response +from rest_framework.serializers import ValidationError -from common.utils import get_logger from common.exceptions import UnexpectError +from common.utils import get_logger from users.models.user import User -from .. import serializers from .. import errors +from .. import serializers from ..mixins import AuthMixin logger = get_logger(__name__) diff --git a/apps/authentication/api/password.py b/apps/authentication/api/password.py index 53f47c03c..f1b245a46 100644 --- a/apps/authentication/api/password.py +++ b/apps/authentication/api/password.py @@ -1,24 +1,24 @@ -from django.http import HttpResponseRedirect -from rest_framework.generics import CreateAPIView -from rest_framework.response import Response -from rest_framework.permissions import AllowAny -from django.utils.translation import ugettext as _ -from django.template.loader import render_to_string from django.core.cache import cache +from django.http import HttpResponseRedirect from django.shortcuts import reverse +from django.template.loader import render_to_string +from django.utils.translation import gettext as _ +from rest_framework.generics import CreateAPIView +from rest_framework.permissions import AllowAny +from rest_framework.response import Response -from common.utils.verify_code import SendAndVerifyCodeUtil -from common.permissions import IsValidUser -from common.utils.random import random_string -from common.utils import get_object_or_none +from authentication.errors import PasswordInvalid +from authentication.mixins import AuthMixin +from authentication.mixins import authenticate from authentication.serializers import ( PasswordVerifySerializer, ResetPasswordCodeSerializer ) +from common.permissions import IsValidUser +from common.utils import get_object_or_none +from common.utils.random import random_string +from common.utils.verify_code import SendAndVerifyCodeUtil from settings.utils import get_login_title from users.models import User -from authentication.mixins import authenticate -from authentication.errors import PasswordInvalid -from authentication.mixins import AuthMixin class UserResetPasswordSendCodeApi(CreateAPIView): diff --git a/apps/authentication/apps.py b/apps/authentication/apps.py index 615bb255e..4ee3ffce0 100644 --- a/apps/authentication/apps.py +++ b/apps/authentication/apps.py @@ -1,5 +1,5 @@ from django.apps import AppConfig -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ class AuthenticationConfig(AppConfig): @@ -7,9 +7,4 @@ class AuthenticationConfig(AppConfig): verbose_name = _('Authentication') def ready(self): - from . import signal_handlers - from . import notifications - from . import tasks - super().ready() - diff --git a/apps/authentication/backends/custom.py b/apps/authentication/backends/custom.py index d05e097d5..3f2b05940 100644 --- a/apps/authentication/backends/custom.py +++ b/apps/authentication/backends/custom.py @@ -1,10 +1,10 @@ from django.conf import settings -from django.utils.module_loading import import_string -from django.utils.translation import ugettext_lazy as _ -from common.utils import get_logger from django.contrib.auth import get_user_model -from authentication.signals import user_auth_failed, user_auth_success +from django.utils.module_loading import import_string +from django.utils.translation import gettext_lazy as _ +from authentication.signals import user_auth_failed, user_auth_success +from common.utils import get_logger from .base import JMSModelBackend logger = get_logger(__file__) diff --git a/apps/authentication/backends/drf.py b/apps/authentication/backends/drf.py index 10c191b1b..8d7d60e99 100644 --- a/apps/authentication/backends/drf.py +++ b/apps/authentication/backends/drf.py @@ -1,22 +1,20 @@ # -*- coding: utf-8 -*- # -import uuid import time +import uuid -from django.core.cache import cache -from django.utils.translation import ugettext as _ -from six import text_type from django.contrib.auth import get_user_model - +from django.core.cache import cache +from django.utils.translation import gettext as _ from rest_framework import HTTP_HEADER_ENCODING from rest_framework import authentication, exceptions +from six import text_type + from common.auth import signature - from common.utils import get_object_or_none, make_signature, http_to_unixtime +from .base import JMSBaseAuthBackend from ..models import AccessKey, PrivateToken -from .base import JMSBaseAuthBackend, JMSModelBackend - UserModel = get_user_model() @@ -200,4 +198,3 @@ class SignatureAuthentication(signature.SignatureAuthentication): return user, secret except (AccessKey.DoesNotExist, exceptions.ValidationError): return None, None - diff --git a/apps/authentication/backends/oauth2/signals.py b/apps/authentication/backends/oauth2/signals.py index b82ae90d7..4f192a9ad 100644 --- a/apps/authentication/backends/oauth2/signals.py +++ b/apps/authentication/backends/oauth2/signals.py @@ -1,7 +1,3 @@ from django.dispatch import Signal - -oauth2_create_or_update_user = Signal( - providing_args=['request', 'user', 'created', 'name', 'username', 'email'] -) - +oauth2_create_or_update_user = Signal() diff --git a/apps/authentication/backends/oidc/signals.py b/apps/authentication/backends/oidc/signals.py index 2f4c071e4..5346dba03 100644 --- a/apps/authentication/backends/oidc/signals.py +++ b/apps/authentication/backends/oidc/signals.py @@ -9,8 +9,4 @@ from django.dispatch import Signal - -openid_create_or_update_user = Signal( - providing_args=['request', 'user', 'created', 'name', 'username', 'email'] -) - +openid_create_or_update_user = Signal() diff --git a/apps/authentication/backends/oidc/views.py b/apps/authentication/backends/oidc/views.py index 88088245d..c638aeef6 100644 --- a/apps/authentication/backends/oidc/views.py +++ b/apps/authentication/backends/oidc/views.py @@ -11,8 +11,8 @@ import base64 import hashlib -import time import secrets +import time from django.conf import settings from django.contrib import auth @@ -20,13 +20,12 @@ from django.core.exceptions import SuspiciousOperation from django.http import HttpResponseRedirect, QueryDict from django.urls import reverse from django.utils.crypto import get_random_string -from django.utils.http import is_safe_url, urlencode +from django.utils.http import url_has_allowed_host_and_scheme, urlencode from django.views.generic import View from authentication.utils import build_absolute_uri_for_oidc from .utils import get_logger - logger = get_logger(__file__) @@ -102,7 +101,7 @@ class OIDCAuthRequestView(View): logger.debug(log_prompt.format('Stores next url in the session')) next_url = request.GET.get('next') request.session['oidc_auth_next_url'] = next_url \ - if is_safe_url(url=next_url, allowed_hosts=(request.get_host(), )) else None + if url_has_allowed_host_and_scheme(url=next_url, allowed_hosts=(request.get_host(),)) else None # Redirects the user to authorization endpoint. logger.debug(log_prompt.format('Construct redirect url')) @@ -145,15 +144,15 @@ class OIDCAuthCallbackView(View): # missing or if no state can be retrieved from the current session. if ( - ((nonce and settings.AUTH_OPENID_USE_NONCE) or not settings.AUTH_OPENID_USE_NONCE) - and - ( - (state and settings.AUTH_OPENID_USE_STATE and 'state' in callback_params) - or - (not settings.AUTH_OPENID_USE_STATE) - ) - and - ('code' in callback_params) + ((nonce and settings.AUTH_OPENID_USE_NONCE) or not settings.AUTH_OPENID_USE_NONCE) + and + ( + (state and settings.AUTH_OPENID_USE_STATE and 'state' in callback_params) + or + (not settings.AUTH_OPENID_USE_STATE) + ) + and + ('code' in callback_params) ): # Ensures that the passed state values is the same as the one that was previously # generated when forging the authorization request. This is necessary to mitigate diff --git a/apps/authentication/backends/saml2/signals.py b/apps/authentication/backends/saml2/signals.py index 3dcdd9d35..72feddbbe 100644 --- a/apps/authentication/backends/saml2/signals.py +++ b/apps/authentication/backends/saml2/signals.py @@ -1,4 +1,3 @@ from django.dispatch import Signal - -saml2_create_or_update_user = Signal(providing_args=('user', 'created', 'request', 'attrs')) +saml2_create_or_update_user = Signal() diff --git a/apps/authentication/confirm/password.py b/apps/authentication/confirm/password.py index 944ab8f24..dc49576a3 100644 --- a/apps/authentication/confirm/password.py +++ b/apps/authentication/confirm/password.py @@ -1,4 +1,4 @@ -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from authentication.mixins import authenticate from .base import BaseConfirm diff --git a/apps/authentication/confirm/relogin.py b/apps/authentication/confirm/relogin.py index 447a17ab0..2b27ef5fe 100644 --- a/apps/authentication/confirm/relogin.py +++ b/apps/authentication/confirm/relogin.py @@ -1,7 +1,7 @@ from datetime import datetime from django.utils import timezone -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from .base import BaseConfirm diff --git a/apps/authentication/errors/failed.py b/apps/authentication/errors/failed.py index 3e0848524..f6d8004c6 100644 --- a/apps/authentication/errors/failed.py +++ b/apps/authentication/errors/failed.py @@ -1,11 +1,11 @@ # -*- coding: utf-8 -*- # -from django.utils.translation import ugettext_lazy as _ from django.conf import settings +from django.utils.translation import gettext_lazy as _ from users.utils import LoginBlockUtil, MFABlockUtils, LoginIpBlockUtil -from ..signals import post_auth_failed from . import const +from ..signals import post_auth_failed class AuthFailedNeedLogMixin: diff --git a/apps/authentication/errors/mfa.py b/apps/authentication/errors/mfa.py index 288c2060e..40b97df92 100644 --- a/apps/authentication/errors/mfa.py +++ b/apps/authentication/errors/mfa.py @@ -1,4 +1,4 @@ -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from common.exceptions import JMSException diff --git a/apps/authentication/errors/redirect.py b/apps/authentication/errors/redirect.py index 466ec708d..5e7c5412d 100644 --- a/apps/authentication/errors/redirect.py +++ b/apps/authentication/errors/redirect.py @@ -1,5 +1,5 @@ -from django.utils.translation import ugettext_lazy as _ from django.urls import reverse +from django.utils.translation import gettext_lazy as _ from common.exceptions import JMSException from . import const diff --git a/apps/authentication/forms.py b/apps/authentication/forms.py index 747b821ea..90429bc82 100644 --- a/apps/authentication/forms.py +++ b/apps/authentication/forms.py @@ -1,9 +1,9 @@ # -*- coding: utf-8 -*- # +from captcha.fields import CaptchaField, CaptchaTextInput from django import forms from django.conf import settings -from django.utils.translation import ugettext_lazy as _ -from captcha.fields import CaptchaField, CaptchaTextInput +from django.utils.translation import gettext_lazy as _ from common.utils import get_logger, decrypt_password diff --git a/apps/authentication/mfa/base.py b/apps/authentication/mfa/base.py index 2158b8fe1..8bcaaf3a0 100644 --- a/apps/authentication/mfa/base.py +++ b/apps/authentication/mfa/base.py @@ -1,6 +1,6 @@ import abc -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ class BaseMFA(abc.ABC): @@ -69,4 +69,3 @@ class BaseMFA(abc.ABC): @staticmethod def help_text_of_disable(): return '' - diff --git a/apps/authentication/mfa/custom.py b/apps/authentication/mfa/custom.py index 3b671f709..0819dcfaa 100644 --- a/apps/authentication/mfa/custom.py +++ b/apps/authentication/mfa/custom.py @@ -1,6 +1,6 @@ from django.conf import settings from django.utils.module_loading import import_string -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from common.utils import get_logger from .base import BaseMFA diff --git a/apps/authentication/mfa/radius.py b/apps/authentication/mfa/radius.py index 9f1250234..2055e9776 100644 --- a/apps/authentication/mfa/radius.py +++ b/apps/authentication/mfa/radius.py @@ -1,5 +1,5 @@ -from django.utils.translation import ugettext_lazy as _ from django.conf import settings +from django.utils.translation import gettext_lazy as _ from .base import BaseMFA from ..backends.radius import RadiusBackend diff --git a/apps/authentication/mfa/sms.py b/apps/authentication/mfa/sms.py index aa426bf57..d114b648e 100644 --- a/apps/authentication/mfa/sms.py +++ b/apps/authentication/mfa/sms.py @@ -1,8 +1,8 @@ -from django.utils.translation import ugettext_lazy as _ from django.conf import settings +from django.utils.translation import gettext_lazy as _ -from .base import BaseMFA from common.utils.verify_code import SendAndVerifyCodeUtil +from .base import BaseMFA sms_failed_msg = _("SMS verify code invalid") diff --git a/apps/authentication/middleware.py b/apps/authentication/middleware.py index 43f7bdc14..b4ee86ed4 100644 --- a/apps/authentication/middleware.py +++ b/apps/authentication/middleware.py @@ -5,7 +5,7 @@ from django.contrib.auth import logout as auth_logout from django.http import HttpResponse from django.shortcuts import redirect, reverse, render from django.utils.deprecation import MiddlewareMixin -from django.utils.translation import ugettext as _ +from django.utils.translation import gettext as _ from apps.authentication import mixins from authentication.signals import post_auth_failed diff --git a/apps/authentication/mixins.py b/apps/authentication/mixins.py index e859fe4de..518e4aeb4 100644 --- a/apps/authentication/mixins.py +++ b/apps/authentication/mixins.py @@ -15,7 +15,7 @@ from django.core.cache import cache from django.core.exceptions import ImproperlyConfigured from django.shortcuts import reverse, redirect, get_object_or_404 from django.utils.http import urlencode -from django.utils.translation import ugettext as _ +from django.utils.translation import gettext as _ from rest_framework.request import Request from acls.models import LoginACL diff --git a/apps/authentication/models/access_key.py b/apps/authentication/models/access_key.py index d0e6fb0ef..77fa67c74 100644 --- a/apps/authentication/models/access_key.py +++ b/apps/authentication/models/access_key.py @@ -2,7 +2,7 @@ import uuid from django.conf import settings from django.db import models -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ import common.db.models diff --git a/apps/authentication/models/connection_token.py b/apps/authentication/models/connection_token.py index ce5b4829f..7bc8afcc7 100644 --- a/apps/authentication/models/connection_token.py +++ b/apps/authentication/models/connection_token.py @@ -6,7 +6,7 @@ from django.conf import settings from django.core.cache import cache from django.db import models from django.utils import timezone -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from rest_framework.exceptions import PermissionDenied from accounts.const import AliasAccount diff --git a/apps/authentication/models/private_token.py b/apps/authentication/models/private_token.py index 8d83d1e0a..bb5f1da87 100644 --- a/apps/authentication/models/private_token.py +++ b/apps/authentication/models/private_token.py @@ -1,4 +1,4 @@ -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from rest_framework.authtoken.models import Token diff --git a/apps/authentication/models/sso_token.py b/apps/authentication/models/sso_token.py index c8ec1e9eb..61002a1a8 100644 --- a/apps/authentication/models/sso_token.py +++ b/apps/authentication/models/sso_token.py @@ -1,7 +1,7 @@ import uuid from django.db import models -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from common.db.models import BaseCreateUpdateModel, CASCADE_SIGNAL_SKIP diff --git a/apps/authentication/models/temp_token.py b/apps/authentication/models/temp_token.py index d76a30a42..33d86cbc1 100644 --- a/apps/authentication/models/temp_token.py +++ b/apps/authentication/models/temp_token.py @@ -1,7 +1,7 @@ -from django.utils import timezone -from django.utils.translation import ugettext_lazy as _ - from django.db import models +from django.utils import timezone +from django.utils.translation import gettext_lazy as _ + from common.db.models import JMSBaseModel diff --git a/apps/authentication/notifications.py b/apps/authentication/notifications.py index 364ac20dd..e52f29a94 100644 --- a/apps/authentication/notifications.py +++ b/apps/authentication/notifications.py @@ -1,9 +1,9 @@ -from django.utils.translation import ugettext as _ from django.template.loader import render_to_string +from django.utils.translation import gettext as _ -from notifications.notifications import UserMessage from common.utils import get_logger from common.utils.timezone import local_now_display +from notifications.notifications import UserMessage logger = get_logger(__file__) diff --git a/apps/authentication/serializers/connect_token_secret.py b/apps/authentication/serializers/connect_token_secret.py index a3d56b90c..33fbe842e 100644 --- a/apps/authentication/serializers/connect_token_secret.py +++ b/apps/authentication/serializers/connect_token_secret.py @@ -1,4 +1,4 @@ -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from rest_framework import serializers from accounts.const import SecretType diff --git a/apps/authentication/serializers/connection_token.py b/apps/authentication/serializers/connection_token.py index bc3d051e1..4579e73ee 100644 --- a/apps/authentication/serializers/connection_token.py +++ b/apps/authentication/serializers/connection_token.py @@ -1,4 +1,4 @@ -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from rest_framework import serializers from common.serializers import CommonModelSerializer diff --git a/apps/authentication/serializers/password_mfa.py b/apps/authentication/serializers/password_mfa.py index d83260748..3e733b6ec 100644 --- a/apps/authentication/serializers/password_mfa.py +++ b/apps/authentication/serializers/password_mfa.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- # -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from rest_framework import serializers from common.serializers.fields import EncryptedField diff --git a/apps/authentication/signals.py b/apps/authentication/signals.py index 556bba614..7c8b8e229 100644 --- a/apps/authentication/signals.py +++ b/apps/authentication/signals.py @@ -1,9 +1,7 @@ from django.dispatch import Signal +post_auth_success = Signal() +post_auth_failed = Signal() -post_auth_success = Signal(providing_args=('user', 'request')) -post_auth_failed = Signal(providing_args=('username', 'request', 'reason')) - - -user_auth_success = Signal(providing_args=('user', 'request', 'backend', 'create')) -user_auth_failed = Signal(providing_args=('username', 'request', 'reason', 'backend')) +user_auth_success = Signal() +user_auth_failed = Signal() diff --git a/apps/authentication/utils.py b/apps/authentication/utils.py index a0db9061c..b53afa423 100644 --- a/apps/authentication/utils.py +++ b/apps/authentication/utils.py @@ -4,12 +4,12 @@ import ipaddress from urllib.parse import urljoin, urlparse from django.conf import settings -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ -from common.utils import validate_ip, get_ip_city, get_request_ip -from common.utils import get_logger -from audits.models import UserLoginLog from audits.const import DEFAULT_CITY +from audits.models import UserLoginLog +from common.utils import get_logger +from common.utils import validate_ip, get_ip_city, get_request_ip from .notifications import DifferentCityLoginMessage logger = get_logger(__file__) diff --git a/apps/authentication/views/base.py b/apps/authentication/views/base.py index e98e41e70..7969502c0 100644 --- a/apps/authentication/views/base.py +++ b/apps/authentication/views/base.py @@ -1,26 +1,23 @@ from functools import lru_cache -from rest_framework.request import Request -from django.utils.translation import ugettext_lazy as _ -from django.utils.module_loading import import_string from django.conf import settings from django.db.utils import IntegrityError +from django.utils.module_loading import import_string +from django.utils.translation import gettext_lazy as _ from django.views import View +from rest_framework.request import Request from authentication import errors from authentication.mixins import AuthMixin -from users.models import User -from common.utils.django import reverse, get_object_or_none from common.utils import get_logger - +from common.utils.django import reverse, get_object_or_none +from users.models import User from .mixins import FlashMessageMixin - logger = get_logger(__file__) class BaseLoginCallbackView(AuthMixin, FlashMessageMixin, View): - client_type_path = '' client_auth_params = {} user_type = '' diff --git a/apps/authentication/views/dingtalk.py b/apps/authentication/views/dingtalk.py index 77cec63fd..819f1d055 100644 --- a/apps/authentication/views/dingtalk.py +++ b/apps/authentication/views/dingtalk.py @@ -4,7 +4,7 @@ from django.conf import settings from django.db.utils import IntegrityError from django.http.request import HttpRequest from django.http.response import HttpResponseRedirect -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from django.views import View from rest_framework.exceptions import APIException from rest_framework.permissions import AllowAny, IsAuthenticated @@ -13,16 +13,15 @@ from authentication import errors from authentication.const import ConfirmType from authentication.mixins import AuthMixin from authentication.notifications import OAuthBindMessage -from common.views.mixins import PermissionsMixin, UserConfirmRequiredExceptionMixin from common.permissions import UserConfirmation from common.sdk.im.dingtalk import URL, DingTalk from common.utils import get_logger from common.utils.common import get_request_ip from common.utils.django import get_object_or_none, reverse from common.utils.random import random_string +from common.views.mixins import PermissionsMixin, UserConfirmRequiredExceptionMixin from users.models import User from users.views import UserVerifyPasswordView - from .base import BaseLoginCallbackView from .mixins import METAMixin, FlashMessageMixin diff --git a/apps/authentication/views/feishu.py b/apps/authentication/views/feishu.py index 62660764a..0f62ef75d 100644 --- a/apps/authentication/views/feishu.py +++ b/apps/authentication/views/feishu.py @@ -4,22 +4,21 @@ from django.conf import settings from django.db.utils import IntegrityError from django.http.request import HttpRequest from django.http.response import HttpResponseRedirect -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from django.views import View from rest_framework.exceptions import APIException from rest_framework.permissions import AllowAny, IsAuthenticated from authentication.const import ConfirmType from authentication.notifications import OAuthBindMessage -from common.views.mixins import PermissionsMixin, UserConfirmRequiredExceptionMixin from common.permissions import UserConfirmation from common.sdk.im.feishu import URL, FeiShu from common.utils import get_logger from common.utils.common import get_request_ip from common.utils.django import reverse from common.utils.random import random_string +from common.views.mixins import PermissionsMixin, UserConfirmRequiredExceptionMixin from users.views import UserVerifyPasswordView - from .base import BaseLoginCallbackView from .mixins import FlashMessageMixin @@ -166,4 +165,3 @@ class FeiShuQRLoginCallbackView(FeiShuQRMixin, BaseLoginCallbackView): msg_client_err = _('FeiShu Error') msg_user_not_bound_err = _('FeiShu is not bound') msg_not_found_user_from_client_err = _('Failed to get user from FeiShu') - diff --git a/apps/authentication/views/login.py b/apps/authentication/views/login.py index 8b5696dc9..459abb3cf 100644 --- a/apps/authentication/views/login.py +++ b/apps/authentication/views/login.py @@ -16,7 +16,7 @@ from django.shortcuts import reverse, redirect from django.templatetags.static import static from django.urls import reverse_lazy from django.utils.decorators import method_decorator -from django.utils.translation import ugettext as _, get_language +from django.utils.translation import gettext as _, get_language from django.views.decorators.cache import never_cache from django.views.decorators.csrf import csrf_protect from django.views.decorators.debug import sensitive_post_parameters diff --git a/apps/authentication/views/wecom.py b/apps/authentication/views/wecom.py index e127dbeee..238d0b3e6 100644 --- a/apps/authentication/views/wecom.py +++ b/apps/authentication/views/wecom.py @@ -1,28 +1,28 @@ -from django.http.response import HttpResponseRedirect -from django.utils.translation import ugettext_lazy as _ from urllib.parse import urlencode -from django.views import View -from django.conf import settings -from django.http.request import HttpRequest -from django.db.utils import IntegrityError -from rest_framework.permissions import IsAuthenticated, AllowAny -from rest_framework.exceptions import APIException -from users.models import User -from users.views import UserVerifyPasswordView -from common.utils import get_logger -from common.utils.random import random_string -from common.utils.django import reverse, get_object_or_none +from django.conf import settings +from django.db.utils import IntegrityError +from django.http.request import HttpRequest +from django.http.response import HttpResponseRedirect +from django.utils.translation import gettext_lazy as _ +from django.views import View +from rest_framework.exceptions import APIException +from rest_framework.permissions import IsAuthenticated, AllowAny + +from authentication import errors +from authentication.const import ConfirmType +from authentication.mixins import AuthMixin +from authentication.notifications import OAuthBindMessage +from common.permissions import UserConfirmation from common.sdk.im.wecom import URL from common.sdk.im.wecom import WeCom -from common.views.mixins import UserConfirmRequiredExceptionMixin, PermissionsMixin +from common.utils import get_logger from common.utils.common import get_request_ip -from common.permissions import UserConfirmation -from authentication import errors -from authentication.mixins import AuthMixin -from authentication.const import ConfirmType -from authentication.notifications import OAuthBindMessage - +from common.utils.django import reverse, get_object_or_none +from common.utils.random import random_string +from common.views.mixins import UserConfirmRequiredExceptionMixin, PermissionsMixin +from users.models import User +from users.views import UserVerifyPasswordView from .base import BaseLoginCallbackView from .mixins import METAMixin, FlashMessageMixin diff --git a/apps/common/api/action.py b/apps/common/api/action.py index 8d7829d9e..738ad3db4 100644 --- a/apps/common/api/action.py +++ b/apps/common/api/action.py @@ -2,7 +2,7 @@ # from typing import Callable -from django.utils.translation import ugettext as _ +from django.utils.translation import gettext as _ from rest_framework.decorators import action from rest_framework.request import Request from rest_framework.response import Response diff --git a/apps/common/const/choices.py b/apps/common/const/choices.py index 9b6c817f3..6db9254b3 100644 --- a/apps/common/const/choices.py +++ b/apps/common/const/choices.py @@ -1,5 +1,5 @@ from django.db import models -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ ADMIN = 'Admin' USER = 'User' diff --git a/apps/common/const/common.py b/apps/common/const/common.py index 33a889ecb..ab149fef5 100644 --- a/apps/common/const/common.py +++ b/apps/common/const/common.py @@ -1,6 +1,6 @@ import re -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ create_success_msg = _("%(name)s was created successfully") update_success_msg = _("%(name)s was updated successfully") diff --git a/apps/common/db/encoder.py b/apps/common/db/encoder.py index d773491a1..2bc9332f3 100644 --- a/apps/common/db/encoder.py +++ b/apps/common/db/encoder.py @@ -6,9 +6,9 @@ from datetime import datetime from django.conf import settings from django.db import models from django.utils import timezone as dj_timezone -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ -lazy_type = type(_('ugettext_lazy')) +lazy_type = type(_('gettext_lazy')) class ModelJSONFieldEncoder(json.JSONEncoder): diff --git a/apps/common/db/fields.py b/apps/common/db/fields.py index dee051da5..f9f2d9f43 100644 --- a/apps/common/db/fields.py +++ b/apps/common/db/fields.py @@ -11,8 +11,8 @@ from django.core.exceptions import ValidationError from django.core.validators import MinValueValidator, MaxValueValidator from django.db import models from django.db.models import Q, Manager, QuerySet -from django.utils.encoding import force_text -from django.utils.translation import ugettext_lazy as _ +from django.utils.encoding import force_str +from django.utils.translation import gettext_lazy as _ from rest_framework.utils.encoders import JSONEncoder from common.local import add_encrypted_field_set @@ -146,7 +146,7 @@ class EncryptMixin: if value is None: return value - value = force_text(value) + value = force_str(value) plain_value = crypto.decrypt(value) # 如果没有解开,使用原来的signer解密 @@ -167,7 +167,7 @@ class EncryptMixin: sp = super() if hasattr(sp, "get_prep_value"): value = sp.get_prep_value(value) - value = force_text(value) + value = force_str(value) # 替换新的加密方式 return crypto.encrypt(value) diff --git a/apps/common/db/mixins.py b/apps/common/db/mixins.py index 43c5f8a65..0d4e1c9bc 100644 --- a/apps/common/db/mixins.py +++ b/apps/common/db/mixins.py @@ -3,7 +3,7 @@ from django.db import models from django.utils import timezone -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ __all__ = [ "NoDeleteManager", "NoDeleteModelMixin", "NoDeleteQuerySet", diff --git a/apps/common/db/models.py b/apps/common/db/models.py index d01a37266..a3d51bcb7 100644 --- a/apps/common/db/models.py +++ b/apps/common/db/models.py @@ -15,7 +15,7 @@ from django.db import models from django.db import transaction from django.db.models import F, ExpressionWrapper, CASCADE from django.db.models import QuerySet -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from ..const.signals import SKIP_SIGNAL diff --git a/apps/common/drf/metadata.py b/apps/common/drf/metadata.py index 731daf878..9caa84c28 100644 --- a/apps/common/drf/metadata.py +++ b/apps/common/drf/metadata.py @@ -7,8 +7,8 @@ from collections import OrderedDict from django.core.exceptions import PermissionDenied from django.http import Http404 -from django.utils.encoding import force_text -from django.utils.translation import ugettext_lazy as _ +from django.utils.encoding import force_str +from django.utils.translation import gettext_lazy as _ from rest_framework import exceptions, serializers from rest_framework.fields import empty from rest_framework.metadata import SimpleMetadata @@ -81,7 +81,7 @@ class SimpleMetadataWithFilters(SimpleMetadata): field_info["choices"] = [ { "value": choice_value, - "label": force_text(choice_label, strings_only=True), + "label": force_str(choice_label, strings_only=True), } for choice_value, choice_label in dict(field.choices).items() ] @@ -109,7 +109,7 @@ class SimpleMetadataWithFilters(SimpleMetadata): for attr in self.attrs: value = getattr(field, attr, None) if value is not None and value != "": - field_info[attr] = force_text(value, strings_only=True) + field_info[attr] = force_str(value, strings_only=True) if getattr(field, "child", None): field_info["child"] = self.get_field_info(field.child) diff --git a/apps/common/drf/parsers/base.py b/apps/common/drf/parsers/base.py index 43d736f21..6d4b70788 100644 --- a/apps/common/drf/parsers/base.py +++ b/apps/common/drf/parsers/base.py @@ -3,7 +3,7 @@ import codecs import json import re -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from rest_framework import serializers from rest_framework import status from rest_framework.exceptions import ParseError, APIException diff --git a/apps/common/drf/renders/base.py b/apps/common/drf/renders/base.py index a9b3b5c8a..cdc1626ff 100644 --- a/apps/common/drf/renders/base.py +++ b/apps/common/drf/renders/base.py @@ -4,7 +4,7 @@ import re from datetime import datetime import pyzipper -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from rest_framework import serializers from rest_framework.renderers import BaseRenderer from rest_framework.utils import encoders, json diff --git a/apps/common/sdk/im/wecom/__init__.py b/apps/common/sdk/im/wecom/__init__.py index b58e4ab3b..8262cbeb5 100644 --- a/apps/common/sdk/im/wecom/__init__.py +++ b/apps/common/sdk/im/wecom/__init__.py @@ -1,12 +1,12 @@ from typing import Iterable, AnyStr -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from rest_framework.exceptions import APIException -from users.utils import construct_user_email -from common.utils.common import get_logger -from common.sdk.im.utils import digest, update_values from common.sdk.im.mixin import RequestMixin, BaseRequest +from common.sdk.im.utils import digest, update_values +from common.utils.common import get_logger +from users.utils import construct_user_email logger = get_logger(__name__) @@ -112,13 +112,13 @@ class WeCom(RequestMixin): update_values(extra_params, kwargs) body = { - "touser": '|'.join(users), - "msgtype": "text", - "agentid": self._agentid, - "text": { - "content": msg - }, - **extra_params + "touser": '|'.join(users), + "msgtype": "text", + "agentid": self._agentid, + "text": { + "content": msg + }, + **extra_params } if markdown: body['msgtype'] = 'markdown' @@ -184,4 +184,3 @@ class WeCom(RequestMixin): return { 'username': username, 'name': name, 'email': email } - diff --git a/apps/common/sdk/sms/cmpp2.py b/apps/common/sdk/sms/cmpp2.py index 4d81ee1a0..344cf829f 100644 --- a/apps/common/sdk/sms/cmpp2.py +++ b/apps/common/sdk/sms/cmpp2.py @@ -4,16 +4,14 @@ import struct import time from django.conf import settings -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ -from common.utils import get_logger from common.exceptions import JMSException +from common.utils import get_logger from .base import BaseSMSClient - logger = get_logger(__file__) - CMPP_CONNECT = 0x00000001 # 请求连接 CMPP_CONNECT_RESP = 0x80000001 # 请求连接应答 CMPP_TERMINATE = 0x00000002 # 终止连接 @@ -99,10 +97,10 @@ class CMPPSubmitRequestInstance(CMPPBaseRequestInstance): self.length = 126 + 21 * dest_usr_tl + len(_msg_content) self.command_id = CMPP_SUBMIT self.body = msg_id + pk_total + pk_number + registered_delivery \ - + msg_level + service_id + fee_user_type + fee_terminal_id \ - + tp_pid + tp_udhi + msg_fmt + _msg_src + fee_type + fee_code \ - + valid_time + at_time + src_id + _dest_usr_tl + _dest_terminal_id \ - + _msg_length + _msg_content + reserve + + msg_level + service_id + fee_user_type + fee_terminal_id \ + + tp_pid + tp_udhi + msg_fmt + _msg_src + fee_type + fee_code \ + + valid_time + at_time + src_id + _dest_usr_tl + _dest_terminal_id \ + + _msg_length + _msg_content + reserve class CMPPTerminateRequestInstance(CMPPBaseRequestInstance): @@ -161,7 +159,7 @@ class CMPPResponseInstance(object): src_terminal_id = body[42:63] registered_delivery = struct.unpack('!B', body[63:64]) msg_length = struct.unpack('!B', body[64:65]) - msg_content = body[65:msg_length[0]+65] + msg_content = body[65:msg_length[0] + 65] return { 'Msg_Id': msg_id, 'Dest_Id': dest_id, 'Service_Id': service_id, 'TP_pid': tp_pid, 'TP_udhi': tp_udhi, 'Msg_Fmt': msg_fmt, diff --git a/apps/common/tasks.py b/apps/common/tasks.py index a3130ead6..a7d9aacdd 100644 --- a/apps/common/tasks.py +++ b/apps/common/tasks.py @@ -1,9 +1,9 @@ import os -from django.utils.translation import ugettext_lazy as _ -from django.core.mail import send_mail, EmailMultiAlternatives -from django.conf import settings from celery import shared_task +from django.conf import settings +from django.core.mail import send_mail, EmailMultiAlternatives +from django.utils.translation import gettext_lazy as _ from .utils import get_logger diff --git a/apps/common/utils/encode.py b/apps/common/utils/encode.py index 767645c88..6f1fc079e 100644 --- a/apps/common/utils/encode.py +++ b/apps/common/utils/encode.py @@ -45,7 +45,7 @@ class Signer(metaclass=Singleton): def sign(self, value): s = JSONWebSignatureSerializer(self.secret_key, algorithm_name='HS256') - return s.dumps(value).decode() + return self.json_serializer.dumps(value).decode() def unsign(self, value): if value is None: diff --git a/apps/common/utils/ip/geoip/utils.py b/apps/common/utils/ip/geoip/utils.py index 64752a3a1..693a0305c 100644 --- a/apps/common/utils/ip/geoip/utils.py +++ b/apps/common/utils/ip/geoip/utils.py @@ -1,12 +1,12 @@ # -*- coding: utf-8 -*- # -import os import ipaddress +import os import geoip2.database -from geoip2.errors import GeoIP2Error -from django.utils.translation import ugettext_lazy as _ from django.conf import settings +from django.utils.translation import gettext_lazy as _ +from geoip2.errors import GeoIP2Error __all__ = ['get_ip_city_by_geoip'] reader = None @@ -36,5 +36,3 @@ def get_ip_city_by_geoip(ip): lang = 'zh-CN' city = city_names.get(lang, _("Unknown")) return city - - diff --git a/apps/common/validators.py b/apps/common/validators.py index 5bb3e4bdb..7e33d7d76 100644 --- a/apps/common/validators.py +++ b/apps/common/validators.py @@ -3,14 +3,13 @@ import re import phonenumbers - from django.core.validators import RegexValidator -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ +from phonenumbers.phonenumberutil import NumberParseException +from rest_framework import serializers from rest_framework.validators import ( UniqueTogetherValidator, ValidationError ) -from rest_framework import serializers -from phonenumbers.phonenumberutil import NumberParseException from common.utils.strings import no_special_chars diff --git a/apps/jumpserver/conf.py b/apps/jumpserver/conf.py index 33f0dbaf4..d9b15943f 100644 --- a/apps/jumpserver/conf.py +++ b/apps/jumpserver/conf.py @@ -21,7 +21,7 @@ from urllib.parse import urljoin, urlparse import yaml from django.urls import reverse_lazy -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from gmssl.sm4 import CryptSM4, SM4_ENCRYPT, SM4_DECRYPT BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) @@ -234,7 +234,7 @@ class Config(dict): 'LOGIN_URL': reverse_lazy('authentication:login'), 'CONNECTION_TOKEN_ONETIME_EXPIRATION': 5 * 60, # 默认(new) - 'CONNECTION_TOKEN_EXPIRATION': 5 * 60, # 默认(old) + 'CONNECTION_TOKEN_EXPIRATION': 5 * 60, # 默认(old) 'CONNECTION_TOKEN_REUSABLE_EXPIRATION': 60 * 60 * 24 * 30, # 最大(new) 'CONNECTION_TOKEN_EXPIRATION_MAX': 60 * 60 * 24 * 30, # 最大(old) diff --git a/apps/jumpserver/context_processor.py b/apps/jumpserver/context_processor.py index 9966228dc..7b92674bb 100644 --- a/apps/jumpserver/context_processor.py +++ b/apps/jumpserver/context_processor.py @@ -2,7 +2,7 @@ # from django.conf import settings from django.templatetags.static import static -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ default_interface = dict(( ('logo_logout', static('img/logo.png')), diff --git a/apps/jumpserver/settings/base.py b/apps/jumpserver/settings/base.py index 2bc547e57..9d60aa9a9 100644 --- a/apps/jumpserver/settings/base.py +++ b/apps/jumpserver/settings/base.py @@ -6,7 +6,7 @@ from redis.sentinel import SentinelManagedSSLConnection if platform.system() == 'Darwin' and platform.machine() == 'arm64': import pymysql - pymysql.version_info = (1, 4, 2, "final", 0) + # pymysql.version_info = (1, 4, 2, "final", 0) pymysql.install_as_MySQLdb() from django.urls import reverse_lazy diff --git a/apps/jumpserver/views/celery_flower.py b/apps/jumpserver/views/celery_flower.py index 3d98d3bef..fd6d3fac6 100644 --- a/apps/jumpserver/views/celery_flower.py +++ b/apps/jumpserver/views/celery_flower.py @@ -1,10 +1,9 @@ # -*- coding: utf-8 -*- # -from django.http import HttpResponse from django.conf import settings -from django.utils.translation import ugettext as _ +from django.http import HttpResponse +from django.utils.translation import gettext as _ from django.views.decorators.csrf import csrf_exempt - from proxy.views import proxy_view flower_url = settings.FLOWER_URL @@ -24,4 +23,3 @@ def celery_flower_view(request, path): '

{}
'.format(e) response = HttpResponse(msg) return response - diff --git a/apps/jumpserver/views/other.py b/apps/jumpserver/views/other.py index 984898158..038a6fb06 100644 --- a/apps/jumpserver/views/other.py +++ b/apps/jumpserver/views/other.py @@ -2,13 +2,13 @@ # import re -from django.http import HttpResponseRedirect, JsonResponse, Http404 from django.conf import settings -from django.views.generic import View, TemplateView -from django.shortcuts import redirect -from django.utils.translation import ugettext_lazy as _ -from django.views.decorators.csrf import csrf_exempt from django.http import HttpResponse +from django.http import HttpResponseRedirect, JsonResponse, Http404 +from django.shortcuts import redirect +from django.utils.translation import gettext_lazy as _ +from django.views.decorators.csrf import csrf_exempt +from django.views.generic import View, TemplateView from rest_framework.views import APIView from common.views.http import HttpResponseTemporaryRedirect diff --git a/apps/locale/ja/LC_MESSAGES/django.po b/apps/locale/ja/LC_MESSAGES/django.po index 5797de8e5..b44d97a34 100644 --- a/apps/locale/ja/LC_MESSAGES/django.po +++ b/apps/locale/ja/LC_MESSAGES/django.po @@ -3209,8 +3209,8 @@ msgid "%(name)s was updated successfully" msgstr "%(name)s は正常に更新されました" #: common/db/encoder.py:11 -msgid "ugettext_lazy" -msgstr "ugettext_lazy" +msgid "gettext_lazy" +msgstr "gettext_lazy" #: common/db/fields.py:106 msgid "Marshal dict data to char field" diff --git a/apps/locale/zh/LC_MESSAGES/django.po b/apps/locale/zh/LC_MESSAGES/django.po index 8db571768..58edc7f08 100644 --- a/apps/locale/zh/LC_MESSAGES/django.po +++ b/apps/locale/zh/LC_MESSAGES/django.po @@ -3169,8 +3169,8 @@ msgid "%(name)s was updated successfully" msgstr "%(name)s 更新成功" #: common/db/encoder.py:11 -msgid "ugettext_lazy" -msgstr "ugettext_lazy" +msgid "gettext_lazy" +msgstr "gettext_lazy" #: common/db/fields.py:106 msgid "Marshal dict data to char field" diff --git a/apps/notifications/apps.py b/apps/notifications/apps.py index 306f2b55b..6147197c9 100644 --- a/apps/notifications/apps.py +++ b/apps/notifications/apps.py @@ -1,5 +1,5 @@ from django.apps import AppConfig -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ class NotificationsConfig(AppConfig): @@ -7,6 +7,4 @@ class NotificationsConfig(AppConfig): verbose_name = _('Notifications') def ready(self): - from . import signal_handlers - from . import notifications super().ready() diff --git a/apps/notifications/models/notification.py b/apps/notifications/models/notification.py index 410d07a28..fe639c7e8 100644 --- a/apps/notifications/models/notification.py +++ b/apps/notifications/models/notification.py @@ -1,5 +1,5 @@ from django.db import models -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from common.db.models import JMSBaseModel, CASCADE_SIGNAL_SKIP diff --git a/apps/ops/api/celery.py b/apps/ops/api/celery.py index d4540269c..67f4d4dda 100644 --- a/apps/ops/api/celery.py +++ b/apps/ops/api/celery.py @@ -5,7 +5,7 @@ import re from celery.result import AsyncResult from django.shortcuts import get_object_or_404 -from django.utils.translation import ugettext as _ +from django.utils.translation import gettext as _ from django_celery_beat.models import PeriodicTask from rest_framework import generics, viewsets, mixins, status from rest_framework.response import Response diff --git a/apps/ops/api/playbook.py b/apps/ops/api/playbook.py index 9d74aa565..72e62cb82 100644 --- a/apps/ops/api/playbook.py +++ b/apps/ops/api/playbook.py @@ -4,7 +4,7 @@ import zipfile from django.conf import settings from django.shortcuts import get_object_or_404 -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from rest_framework import status from common.exceptions import JMSException diff --git a/apps/ops/const.py b/apps/ops/const.py index 5f31bb00d..6bb8ee750 100644 --- a/apps/ops/const.py +++ b/apps/ops/const.py @@ -1,5 +1,5 @@ from django.db import models -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ class StrategyChoice(models.TextChoices): diff --git a/apps/ops/mixin.py b/apps/ops/mixin.py index 487f677a0..05d1e297d 100644 --- a/apps/ops/mixin.py +++ b/apps/ops/mixin.py @@ -3,7 +3,7 @@ import abc from django.db import models -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from rest_framework import serializers from .celery.utils import ( diff --git a/apps/ops/models/adhoc.py b/apps/ops/models/adhoc.py index 254453a90..18b1e5cba 100644 --- a/apps/ops/models/adhoc.py +++ b/apps/ops/models/adhoc.py @@ -2,9 +2,8 @@ import uuid from django.db import models -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ -from common.db.models import JMSBaseModel from common.utils import get_logger __all__ = ["AdHoc"] diff --git a/apps/ops/tasks.py b/apps/ops/tasks.py index 1fe0fbe7c..045c8f1b9 100644 --- a/apps/ops/tasks.py +++ b/apps/ops/tasks.py @@ -2,7 +2,7 @@ from celery import shared_task from celery.exceptions import SoftTimeLimitExceeded -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from django_celery_beat.models import PeriodicTask from common.utils import get_logger, get_object_or_none diff --git a/apps/orgs/api.py b/apps/orgs/api.py index b0d8386e8..b10c3454e 100644 --- a/apps/orgs/api.py +++ b/apps/orgs/api.py @@ -2,7 +2,7 @@ # from django.conf import settings -from django.utils.translation import ugettext as _ +from django.utils.translation import gettext as _ from rest_framework.exceptions import PermissionDenied from rest_framework.generics import RetrieveAPIView diff --git a/apps/orgs/apps.py b/apps/orgs/apps.py index 70505d0f0..c835af0a5 100644 --- a/apps/orgs/apps.py +++ b/apps/orgs/apps.py @@ -1,5 +1,5 @@ from django.apps import AppConfig -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ class OrgsConfig(AppConfig): @@ -7,5 +7,4 @@ class OrgsConfig(AppConfig): verbose_name = _('App organizations') def ready(self): - from . import tasks - from . import signal_handlers + pass diff --git a/apps/orgs/mixins/models.py b/apps/orgs/mixins/models.py index d9eef1e2f..a9494ad1a 100644 --- a/apps/orgs/mixins/models.py +++ b/apps/orgs/mixins/models.py @@ -3,7 +3,7 @@ from django.core.exceptions import ValidationError from django.db import models -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from common.db.models import JMSBaseModel from common.utils import get_logger, lazyproperty diff --git a/apps/orgs/mixins/serializers.py b/apps/orgs/mixins/serializers.py index e2e5a48a8..558dac282 100644 --- a/apps/orgs/mixins/serializers.py +++ b/apps/orgs/mixins/serializers.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- # -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from rest_framework import serializers from rest_framework.validators import UniqueTogetherValidator diff --git a/apps/orgs/models.py b/apps/orgs/models.py index 647c37cb9..66286e38e 100644 --- a/apps/orgs/models.py +++ b/apps/orgs/models.py @@ -1,5 +1,5 @@ from django.db import models -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from common.db.models import JMSBaseModel from common.tree import TreeNode diff --git a/apps/orgs/tasks.py b/apps/orgs/tasks.py index 04992f52a..7e02a64a2 100644 --- a/apps/orgs/tasks.py +++ b/apps/orgs/tasks.py @@ -1,5 +1,5 @@ from celery import shared_task -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from common.utils import get_logger diff --git a/apps/perms/api/user_permission/mixin.py b/apps/perms/api/user_permission/mixin.py index 4f4d48181..24ed7fbc1 100644 --- a/apps/perms/api/user_permission/mixin.py +++ b/apps/perms/api/user_permission/mixin.py @@ -1,13 +1,13 @@ # -*- coding: utf-8 -*- # from django.shortcuts import get_object_or_404 -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from rest_framework.request import Request -from users.models import User -from rbac.permissions import RBACPermission -from common.utils import is_uuid from common.exceptions import JMSObjectDoesNotExist +from common.utils import is_uuid +from rbac.permissions import RBACPermission +from users.models import User __all__ = ['SelfOrPKUserMixin'] @@ -57,4 +57,3 @@ class SelfOrPKUserMixin: def request_user_is_self(self): return self.kwargs.get('user') in ['my', 'self'] - diff --git a/apps/perms/apps.py b/apps/perms/apps.py index 7bb606080..c0f2aba38 100644 --- a/apps/perms/apps.py +++ b/apps/perms/apps.py @@ -1,7 +1,7 @@ from __future__ import unicode_literals from django.apps import AppConfig -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ class PermsConfig(AppConfig): @@ -10,6 +10,3 @@ class PermsConfig(AppConfig): def ready(self): super().ready() - from . import signal_handlers - from . import notifications - from . import tasks diff --git a/apps/perms/const.py b/apps/perms/const.py index 60e1ae493..373723a4b 100644 --- a/apps/perms/const.py +++ b/apps/perms/const.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- # -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from common.db.fields import BitChoices from common.utils.integer import bit diff --git a/apps/perms/filters.py b/apps/perms/filters.py index 202720480..55a72cf68 100644 --- a/apps/perms/filters.py +++ b/apps/perms/filters.py @@ -1,12 +1,11 @@ -from django_filters import rest_framework as filters -from django.utils.translation import ugettext_lazy as _ from django.db.models import QuerySet, Q +from django_filters import rest_framework as filters -from common.drf.filters import BaseFilterSet -from common.utils import get_object_or_none, is_uuid -from users.models import User, UserGroup from assets.models import Node, Asset +from common.drf.filters import BaseFilterSet +from common.utils import get_object_or_none from perms.models import AssetPermission, AssetPermissionQuerySet +from users.models import User, UserGroup class PermissionBaseFilter(BaseFilterSet): @@ -64,7 +63,8 @@ class PermissionBaseFilter(BaseFilterSet): groups = list(user.groups.all().values_list('id', flat=True)) user_asset_perm_ids = AssetPermission.objects.filter(users=user).distinct().values_list('id', flat=True) - group_asset_perm_ids = AssetPermission.objects.filter(user_groups__in=groups).distinct().values_list('id', flat=True) + group_asset_perm_ids = AssetPermission.objects.filter(user_groups__in=groups).distinct().values_list('id', + flat=True) asset_perm_ids = {*user_asset_perm_ids, *group_asset_perm_ids} diff --git a/apps/perms/models/asset_permission.py b/apps/perms/models/asset_permission.py index 08484e88e..2d5fa6ea5 100644 --- a/apps/perms/models/asset_permission.py +++ b/apps/perms/models/asset_permission.py @@ -3,7 +3,7 @@ import logging from django.db import models from django.db.models import Q from django.utils import timezone -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from accounts.const import AliasAccount from accounts.models import Account diff --git a/apps/perms/models/perm_node.py b/apps/perms/models/perm_node.py index f5dc52be3..b3c209e3d 100644 --- a/apps/perms/models/perm_node.py +++ b/apps/perms/models/perm_node.py @@ -1,6 +1,6 @@ from django.db import models from django.db.models import F, TextChoices -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from accounts.models import Account from assets.models import Asset, Node, FamilyMixin diff --git a/apps/perms/notifications.py b/apps/perms/notifications.py index 9e074cd03..2a8aa0c2d 100644 --- a/apps/perms/notifications.py +++ b/apps/perms/notifications.py @@ -1,5 +1,5 @@ -from django.utils.translation import ugettext as _ from django.template.loader import render_to_string +from django.utils.translation import gettext as _ from common.utils import reverse as js_reverse from notifications.notifications import UserMessage diff --git a/apps/perms/serializers/permission.py b/apps/perms/serializers/permission.py index 4d037e4d3..976fc1f31 100644 --- a/apps/perms/serializers/permission.py +++ b/apps/perms/serializers/permission.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # from django.db.models import Q -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from rest_framework import serializers from accounts.models import AccountTemplate, Account diff --git a/apps/perms/serializers/user_permission.py b/apps/perms/serializers/user_permission.py index 7d054c0d7..44904e82e 100644 --- a/apps/perms/serializers/user_permission.py +++ b/apps/perms/serializers/user_permission.py @@ -2,7 +2,7 @@ # from django.db.models import F -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from rest_framework import serializers from accounts.models import Account diff --git a/apps/rbac/api/role.py b/apps/rbac/api/role.py index d59c42192..387d0bc9c 100644 --- a/apps/rbac/api/role.py +++ b/apps/rbac/api/role.py @@ -1,5 +1,5 @@ from django.db.models import Q, Count -from django.utils.translation import ugettext as _ +from django.utils.translation import gettext as _ from rest_framework.decorators import action from rest_framework.exceptions import PermissionDenied diff --git a/apps/rbac/api/rolebinding.py b/apps/rbac/api/rolebinding.py index f7ad47351..4f3354e5b 100644 --- a/apps/rbac/api/rolebinding.py +++ b/apps/rbac/api/rolebinding.py @@ -1,10 +1,10 @@ -from django.utils.translation import ugettext as _ from django.db.models import F, Value from django.db.models.functions import Concat +from django.utils.translation import gettext as _ +from common.exceptions import JMSException from orgs.mixins.api import OrgBulkModelViewSet from orgs.utils import current_org -from common.exceptions import JMSException from .. import serializers from ..models import RoleBinding, SystemRoleBinding, OrgRoleBinding @@ -26,15 +26,15 @@ class RoleBindingViewSet(OrgBulkModelViewSet): ] def get_queryset(self): - queryset = self._get_queryset()\ + queryset = self._get_queryset() \ .prefetch_related('user', 'role', 'org') \ .annotate( - user_display=Concat( - F('user__name'), Value('('), - F('user__username'), Value(')') - ), - role_display=F('role__name') - ) + user_display=Concat( + F('user__name'), Value('('), + F('user__username'), Value(')') + ), + role_display=F('role__name') + ) return queryset def _get_queryset(self): diff --git a/apps/rbac/apps.py b/apps/rbac/apps.py index f22c7cf0a..646521870 100644 --- a/apps/rbac/apps.py +++ b/apps/rbac/apps.py @@ -1,5 +1,5 @@ from django.apps import AppConfig -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ class RBACConfig(AppConfig): @@ -7,5 +7,4 @@ class RBACConfig(AppConfig): verbose_name = _('RBAC') def ready(self): - from . import signal_handlers super().ready() diff --git a/apps/rbac/builtin.py b/apps/rbac/builtin.py index 508883446..a16944d47 100644 --- a/apps/rbac/builtin.py +++ b/apps/rbac/builtin.py @@ -1,4 +1,4 @@ -from django.utils.translation import ugettext_noop +from django.utils.translation import gettext_noop from .const import Scope, system_exclude_permissions, org_exclude_permissions @@ -111,25 +111,25 @@ class PredefineRole: class BuiltinRole: system_admin = PredefineRole( - '1', ugettext_noop('SystemAdmin'), Scope.system, [] + '1', gettext_noop('SystemAdmin'), Scope.system, [] ) system_auditor = PredefineRole( - '2', ugettext_noop('SystemAuditor'), Scope.system, system_auditor_perms + '2', gettext_noop('SystemAuditor'), Scope.system, system_auditor_perms ) system_component = PredefineRole( - '4', ugettext_noop('SystemComponent'), Scope.system, app_exclude_perms, 'exclude' + '4', gettext_noop('SystemComponent'), Scope.system, app_exclude_perms, 'exclude' ) system_user = PredefineRole( - '3', ugettext_noop('User'), Scope.system, system_user_perms + '3', gettext_noop('User'), Scope.system, system_user_perms ) org_admin = PredefineRole( - '5', ugettext_noop('OrgAdmin'), Scope.org, [] + '5', gettext_noop('OrgAdmin'), Scope.org, [] ) org_auditor = PredefineRole( - '6', ugettext_noop('OrgAuditor'), Scope.org, auditor_perms + '6', gettext_noop('OrgAuditor'), Scope.org, auditor_perms ) org_user = PredefineRole( - '7', ugettext_noop('OrgUser'), Scope.org, user_perms + '7', gettext_noop('OrgUser'), Scope.org, user_perms ) system_role_mapper = None org_role_mapper = None diff --git a/apps/rbac/const.py b/apps/rbac/const.py index cd7fd642a..c484b747f 100644 --- a/apps/rbac/const.py +++ b/apps/rbac/const.py @@ -1,5 +1,5 @@ from django.db import models -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ class Scope(models.TextChoices): diff --git a/apps/rbac/models/permission.py b/apps/rbac/models/permission.py index 0cb29f73a..17653f151 100644 --- a/apps/rbac/models/permission.py +++ b/apps/rbac/models/permission.py @@ -1,7 +1,7 @@ -from django.db.models import Q -from django.utils.translation import ugettext_lazy as _ -from django.contrib.auth.models import Permission as DjangoPermission from django.contrib.auth.models import ContentType as DjangoContentType +from django.contrib.auth.models import Permission as DjangoPermission +from django.db.models import Q +from django.utils.translation import gettext_lazy as _ from .. import const @@ -21,6 +21,7 @@ class ContentType(DjangoContentType): class Permission(DjangoPermission): """ 权限类 """ + class Meta: proxy = True verbose_name = _('Permissions') diff --git a/apps/rbac/models/role.py b/apps/rbac/models/role.py index 1eff7c15c..4f18f67f8 100644 --- a/apps/rbac/models/role.py +++ b/apps/rbac/models/role.py @@ -1,5 +1,5 @@ from django.db import models -from django.utils.translation import ugettext_lazy as _, gettext +from django.utils.translation import gettext_lazy as _, gettext from common.db.models import JMSBaseModel from common.utils import lazyproperty diff --git a/apps/rbac/serializers/permission.py b/apps/rbac/serializers/permission.py index 809b86636..cc97b6c8a 100644 --- a/apps/rbac/serializers/permission.py +++ b/apps/rbac/serializers/permission.py @@ -1,10 +1,9 @@ -from django.utils.translation import ugettext_lazy as _ -from rest_framework import serializers from django.contrib.auth.models import ContentType +from django.utils.translation import gettext_lazy as _ +from rest_framework import serializers from ..models import Permission - __all__ = ['PermissionSerializer', 'UserPermsSerializer'] diff --git a/apps/rbac/serializers/role.py b/apps/rbac/serializers/role.py index 78724c18a..84c597396 100644 --- a/apps/rbac/serializers/role.py +++ b/apps/rbac/serializers/role.py @@ -1,4 +1,4 @@ -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from rest_framework import serializers from common.serializers.fields import LabeledChoiceField diff --git a/apps/rbac/serializers/rolebinding.py b/apps/rbac/serializers/rolebinding.py index cfbf248b8..5e26cdf42 100644 --- a/apps/rbac/serializers/rolebinding.py +++ b/apps/rbac/serializers/rolebinding.py @@ -1,11 +1,11 @@ +from django.utils.translation import gettext_lazy as _ from rest_framework import serializers -from django.utils.translation import ugettext_lazy as _ from orgs.serializers import CurrentOrgDefault from ..models import RoleBinding, SystemRoleBinding, OrgRoleBinding __all__ = [ - 'RoleBindingSerializer', 'OrgRoleBindingSerializer', 'SystemRoleBindingSerializer' + 'RoleBindingSerializer', 'OrgRoleBindingSerializer', 'SystemRoleBindingSerializer' ] @@ -13,7 +13,7 @@ class RoleBindingSerializer(serializers.ModelSerializer): class Meta: model = RoleBinding fields = [ - 'id', 'user', 'user_display', 'role', 'role_display', + 'id', 'user', 'user_display', 'role', 'role_display', 'scope', 'org', 'org_name', ] read_only_fields = ['scope'] @@ -55,6 +55,3 @@ class OrgRoleBindingSerializer(RoleBindingSerializer): if not self.instance and role_bindings.exists(): raise serializers.ValidationError({'role': _('Has bound this role')}) return attrs - - - diff --git a/apps/settings/api/email.py b/apps/settings/api/email.py index 45bec7514..1e8ef2286 100644 --- a/apps/settings/api/email.py +++ b/apps/settings/api/email.py @@ -5,7 +5,7 @@ from smtplib import SMTPSenderRefused from django.conf import settings from django.core.mail import send_mail, get_connection -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from rest_framework.views import Response, APIView from common.utils import get_logger diff --git a/apps/settings/api/ldap.py b/apps/settings/api/ldap.py index 8c98f821f..486da3562 100644 --- a/apps/settings/api/ldap.py +++ b/apps/settings/api/ldap.py @@ -4,7 +4,7 @@ import threading from django.conf import settings -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from rest_framework import generics from rest_framework.generics import CreateAPIView from rest_framework.views import Response, APIView diff --git a/apps/settings/apps.py b/apps/settings/apps.py index 2f96498cc..b96893da1 100644 --- a/apps/settings/apps.py +++ b/apps/settings/apps.py @@ -1,5 +1,5 @@ from django.apps import AppConfig -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ class SettingsConfig(AppConfig): @@ -7,5 +7,4 @@ class SettingsConfig(AppConfig): verbose_name = _('Settings') def ready(self): - from . import tasks - from . import signal_handlers + pass diff --git a/apps/settings/models.py b/apps/settings/models.py index 170d032a4..ab570d07d 100644 --- a/apps/settings/models.py +++ b/apps/settings/models.py @@ -1,13 +1,12 @@ -import os import json +from django.conf import settings +from django.core.files.base import ContentFile +from django.core.files.storage import default_storage +from django.core.files.uploadedfile import InMemoryUploadedFile from django.db import models from django.db.utils import ProgrammingError, OperationalError -from django.utils.translation import ugettext_lazy as _ -from django.conf import settings -from django.core.files.storage import default_storage -from django.core.files.base import ContentFile -from django.core.files.uploadedfile import InMemoryUploadedFile +from django.utils.translation import gettext_lazy as _ from common.utils import signer, get_logger diff --git a/apps/settings/serializers/auth/base.py b/apps/settings/serializers/auth/base.py index abc1ab8b0..ffc6acf1d 100644 --- a/apps/settings/serializers/auth/base.py +++ b/apps/settings/serializers/auth/base.py @@ -1,4 +1,4 @@ -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from rest_framework import serializers __all__ = [ diff --git a/apps/settings/serializers/auth/cas.py b/apps/settings/serializers/auth/cas.py index 4fc964529..c85497b00 100644 --- a/apps/settings/serializers/auth/cas.py +++ b/apps/settings/serializers/auth/cas.py @@ -1,4 +1,4 @@ -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from rest_framework import serializers __all__ = [ diff --git a/apps/settings/serializers/auth/dingtalk.py b/apps/settings/serializers/auth/dingtalk.py index 4ec7814a1..418693bb8 100644 --- a/apps/settings/serializers/auth/dingtalk.py +++ b/apps/settings/serializers/auth/dingtalk.py @@ -1,4 +1,4 @@ -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from rest_framework import serializers from common.serializers.fields import EncryptedField diff --git a/apps/settings/serializers/auth/feishu.py b/apps/settings/serializers/auth/feishu.py index a06d41b23..d3c1edcad 100644 --- a/apps/settings/serializers/auth/feishu.py +++ b/apps/settings/serializers/auth/feishu.py @@ -1,4 +1,4 @@ -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from rest_framework import serializers from common.serializers.fields import EncryptedField diff --git a/apps/settings/serializers/auth/ldap.py b/apps/settings/serializers/auth/ldap.py index cc1976884..054fe6144 100644 --- a/apps/settings/serializers/auth/ldap.py +++ b/apps/settings/serializers/auth/ldap.py @@ -1,4 +1,4 @@ -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from rest_framework import serializers from common.serializers.fields import EncryptedField diff --git a/apps/settings/serializers/auth/oauth2.py b/apps/settings/serializers/auth/oauth2.py index d7f1f4407..56ddd6a66 100644 --- a/apps/settings/serializers/auth/oauth2.py +++ b/apps/settings/serializers/auth/oauth2.py @@ -1,4 +1,4 @@ -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from rest_framework import serializers from common.serializers.fields import EncryptedField diff --git a/apps/settings/serializers/auth/oidc.py b/apps/settings/serializers/auth/oidc.py index 2daf02ff5..0738de49a 100644 --- a/apps/settings/serializers/auth/oidc.py +++ b/apps/settings/serializers/auth/oidc.py @@ -1,4 +1,4 @@ -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from rest_framework import serializers from common.serializers.fields import EncryptedField diff --git a/apps/settings/serializers/auth/radius.py b/apps/settings/serializers/auth/radius.py index 54098c3d0..b4085c352 100644 --- a/apps/settings/serializers/auth/radius.py +++ b/apps/settings/serializers/auth/radius.py @@ -1,7 +1,7 @@ # coding: utf-8 # -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from rest_framework import serializers from common.serializers.fields import EncryptedField diff --git a/apps/settings/serializers/auth/saml2.py b/apps/settings/serializers/auth/saml2.py index 9e0001218..35a4ef5d5 100644 --- a/apps/settings/serializers/auth/saml2.py +++ b/apps/settings/serializers/auth/saml2.py @@ -1,5 +1,4 @@ - -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from rest_framework import serializers __all__ = [ diff --git a/apps/settings/serializers/auth/sms.py b/apps/settings/serializers/auth/sms.py index 0b8138137..40881e52a 100644 --- a/apps/settings/serializers/auth/sms.py +++ b/apps/settings/serializers/auth/sms.py @@ -1,10 +1,10 @@ -from django.utils.translation import ugettext_lazy as _ from django.db import models +from django.utils.translation import gettext_lazy as _ from rest_framework import serializers +from common.sdk.sms import BACKENDS from common.serializers.fields import EncryptedField, PhoneField from common.validators import PhoneValidator -from common.sdk.sms import BACKENDS __all__ = [ 'SMSSettingSerializer', 'AlibabaSMSSettingSerializer', 'TencentSMSSettingSerializer', @@ -26,7 +26,7 @@ class SignTmplPairSerializer(serializers.Serializer): class BaseSMSSettingSerializer(serializers.Serializer): PREFIX_TITLE = _('SMS') - + SMS_TEST_PHONE = PhoneField( validators=[PhoneValidator()], required=False, allow_blank=True, allow_null=True, label=_('Test phone') ) diff --git a/apps/settings/serializers/auth/sso.py b/apps/settings/serializers/auth/sso.py index 0f7a7cef7..74549c72f 100644 --- a/apps/settings/serializers/auth/sso.py +++ b/apps/settings/serializers/auth/sso.py @@ -1,4 +1,4 @@ -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from rest_framework import serializers __all__ = [ diff --git a/apps/settings/serializers/auth/wecom.py b/apps/settings/serializers/auth/wecom.py index 462b17db6..b296eb691 100644 --- a/apps/settings/serializers/auth/wecom.py +++ b/apps/settings/serializers/auth/wecom.py @@ -1,4 +1,4 @@ -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from rest_framework import serializers from common.serializers.fields import EncryptedField diff --git a/apps/settings/serializers/basic.py b/apps/settings/serializers/basic.py index d7d7f7ed9..91a81d45b 100644 --- a/apps/settings/serializers/basic.py +++ b/apps/settings/serializers/basic.py @@ -1,6 +1,6 @@ import uuid -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from rest_framework import serializers @@ -52,4 +52,3 @@ class BasicSettingSerializer(serializers.Serializer): if not s: return 'http://127.0.0.1' return s.strip('/') - diff --git a/apps/settings/serializers/cleaning.py b/apps/settings/serializers/cleaning.py index dfc568c99..eb1841561 100644 --- a/apps/settings/serializers/cleaning.py +++ b/apps/settings/serializers/cleaning.py @@ -1,4 +1,4 @@ -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from rest_framework import serializers __all__ = ['CleaningSerializer'] @@ -29,7 +29,8 @@ class CleaningSerializer(serializers.Serializer): ) TERMINAL_SESSION_KEEP_DURATION = serializers.IntegerField( min_value=1, max_value=99999, required=True, label=_('Session keep duration (day)'), - help_text=_('Session, record, command will be delete if more than duration, only in database, OSS will not be affected.') + help_text=_( + 'Session, record, command will be delete if more than duration, only in database, OSS will not be affected.') ) ACTIVITY_LOG_KEEP_DAYS = serializers.IntegerField( min_value=1, max_value=9999, diff --git a/apps/settings/serializers/email.py b/apps/settings/serializers/email.py index ab8b10415..ce4568b62 100644 --- a/apps/settings/serializers/email.py +++ b/apps/settings/serializers/email.py @@ -1,7 +1,7 @@ # coding: utf-8 # -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from rest_framework import serializers from common.serializers.fields import EncryptedField diff --git a/apps/settings/serializers/other.py b/apps/settings/serializers/other.py index 42df32496..7cf447ef0 100644 --- a/apps/settings/serializers/other.py +++ b/apps/settings/serializers/other.py @@ -1,4 +1,4 @@ -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from rest_framework import serializers diff --git a/apps/settings/serializers/security.py b/apps/settings/serializers/security.py index c9f02d591..329cc8ebe 100644 --- a/apps/settings/serializers/security.py +++ b/apps/settings/serializers/security.py @@ -1,4 +1,4 @@ -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from rest_framework import serializers from acls.serializers.rules import ip_group_help_text, ip_group_child_validator @@ -98,11 +98,13 @@ class SecurityAuthSerializer(serializers.Serializer): ) ONLY_ALLOW_EXIST_USER_AUTH = serializers.BooleanField( required=False, default=False, label=_("Only exist user login"), - help_text=_("If enabled, non-existent users will not be allowed to log in; if disabled, users of other authentication methods except local authentication methods are allowed to log in and automatically create users (if the user does not exist)") + help_text=_( + "If enabled, non-existent users will not be allowed to log in; if disabled, users of other authentication methods except local authentication methods are allowed to log in and automatically create users (if the user does not exist)") ) ONLY_ALLOW_AUTH_FROM_SOURCE = serializers.BooleanField( required=False, default=False, label=_("Only from source login"), - help_text=_("If it is enabled, the user will only authenticate to the source when logging in; if it is disabled, the user will authenticate all the enabled authentication methods in a certain order when logging in, and as long as one of the authentication methods is successful, they can log in directly") + help_text=_( + "If it is enabled, the user will only authenticate to the source when logging in; if it is disabled, the user will authenticate all the enabled authentication methods in a certain order when logging in, and as long as one of the authentication methods is successful, they can log in directly") ) SECURITY_MFA_VERIFY_TTL = serializers.IntegerField( min_value=5, max_value=60 * 60 * 10, diff --git a/apps/settings/serializers/settings.py b/apps/settings/serializers/settings.py index 2fb15b0af..c0ff911a7 100644 --- a/apps/settings/serializers/settings.py +++ b/apps/settings/serializers/settings.py @@ -1,12 +1,9 @@ # coding: utf-8 from django.core.cache import cache from django.utils import translation -from django.utils.translation import gettext_noop, ugettext_lazy as _ +from django.utils.translation import gettext_noop, gettext_lazy as _ from common.utils import i18n_fmt -from .basic import BasicSettingSerializer -from .other import OtherSettingSerializer -from .email import EmailSettingSerializer, EmailContentSettingSerializer from .auth import ( LDAPSettingSerializer, OIDCSettingSerializer, KeycloakSettingSerializer, CASSettingSerializer, RadiusSettingSerializer, FeiShuSettingSerializer, @@ -15,10 +12,12 @@ from .auth import ( SAML2SettingSerializer, OAuth2SettingSerializer, SSOSettingSerializer, CustomSMSSettingSerializer, ) -from .terminal import TerminalSettingSerializer -from .security import SecuritySettingSerializer +from .basic import BasicSettingSerializer from .cleaning import CleaningSerializer - +from .email import EmailSettingSerializer, EmailContentSettingSerializer +from .other import OtherSettingSerializer +from .security import SecuritySettingSerializer +from .terminal import TerminalSettingSerializer __all__ = [ 'SettingsSerializer', diff --git a/apps/settings/serializers/sms.py b/apps/settings/serializers/sms.py index fa274a52a..ec78993a6 100644 --- a/apps/settings/serializers/sms.py +++ b/apps/settings/serializers/sms.py @@ -1,4 +1,4 @@ -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from rest_framework import serializers diff --git a/apps/settings/serializers/terminal.py b/apps/settings/serializers/terminal.py index 87ce12fb7..86465009e 100644 --- a/apps/settings/serializers/terminal.py +++ b/apps/settings/serializers/terminal.py @@ -1,4 +1,4 @@ -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from rest_framework import serializers diff --git a/apps/settings/signals.py b/apps/settings/signals.py index 859378a83..ccc9cd2d5 100644 --- a/apps/settings/signals.py +++ b/apps/settings/signals.py @@ -1,3 +1,3 @@ from django.dispatch import Signal -category_setting_updated = Signal(providing_args=('category', 'serializer')) +category_setting_updated = Signal() diff --git a/apps/settings/tasks/ldap.py b/apps/settings/tasks/ldap.py index b931efb48..0530680e8 100644 --- a/apps/settings/tasks/ldap.py +++ b/apps/settings/tasks/ldap.py @@ -2,8 +2,7 @@ # from celery import shared_task from django.conf import settings -from django.db import transaction -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from common.utils import get_logger from ops.celery.decorator import after_app_ready_start diff --git a/apps/settings/utils/ldap.py b/apps/settings/utils/ldap.py index e8ff0ab79..d130ac41a 100644 --- a/apps/settings/utils/ldap.py +++ b/apps/settings/utils/ldap.py @@ -7,7 +7,7 @@ from copy import deepcopy from django.conf import settings from django.core.cache import cache -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from ldap3 import Server, Connection, SIMPLE from ldap3.core.exceptions import ( LDAPSocketOpenError, diff --git a/apps/terminal/api/component/endpoint.py b/apps/terminal/api/component/endpoint.py index c7518932f..e2eeaf548 100644 --- a/apps/terminal/api/component/endpoint.py +++ b/apps/terminal/api/component/endpoint.py @@ -1,5 +1,5 @@ from django.shortcuts import get_object_or_404 -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from rest_framework import status from rest_framework.decorators import action from rest_framework.request import Request diff --git a/apps/terminal/api/component/storage.py b/apps/terminal/api/component/storage.py index c912e3131..04e0db9ad 100644 --- a/apps/terminal/api/component/storage.py +++ b/apps/terminal/api/component/storage.py @@ -1,15 +1,15 @@ # coding: utf-8 # -from rest_framework import viewsets, generics, status -from rest_framework.response import Response -from rest_framework.request import Request -from rest_framework.decorators import action -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from django_filters import utils +from rest_framework import viewsets, generics, status +from rest_framework.decorators import action +from rest_framework.request import Request +from rest_framework.response import Response -from terminal import const from common.const.http import GET +from terminal import const from terminal.filters import CommandStorageFilter, CommandFilter, CommandFilterForStorageTree from terminal.models import CommandStorage, ReplayStorage from terminal.serializers import CommandStorageSerializer, ReplayStorageSerializer @@ -78,26 +78,26 @@ class CommandStorageViewSet(BaseStorageViewSetMixin, viewsets.ModelViewSet): invalid = _('Invalid') nodes = [ - { - 'id': storage.id, - 'name': f'{storage.name}({storage.type})({command_count})', - 'title': f'{storage.name}({storage.type})', - 'pId': 'root', - 'isParent': False, - 'open': False, - 'valid': True, - } for storage, command_count in storages_with_count - ] + [ - { - 'id': storage.id, - 'name': f'{storage.name}({storage.type}) *{invalid}', - 'title': f'{storage.name}({storage.type})', - 'pId': 'root', - 'isParent': False, - 'open': False, - 'valid': False, - } for storage in invalid_storages - ] + { + 'id': storage.id, + 'name': f'{storage.name}({storage.type})({command_count})', + 'title': f'{storage.name}({storage.type})', + 'pId': 'root', + 'isParent': False, + 'open': False, + 'valid': True, + } for storage, command_count in storages_with_count + ] + [ + { + 'id': storage.id, + 'name': f'{storage.name}({storage.type}) *{invalid}', + 'title': f'{storage.name}({storage.type})', + 'pId': 'root', + 'isParent': False, + 'open': False, + 'valid': False, + } for storage in invalid_storages + ] nodes.append(root) return Response(data=nodes) diff --git a/apps/terminal/api/session/session.py b/apps/terminal/api/session/session.py index 47432b60b..730fc99eb 100644 --- a/apps/terminal/api/session/session.py +++ b/apps/terminal/api/session/session.py @@ -8,7 +8,7 @@ from django.db.models import F from django.http import FileResponse from django.shortcuts import get_object_or_404, reverse from django.utils.encoding import escape_uri_path -from django.utils.translation import ugettext as _ +from django.utils.translation import gettext as _ from django_filters import rest_framework as filters from rest_framework import generics from rest_framework import viewsets, views diff --git a/apps/terminal/api/session/sharing.py b/apps/terminal/api/session/sharing.py index 9a60734fa..1675ee294 100644 --- a/apps/terminal/api/session/sharing.py +++ b/apps/terminal/api/session/sharing.py @@ -1,5 +1,5 @@ from django.conf import settings -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from rest_framework.decorators import action from rest_framework.exceptions import MethodNotAllowed, ValidationError from rest_framework.response import Response diff --git a/apps/terminal/backends/command/models.py b/apps/terminal/backends/command/models.py index 801b3cdf1..cb30efddd 100644 --- a/apps/terminal/backends/command/models.py +++ b/apps/terminal/backends/command/models.py @@ -4,7 +4,7 @@ import uuid from datetime import datetime from django.db import models -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from common.utils.common import lazyproperty from orgs.mixins.models import OrgModelMixin @@ -12,7 +12,6 @@ from terminal.const import RiskLevelChoices class AbstractSessionCommand(OrgModelMixin): - id = models.UUIDField(default=uuid.uuid4, primary_key=True) user = models.CharField(max_length=64, db_index=True, verbose_name=_("User")) asset = models.CharField(max_length=128, db_index=True, verbose_name=_("Asset")) diff --git a/apps/terminal/connect_methods.py b/apps/terminal/connect_methods.py index f6870344d..ed49d722e 100644 --- a/apps/terminal/connect_methods.py +++ b/apps/terminal/connect_methods.py @@ -5,7 +5,7 @@ from collections import defaultdict from django.conf import settings from django.db.models import TextChoices -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from assets.const import Protocol from .const import TerminalType diff --git a/apps/terminal/const.py b/apps/terminal/const.py index f34233e3a..8b04c74cc 100644 --- a/apps/terminal/const.py +++ b/apps/terminal/const.py @@ -2,7 +2,7 @@ # from django.db.models import TextChoices, IntegerChoices -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ class RiskLevelChoices(IntegerChoices): diff --git a/apps/terminal/exceptions.py b/apps/terminal/exceptions.py index bb3e43591..7dab48300 100644 --- a/apps/terminal/exceptions.py +++ b/apps/terminal/exceptions.py @@ -1,4 +1,4 @@ -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from common.exceptions import JMSException @@ -11,4 +11,3 @@ class BulkCreateNotSupport(JMSException): class StorageInvalid(JMSException): default_code = 'storage_invalid' default_detail = _('Storage is invalid') - diff --git a/apps/terminal/models/component/endpoint.py b/apps/terminal/models/component/endpoint.py index c68c06307..8daf75a57 100644 --- a/apps/terminal/models/component/endpoint.py +++ b/apps/terminal/models/component/endpoint.py @@ -1,6 +1,6 @@ from django.core.validators import MinValueValidator, MaxValueValidator from django.db import models -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from assets.models import Asset from common.db.fields import PortField diff --git a/apps/terminal/models/component/status.py b/apps/terminal/models/component/status.py index d273b9dac..2f74ae18d 100644 --- a/apps/terminal/models/component/status.py +++ b/apps/terminal/models/component/status.py @@ -3,7 +3,7 @@ import uuid from django.core.cache import cache from django.db import models from django.forms.models import model_to_dict -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from common.utils import get_logger diff --git a/apps/terminal/models/component/storage.py b/apps/terminal/models/component/storage.py index 0d4a5347f..6a34f3f5a 100644 --- a/apps/terminal/models/component/storage.py +++ b/apps/terminal/models/component/storage.py @@ -7,7 +7,7 @@ from importlib import import_module import jms_storage from django.conf import settings from django.db import models -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from common.db.fields import EncryptJsonDictTextField from common.db.models import JMSBaseModel diff --git a/apps/terminal/models/component/task.py b/apps/terminal/models/component/task.py index 1c081da53..b1694dcb8 100644 --- a/apps/terminal/models/component/task.py +++ b/apps/terminal/models/component/task.py @@ -1,7 +1,7 @@ from __future__ import unicode_literals from django.db import models -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from common.db.models import JMSBaseModel from .terminal import Terminal diff --git a/apps/terminal/models/component/terminal.py b/apps/terminal/models/component/terminal.py index cc79212db..f2b0f9148 100644 --- a/apps/terminal/models/component/terminal.py +++ b/apps/terminal/models/component/terminal.py @@ -1,9 +1,9 @@ -import time import uuid + from django.conf import settings from django.core.cache import cache from django.db import models -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from common.const.signals import SKIP_SIGNAL from common.db.models import JMSBaseModel diff --git a/apps/terminal/models/session/command.py b/apps/terminal/models/session/command.py index 3d377523b..9978f9911 100644 --- a/apps/terminal/models/session/command.py +++ b/apps/terminal/models/session/command.py @@ -2,7 +2,7 @@ from __future__ import unicode_literals from django.db import models from django.db.models.signals import post_save -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from terminal.backends.command.models import AbstractSessionCommand diff --git a/apps/terminal/models/session/replay.py b/apps/terminal/models/session/replay.py index 9fd210f48..29d55cd9c 100644 --- a/apps/terminal/models/session/replay.py +++ b/apps/terminal/models/session/replay.py @@ -1,5 +1,5 @@ from django.db import models -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from common.db.models import JMSBaseModel from .session import Session diff --git a/apps/terminal/models/session/session.py b/apps/terminal/models/session/session.py index ccf5936b8..35c11727e 100644 --- a/apps/terminal/models/session/session.py +++ b/apps/terminal/models/session/session.py @@ -8,7 +8,7 @@ from django.core.cache import cache from django.core.files.storage import default_storage from django.db import models from django.utils import timezone -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from assets.models import Asset from common.utils import get_object_or_none, lazyproperty diff --git a/apps/terminal/models/session/sharing.py b/apps/terminal/models/session/sharing.py index c0e83dfda..e5187a3b8 100644 --- a/apps/terminal/models/session/sharing.py +++ b/apps/terminal/models/session/sharing.py @@ -2,7 +2,7 @@ import datetime from django.db import models from django.utils import timezone -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from common.db.models import JMSBaseModel from orgs.mixins.models import OrgModelMixin diff --git a/apps/terminal/notifications.py b/apps/terminal/notifications.py index cfcac4396..f200650a6 100644 --- a/apps/terminal/notifications.py +++ b/apps/terminal/notifications.py @@ -2,7 +2,7 @@ from typing import Callable from django.conf import settings from django.template.loader import render_to_string -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from common.utils import get_logger, reverse from common.utils import lazyproperty @@ -10,9 +10,9 @@ from common.utils.timezone import local_now_display from notifications.backends import BACKEND from notifications.models import SystemMsgSubscription from notifications.notifications import SystemMessage, UserMessage +from terminal.const import RiskLevelChoices from terminal.models import Session, Command from users.models import User -from terminal.const import RiskLevelChoices logger = get_logger(__name__) diff --git a/apps/terminal/serializers/command.py b/apps/terminal/serializers/command.py index b8983a59c..11b16f5ad 100644 --- a/apps/terminal/serializers/command.py +++ b/apps/terminal/serializers/command.py @@ -1,18 +1,17 @@ # ~*~ coding: utf-8 ~*~ -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from rest_framework import serializers -from common.utils import pretty_string, is_uuid, get_logger from common.serializers.fields import LabeledChoiceField -from terminal.models import Command +from common.utils import pretty_string, is_uuid, get_logger from terminal.const import RiskLevelChoices +from terminal.models import Command logger = get_logger(__name__) __all__ = ['SessionCommandSerializer', 'InsecureCommandAlertSerializer'] class SimpleSessionCommandSerializer(serializers.ModelSerializer): - """ 简单Session命令序列类, 用来提取公共字段 """ user = serializers.CharField(label=_("User")) # 限制 64 字符,见 validate_user asset = serializers.CharField(max_length=128, label=_("Asset")) diff --git a/apps/terminal/serializers/session.py b/apps/terminal/serializers/session.py index dc736a522..999028133 100644 --- a/apps/terminal/serializers/session.py +++ b/apps/terminal/serializers/session.py @@ -1,4 +1,4 @@ -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from rest_framework import serializers from common.serializers.fields import LabeledChoiceField diff --git a/apps/terminal/serializers/sharing.py b/apps/terminal/serializers/sharing.py index c7b8f2e4e..abc2dbdd3 100644 --- a/apps/terminal/serializers/sharing.py +++ b/apps/terminal/serializers/sharing.py @@ -1,4 +1,4 @@ -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from rest_framework import serializers from common.serializers.fields import LabeledChoiceField diff --git a/apps/terminal/serializers/storage.py b/apps/terminal/serializers/storage.py index dd0f7f677..2c9a1b1c2 100644 --- a/apps/terminal/serializers/storage.py +++ b/apps/terminal/serializers/storage.py @@ -1,15 +1,17 @@ # -*- coding: utf-8 -*- # +from urllib.parse import urlparse + +from django.db.models import TextChoices +from django.utils.translation import gettext_lazy as _ from rest_framework import serializers from rest_framework.validators import UniqueValidator -from urllib.parse import urlparse -from django.utils.translation import ugettext_lazy as _ -from django.db.models import TextChoices -from common.serializers.fields import LabeledChoiceField + from common.serializers import MethodSerializer +from common.serializers.fields import LabeledChoiceField from common.serializers.fields import ReadableHiddenField, EncryptedField -from ..models import ReplayStorage, CommandStorage from .. import const +from ..models import ReplayStorage, CommandStorage # Replay storage serializers diff --git a/apps/terminal/serializers/terminal.py b/apps/terminal/serializers/terminal.py index 2904c7938..a65249551 100644 --- a/apps/terminal/serializers/terminal.py +++ b/apps/terminal/serializers/terminal.py @@ -1,4 +1,4 @@ -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from rest_framework import serializers from common.serializers import BulkModelSerializer diff --git a/apps/terminal/utils/db_port_mapper.py b/apps/terminal/utils/db_port_mapper.py index 9d335859a..9878fa9ef 100644 --- a/apps/terminal/utils/db_port_mapper.py +++ b/apps/terminal/utils/db_port_mapper.py @@ -1,6 +1,6 @@ from django.conf import settings from django.core.cache import cache -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from assets.const import DatabaseTypes from assets.models import Database diff --git a/apps/tickets/apps.py b/apps/tickets/apps.py index 317ac592e..563bb9048 100644 --- a/apps/tickets/apps.py +++ b/apps/tickets/apps.py @@ -1,5 +1,5 @@ from django.apps import AppConfig -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ class TicketsConfig(AppConfig): @@ -7,6 +7,4 @@ class TicketsConfig(AppConfig): verbose_name = _('Tickets') def ready(self): - from . import signal_handlers - from . import notifications return super().ready() diff --git a/apps/tickets/const.py b/apps/tickets/const.py index ccd044bbe..a2a5ec981 100644 --- a/apps/tickets/const.py +++ b/apps/tickets/const.py @@ -1,5 +1,5 @@ from django.db.models import TextChoices, IntegerChoices -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ TICKET_DETAIL_URL = '/ui/#/tickets/tickets/{id}?type={type}' diff --git a/apps/tickets/errors.py b/apps/tickets/errors.py index 716eeca94..5bd73a95f 100644 --- a/apps/tickets/errors.py +++ b/apps/tickets/errors.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- # -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from common.exceptions import JMSException diff --git a/apps/tickets/handlers/apply_asset.py b/apps/tickets/handlers/apply_asset.py index f2b2ee842..3b4c70729 100644 --- a/apps/tickets/handlers/apply_asset.py +++ b/apps/tickets/handlers/apply_asset.py @@ -1,4 +1,4 @@ -from django.utils.translation import ugettext as _ +from django.utils.translation import gettext as _ from orgs.utils import tmp_to_org from perms.models import AssetPermission diff --git a/apps/tickets/handlers/base.py b/apps/tickets/handlers/base.py index 6548bfa8f..fbf6a8e46 100644 --- a/apps/tickets/handlers/base.py +++ b/apps/tickets/handlers/base.py @@ -1,6 +1,6 @@ import html2text from django.template.loader import render_to_string -from django.utils.translation import ugettext as _ +from django.utils.translation import gettext as _ from common.utils import get_logger from tickets.const import TicketState, TicketType diff --git a/apps/tickets/models/comment.py b/apps/tickets/models/comment.py index 6577b65e2..20d427497 100644 --- a/apps/tickets/models/comment.py +++ b/apps/tickets/models/comment.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # from django.db import models -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from common.db.models import JMSBaseModel diff --git a/apps/tickets/models/flow.py b/apps/tickets/models/flow.py index 0b7518fc6..c339e4685 100644 --- a/apps/tickets/models/flow.py +++ b/apps/tickets/models/flow.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # from django.db import models -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from common.db.models import JMSBaseModel from orgs.mixins.models import OrgModelMixin diff --git a/apps/tickets/models/relation.py b/apps/tickets/models/relation.py index ca159804d..98bb1dc87 100644 --- a/apps/tickets/models/relation.py +++ b/apps/tickets/models/relation.py @@ -1,10 +1,12 @@ from django.db import models -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ class TicketSession(models.Model): - ticket = models.ForeignKey('tickets.Ticket', related_name='session_relation', on_delete=models.CASCADE, db_constraint=False) - session = models.ForeignKey('terminal.Session', related_name='ticket_relation', on_delete=models.CASCADE, db_constraint=False) + ticket = models.ForeignKey('tickets.Ticket', related_name='session_relation', on_delete=models.CASCADE, + db_constraint=False) + session = models.ForeignKey('terminal.Session', related_name='ticket_relation', on_delete=models.CASCADE, + db_constraint=False) class Meta: verbose_name = _("Ticket session relation") diff --git a/apps/tickets/models/ticket/general.py b/apps/tickets/models/ticket/general.py index b419bb2bb..f7c78a4a1 100644 --- a/apps/tickets/models/ticket/general.py +++ b/apps/tickets/models/ticket/general.py @@ -8,7 +8,7 @@ from django.db.models import Prefetch, Q from django.db.models.fields import related from django.db.utils import IntegrityError from django.forms import model_to_dict -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from common.db.encoder import ModelJSONFieldEncoder from common.db.models import JMSBaseModel diff --git a/apps/tickets/notifications.py b/apps/tickets/notifications.py index 5da077496..91c0a047d 100644 --- a/apps/tickets/notifications.py +++ b/apps/tickets/notifications.py @@ -6,7 +6,7 @@ from django.core.cache import cache from django.forms import model_to_dict from django.shortcuts import reverse from django.template.loader import render_to_string -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from common.db.encoder import ModelJSONFieldEncoder from common.utils import get_logger, random_string diff --git a/apps/tickets/serializers/flow.py b/apps/tickets/serializers/flow.py index f3b9c0215..01951c1ae 100644 --- a/apps/tickets/serializers/flow.py +++ b/apps/tickets/serializers/flow.py @@ -1,13 +1,13 @@ -from rest_framework import serializers from django.db.transaction import atomic -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ +from rest_framework import serializers +from common.serializers.fields import LabeledChoiceField +from orgs.mixins.serializers import OrgResourceModelSerializerMixin from orgs.models import Organization from orgs.utils import get_current_org_id -from orgs.mixins.serializers import OrgResourceModelSerializerMixin -from common.serializers.fields import LabeledChoiceField -from tickets.models import TicketFlow, ApprovalRule from tickets.const import TicketApprovalStrategy, TicketType +from tickets.models import TicketFlow, ApprovalRule __all__ = ['TicketFlowSerializer'] diff --git a/apps/tickets/serializers/ticket/apply_asset.py b/apps/tickets/serializers/ticket/apply_asset.py index 98587f266..49dcc09a0 100644 --- a/apps/tickets/serializers/ticket/apply_asset.py +++ b/apps/tickets/serializers/ticket/apply_asset.py @@ -1,4 +1,4 @@ -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from rest_framework import serializers from assets.models import Asset, Node diff --git a/apps/tickets/serializers/ticket/common.py b/apps/tickets/serializers/ticket/common.py index 8ec463337..90204c18a 100644 --- a/apps/tickets/serializers/ticket/common.py +++ b/apps/tickets/serializers/ticket/common.py @@ -1,6 +1,6 @@ from django.db.models import Model from django.db.transaction import atomic -from django.utils.translation import ugettext as _ +from django.utils.translation import gettext as _ from rest_framework import serializers from orgs.utils import tmp_to_org diff --git a/apps/tickets/serializers/ticket/ticket.py b/apps/tickets/serializers/ticket/ticket.py index ff76ee9eb..edeb97ad2 100644 --- a/apps/tickets/serializers/ticket/ticket.py +++ b/apps/tickets/serializers/ticket/ticket.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- # -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from rest_framework import serializers from common.serializers.fields import LabeledChoiceField diff --git a/apps/tickets/views/approve.py b/apps/tickets/views/approve.py index a3a265005..21e5b4af6 100644 --- a/apps/tickets/views/approve.py +++ b/apps/tickets/views/approve.py @@ -2,11 +2,13 @@ # from __future__ import unicode_literals + from django.core.cache import cache from django.shortcuts import redirect, reverse +from django.utils.translation import gettext as _ from django.views.generic.base import TemplateView -from django.utils.translation import ugettext as _ +from common.utils import get_logger, FlashMessageUtil from orgs.utils import tmp_to_root_org from tickets.const import TicketType from tickets.errors import AlreadyClosed @@ -14,7 +16,6 @@ from tickets.models import ( Ticket, ApplyAssetTicket, ApplyLoginTicket, ApplyLoginAssetTicket, ApplyCommandTicket ) -from common.utils import get_logger, FlashMessageUtil logger = get_logger(__name__) diff --git a/apps/users/api/user.py b/apps/users/api/user.py index 7bb8a7d8f..e0bc288c8 100644 --- a/apps/users/api/user.py +++ b/apps/users/api/user.py @@ -1,7 +1,7 @@ # ~*~ coding: utf-8 ~*~ from collections import defaultdict -from django.utils.translation import ugettext as _ +from django.utils.translation import gettext as _ from rest_framework import generics from rest_framework.decorators import action from rest_framework.response import Response @@ -118,7 +118,6 @@ class UserViewSet(CommonApiMixin, UserQuerysetMixin, SuggestionMixin, BulkModelV self.check_object_permissions(self.request, user) return super().perform_bulk_update(serializer) - def perform_bulk_destroy(self, objects): for obj in objects: self.check_object_permissions(self.request, obj) diff --git a/apps/users/apps.py b/apps/users/apps.py index ead9987be..9c00a68f9 100644 --- a/apps/users/apps.py +++ b/apps/users/apps.py @@ -1,7 +1,7 @@ from __future__ import unicode_literals -from django.utils.translation import ugettext_lazy as _ from django.apps import AppConfig +from django.utils.translation import gettext_lazy as _ class UsersConfig(AppConfig): @@ -9,7 +9,4 @@ class UsersConfig(AppConfig): verbose_name = _('Users') def ready(self): - from . import signal_handlers - from . import notifications - from . import tasks super().ready() diff --git a/apps/users/const.py b/apps/users/const.py index 41f350a28..0de518098 100644 --- a/apps/users/const.py +++ b/apps/users/const.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # from django.db.models import TextChoices -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ TICKET_DETAIL_URL = '/ui/#/tickets/tickets/{id}' diff --git a/apps/users/models/group.py b/apps/users/models/group.py index e92e65c81..914c22f75 100644 --- a/apps/users/models/group.py +++ b/apps/users/models/group.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- from django.db import models -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from common.utils import lazyproperty from orgs.mixins.models import JMSOrgBaseModel diff --git a/apps/users/models/user.py b/apps/users/models/user.py index fcbc0b76e..4a7dccd05 100644 --- a/apps/users/models/user.py +++ b/apps/users/models/user.py @@ -16,7 +16,7 @@ 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 django.utils.translation import gettext_lazy as _ from common.db import fields, models as jms_models from common.utils import ( diff --git a/apps/users/notifications.py b/apps/users/notifications.py index cbc6e1976..95af2386e 100644 --- a/apps/users/notifications.py +++ b/apps/users/notifications.py @@ -1,10 +1,10 @@ -from urllib.parse import urljoin from collections import defaultdict +from urllib.parse import urljoin -from django.utils import timezone -from django.utils.translation import ugettext as _ from django.conf import settings from django.template.loader import render_to_string +from django.utils import timezone +from django.utils.translation import gettext as _ from common.utils import reverse, get_request_ip_or_data, get_request_user_agent from notifications.notifications import UserMessage diff --git a/apps/users/serializers/group.py b/apps/users/serializers/group.py index dc61eee21..af4e349e0 100644 --- a/apps/users/serializers/group.py +++ b/apps/users/serializers/group.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # from django.db.models import Count -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from common.serializers.mixin import ObjectRelatedField from orgs.mixins.serializers import BulkOrgResourceModelSerializer diff --git a/apps/users/serializers/profile.py b/apps/users/serializers/profile.py index 7502a7525..f03bb133b 100644 --- a/apps/users/serializers/profile.py +++ b/apps/users/serializers/profile.py @@ -1,5 +1,5 @@ from django.conf import settings -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from rest_framework import serializers from common.serializers.fields import EncryptedField, LabeledChoiceField diff --git a/apps/users/serializers/user.py b/apps/users/serializers/user.py index 099bddd1d..ee10ddf74 100644 --- a/apps/users/serializers/user.py +++ b/apps/users/serializers/user.py @@ -3,7 +3,7 @@ from functools import partial -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from rest_framework import serializers from common.serializers import CommonBulkSerializerMixin diff --git a/apps/users/signal_handlers.py b/apps/users/signal_handlers.py index 2b2054ea3..7db379d4a 100644 --- a/apps/users/signal_handlers.py +++ b/apps/users/signal_handlers.py @@ -3,7 +3,7 @@ from django.conf import settings from django.db.models.signals import post_save from django.dispatch import receiver -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from django_auth_ldap.backend import populate_user from django_cas_ng.signals import cas_user_authenticated diff --git a/apps/users/signals.py b/apps/users/signals.py index 739379d93..d85139c62 100644 --- a/apps/users/signals.py +++ b/apps/users/signals.py @@ -1,7 +1,6 @@ from django.dispatch import Signal - -post_user_create = Signal(providing_args=('user',)) -post_user_change_password = Signal(providing_args=('user',)) -pre_user_leave_org = Signal(providing_args=('user', 'org')) -post_user_leave_org = Signal(providing_args=('user', 'org')) +post_user_create = Signal() +post_user_change_password = Signal() +pre_user_leave_org = Signal() +post_user_leave_org = Signal() diff --git a/apps/users/views/profile/otp.py b/apps/users/views/profile/otp.py index 5b4333d37..a42a7a513 100644 --- a/apps/users/views/profile/otp.py +++ b/apps/users/views/profile/otp.py @@ -1,21 +1,19 @@ # ~*~ coding: utf-8 ~*~ -import time +from django.contrib.auth import logout as auth_logout +from django.http.response import HttpResponseRedirect +from django.shortcuts import redirect from django.urls import reverse -from django.utils.translation import ugettext as _ +from django.utils.translation import gettext as _ from django.views.generic.base import TemplateView from django.views.generic.edit import FormView -from django.contrib.auth import logout as auth_logout -from django.shortcuts import redirect -from django.http.response import HttpResponseRedirect -from authentication.mixins import AuthMixin -from authentication.mfa import MFAOtp, otp_failed_msg from authentication.errors import SessionEmptyError +from authentication.mfa import MFAOtp, otp_failed_msg +from authentication.mixins import AuthMixin +from common.permissions import IsValidUser from common.utils import get_logger, FlashMessageUtil from common.views.mixins import PermissionsMixin -from common.permissions import IsValidUser -from .password import UserVerifyPasswordView from ... import forms from ...utils import ( generate_otp_uri, check_otp_code, diff --git a/apps/users/views/profile/password.py b/apps/users/views/profile/password.py index bb51b8aa4..87d0bf6e7 100644 --- a/apps/users/views/profile/password.py +++ b/apps/users/views/profile/password.py @@ -1,15 +1,12 @@ # ~*~ coding: utf-8 ~*~ -import time -from django.conf import settings from django.contrib.auth import authenticate from django.shortcuts import redirect -from django.utils.translation import ugettext as _ +from django.utils.translation import gettext as _ from django.views.generic.edit import FormView -from authentication.mixins import AuthMixin from authentication import errors - +from authentication.mixins import AuthMixin from common.utils import get_logger from ... import forms from ...utils import ( diff --git a/apps/users/views/profile/reset.py b/apps/users/views/profile/reset.py index 2972225ef..b8e18a647 100644 --- a/apps/users/views/profile/reset.py +++ b/apps/users/views/profile/reset.py @@ -2,16 +2,16 @@ from __future__ import unicode_literals -from common.utils import FlashMessageUtil, get_object_or_none, random_string -from common.utils.verify_code import SendAndVerifyCodeUtil from django.conf import settings from django.core.cache import cache from django.shortcuts import redirect, reverse from django.urls import reverse_lazy -from django.utils.translation import ugettext as _ +from django.utils.translation import gettext as _ from django.views.generic import FormView, RedirectView -from users.notifications import ResetPasswordSuccessMsg +from common.utils import FlashMessageUtil, get_object_or_none, random_string +from common.utils.verify_code import SendAndVerifyCodeUtil +from users.notifications import ResetPasswordSuccessMsg from ... import forms from ...models import User from ...utils import check_password_rules, get_password_check_rules diff --git a/requirements/requirements.txt b/requirements/requirements.txt index da47a1c31..71c08477c 100644 --- a/requirements/requirements.txt +++ b/requirements/requirements.txt @@ -1,137 +1,136 @@ # 临时解决 cython 3.0 造成的错误 -cython==0.29.36 -aiofiles==22.1.0 -amqp==5.0.9 -git+https://github.com/jumpserver/ansible@master#egg=ansible-core +cython==3.0.0 +aiofiles==23.1.0 +amqp==5.1.1 +#git+https://github.com/jumpserver/ansible@master#egg=ansible-core ansible==7.1.0 -ansible-runner==2.2.1 -asn1crypto==0.24.0 +ansible-runner==2.3.3 +asn1crypto==1.5.1 bcrypt==4.0.1 -billiard==3.6.4.0 -certifi==2022.12.7 +billiard==4.1.0 +certifi==2023.7.22 cffi==1.15.1 -chardet==3.0.4 -configparser==3.5.0 -decorator==4.1.2 -docutils==0.14 -ecdsa==0.13.3 -enum-compat==0.0.2 +chardet==5.1.0 +configparser==6.0.0 +decorator==5.1.1 +docutils==0.20.1 +ecdsa==0.18.0 +enum-compat==0.0.3 ephem==4.1.4 -future==0.16.0 -idna==2.8 +future==0.18.3 +idna==3.4 itypes==1.2.0 Jinja2==3.1.2 -jmespath==1.0.1 -MarkupSafe==2.1.1 +#jmespath==0.9.3 +MarkupSafe==2.1.3 olefile==0.46 -paramiko==2.11.0 +paramiko==3.2.0 passlib==1.7.4 -pyasn1==0.4.8 +pyasn1==0.5.0 pycparser==2.21 -cryptography==38.0.4 +cryptography==41.0.2 pycryptodome==3.18.0 pycryptodomex==3.18.0 -phonenumbers==8.13.8 -gmssl==3.2.1 +phonenumbers==8.13.17 +gmssl==3.2.2 itsdangerous==1.1.0 -pyotp==2.6.0 +pyotp==2.8.0 PyNaCl==1.5.0 python-dateutil==2.8.2 PyYAML==6.0.1 requests==2.31.0 -jms-storage==0.0.47 -simplejson==3.17.6 +jms-storage==0.0.49 +simplejson==3.19.1 six==1.16.0 sshtunnel==0.4.0 sshpubkeys==3.3.1 uritemplate==4.1.1 -urllib3==1.26.9 +urllib3==1.26.16 vine==5.0.0 -Werkzeug==2.1.2 +Werkzeug==2.3.6 unicodecsv==0.14.1 httpsig==1.3.0 -treelib==1.6.1 -psutil==5.9.1 +treelib==1.6.4 +psutil==5.9.5 msrestazure==0.6.4 -adal==1.2.5 +adal==1.2.7 openpyxl==3.0.10 pyexcel==0.7.0 pyexcel-xlsx==0.6.0 data-tree==0.0.1 -pyvmomi==7.0.1 -termcolor==1.1.0 +pyvmomi==8.0.1.0.2 +termcolor==2.3.0 html2text==2020.1.16 -pyzipper==0.3.5 +pyzipper==0.3.6 python3-saml==1.15.0 -websocket-client==1.2.3 +websocket-client==1.6.1 pyjwkest==1.4.2 jsonfield2==4.0.0.post0 -geoip2==4.5.0 +geoip2==4.7.0 ipip-ipdb==1.6.1 pywinrm==0.4.3 # Django environment -Django==3.2.20 -django-bootstrap3==14.2.0 -django-filter==2.4.0 -django-formtools==2.2 +Django==4.2.3 +django-bootstrap3==23.4 +django-filter==23.2 +django-formtools==2.4.1 django-ranged-response==0.2.0 django-rest-swagger==2.2.0 -django-simple-captcha==0.5.17 -django-timezone-field==5.0 -djangorestframework==3.13.1 +django-simple-captcha==0.5.18 +django-timezone-field==5.1 +djangorestframework==3.14.0 djangorestframework-bulk==0.2.1 -django-simple-history==3.1.1 -django-private-storage==3.0 +django-simple-history==3.3.0 +django-private-storage==3.1 drf-nested-routers==0.93.4 -drf-writable-nested==0.6.4 +drf-writable-nested==0.7.0 rest_condition==1.0.3 -drf-yasg==1.20.0 +drf-yasg==1.21.7 coreapi==2.3.3 coreschema==0.0.4 openapi-codec==1.3.2 -Pillow==9.3.0 -pytz==2022.1 +Pillow==10.0.0 +pytz==2023.3 # Runtime -django-proxy==1.2.1 -channels-redis==4.0.0 -python-daemon==2.3.0 -eventlet==0.33.1 +django-proxy==1.2.2 +channels-redis==4.1.0 +python-daemon==3.0.1 +eventlet==0.33.3 greenlet==2.0.2 -gunicorn==20.1.0 -celery==5.2.7 -flower==1.2.0 -django-celery-beat==2.3.0 -kombu==5.2.4 -uvicorn==0.20.0 -websockets==10.4 +gunicorn==21.2.0 +celery==5.3.1 +flower==2.0.0 +django-celery-beat==2.5.0 +kombu==5.3.1 +uvicorn==0.23.1 +websockets==11.0.3 # Auth -python-ldap==3.4.0 +python-ldap==3.4.3 ldap3==2.9.1 #django-radius==1.5.0 -git+https://github.com/robgolding/django-radius@develop#egg=django-radius -jumpserver-django-oidc-rp==0.3.7.8 -django-cas-ng==4.0.1 -python-cas==1.5.0 -django-auth-ldap==2.2.0 +#git+https://github.com/robgolding/django-radius@develop#egg=django-radius +django-cas-ng==4.3.0 +python-cas==1.6.0 +django-auth-ldap==4.4.0 # Cloud req -boto3==1.24.12 -botocore==1.27.12 -s3transfer==0.6.0 -kubernetes==21.7.0 +boto3==1.28.9 +botocore==1.31.9 +s3transfer==0.6.1 +kubernetes==27.2.0 # DB requirements mysqlclient==2.2.0 -PyMySQL==1.0.2 +PyMySQL==1.1.0 pymssql==2.2.7 -django-mysql==3.9.0 -django-redis==5.2.0 -python-redis-lock==3.7.0 -pyOpenSSL==22.0.0 -redis==4.5.4 -pyOpenSSL==22.0.0 -pymongo==4.2.0 +django-mysql==4.11.0 +django-redis==5.3.0 +python-redis-lock==4.0.0 +pyOpenSSL==23.2.0 +redis==4.6.0 +pyOpenSSL==23.2.0 +pymongo==4.4.1 pyfreerdp==0.0.1 # Debug -ipython==8.10.0 +ipython==8.14.0 ForgeryPy3==0.3.1 -django-debug-toolbar==3.5 +django-debug-toolbar==4.1.0 Pympler==1.0.1