From 374039d287fbbc297cd11de6dd4511679e76a9e0 Mon Sep 17 00:00:00 2001 From: BaiJiangJie <32935519+BaiJiangJie@users.noreply.github.com> Date: Mon, 17 Dec 2018 11:18:55 +0800 Subject: [PATCH 1/2] =?UTF-8?q?[Update]=20=E7=BB=88=E7=AB=AF=E8=AE=BE?= =?UTF-8?q?=E7=BD=AE=EF=BC=8C=E6=B7=BB=E5=8A=A0coco=E7=AB=AF=E8=B5=84?= =?UTF-8?q?=E4=BA=A7=E5=88=97=E8=A1=A8=E9=A1=B5=E9=9D=A2=E5=A4=A7=E5=B0=8F?= =?UTF-8?q?=E9=85=8D=E7=BD=AE=E9=A1=B9=20(#2182)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * [Update] 终端设置,添加coco端资产列表页面大小配置项 * [Update] 添加页面大小选项 --- apps/common/forms.py | 11 + apps/jumpserver/conf.py | 7 +- apps/jumpserver/settings.py | 6 + apps/locale/zh/LC_MESSAGES/django.mo | Bin 60010 -> 60078 bytes apps/locale/zh/LC_MESSAGES/django.po | 349 ++++++++++++++++----------- 5 files changed, 227 insertions(+), 146 deletions(-) diff --git a/apps/common/forms.py b/apps/common/forms.py index ff599062f..d052819b6 100644 --- a/apps/common/forms.py +++ b/apps/common/forms.py @@ -134,6 +134,14 @@ class TerminalSettingForm(BaseForm): ('hostname', _('Hostname')), ('ip', _('IP')), ) + PAGE_SIZE_CHOICES = ( + ('all', _('All')), + ('auto', _('Auto')), + (10, 10), + (15, 15), + (25, 25), + (50, 50), + ) TERMINAL_PASSWORD_AUTH = forms.BooleanField( initial=True, required=False, label=_("Password auth") ) @@ -146,6 +154,9 @@ class TerminalSettingForm(BaseForm): TERMINAL_ASSET_LIST_SORT_BY = forms.ChoiceField( choices=SORT_BY_CHOICES, initial='hostname', label=_("List sort by") ) + TERMINAL_ASSET_LIST_PAGE_SIZE = forms.ChoiceField( + choices=PAGE_SIZE_CHOICES, initial='auto', label=_("List page size"), + ) class TerminalCommandStorage(BaseForm): diff --git a/apps/jumpserver/conf.py b/apps/jumpserver/conf.py index 08716f93b..b1d33c3cd 100644 --- a/apps/jumpserver/conf.py +++ b/apps/jumpserver/conf.py @@ -312,7 +312,12 @@ defaults = { 'SESSION_COOKIE_AGE': 3600 * 24, 'SESSION_EXPIRE_AT_BROWSER_CLOSE': False, 'AUTH_OPENID': False, - 'EMAIL_SUFFIX': 'jumpserver.org' + 'EMAIL_SUFFIX': 'jumpserver.org', + 'TERMINAL_PASSWORD_AUTH': True, + 'TERMINAL_PUBLIC_KEY_AUTH': True, + 'TERMINAL_HEARTBEAT_INTERVAL': 5, + 'TERMINAL_ASSET_LIST_SORT_BY': 'hostname', + 'TERMINAL_ASSET_LIST_PAGE_SIZE': 'auto', } diff --git a/apps/jumpserver/settings.py b/apps/jumpserver/settings.py index f1d1f8e8f..fb595a4df 100644 --- a/apps/jumpserver/settings.py +++ b/apps/jumpserver/settings.py @@ -484,6 +484,12 @@ SECURITY_PASSWORD_RULES = [ 'SECURITY_PASSWORD_SPECIAL_CHAR' ] +TERMINAL_PASSWORD_AUTH = CONFIG.TERMINAL_PASSWORD_AUTH +TERMINAL_PUBLIC_KEY_AUTH = CONFIG.TERMINAL_PUBLIC_KEY_AUTH +TERMINAL_HEARTBEAT_INTERVAL = CONFIG.TERMINAL_HEARTBEAT_INTERVAL +TERMINAL_ASSET_LIST_SORT_BY = CONFIG.TERMINAL_ASSET_LIST_SORT_BY +TERMINAL_ASSET_LIST_PAGE_SIZE = CONFIG.TERMINAL_ASSET_LIST_PAGE_SIZE + # Django bootstrap3 setting, more see http://django-bootstrap3.readthedocs.io/en/latest/settings.html BOOTSTRAP3 = { 'horizontal_label_class': 'col-md-2', diff --git a/apps/locale/zh/LC_MESSAGES/django.mo b/apps/locale/zh/LC_MESSAGES/django.mo index 65dbbaee802a31e7fe8db5f3cbec742b30d05839..7c398c4ac4bccaaac775f7c0456b087d6bea835a 100644 GIT binary patch delta 17946 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 delta 17896 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 G!v6uJp0L;e diff --git a/apps/locale/zh/LC_MESSAGES/django.po b/apps/locale/zh/LC_MESSAGES/django.po index 5de533806..f218e1995 100644 --- a/apps/locale/zh/LC_MESSAGES/django.po +++ b/apps/locale/zh/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Jumpserver 0.3.3\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-12-07 18:11+0800\n" +"POT-Creation-Date: 2018-12-17 10:14+0800\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: ibuler \n" "Language-Team: Jumpserver team\n" @@ -34,8 +34,8 @@ msgid "Test if the assets under the node are connectable: {}" msgstr "测试节点下资产是否可连接: {}" #: assets/forms/asset.py:27 assets/models/asset.py:83 assets/models/user.py:113 -#: assets/templates/assets/asset_detail.html:187 -#: assets/templates/assets/asset_detail.html:195 +#: assets/templates/assets/asset_detail.html:191 +#: assets/templates/assets/asset_detail.html:199 #: assets/templates/assets/system_user_asset.html:95 perms/models.py:32 msgid "Nodes" msgstr "节点管理" @@ -62,7 +62,8 @@ msgid "Label" msgstr "标签" #: assets/forms/asset.py:37 assets/forms/asset.py:76 assets/models/asset.py:79 -#: assets/models/domain.py:24 assets/models/domain.py:50 +#: assets/models/domain.py:26 assets/models/domain.py:52 +#: assets/templates/assets/asset_detail.html:81 #: assets/templates/assets/user_asset_list.html:157 #: xpack/plugins/orgs/templates/orgs/org_list.html:17 msgid "Domain" @@ -105,7 +106,7 @@ msgid "Select assets" msgstr "选择资产" #: assets/forms/asset.py:108 assets/models/asset.py:76 -#: assets/models/domain.py:48 assets/templates/assets/admin_user_assets.html:53 +#: assets/models/domain.py:50 assets/templates/assets/admin_user_assets.html:53 #: assets/templates/assets/asset_detail.html:69 #: assets/templates/assets/domain_gateway_list.html:58 #: assets/templates/assets/system_user_asset.html:52 @@ -137,13 +138,13 @@ msgstr "端口" msgid "Asset" msgstr "资产" -#: assets/forms/domain.py:42 +#: assets/forms/domain.py:46 msgid "Password should not contain special characters" msgstr "不能包含特殊字符" -#: assets/forms/domain.py:59 assets/forms/user.py:80 assets/forms/user.py:143 +#: assets/forms/domain.py:63 assets/forms/user.py:80 assets/forms/user.py:143 #: assets/models/base.py:22 assets/models/cluster.py:18 -#: assets/models/cmd_filter.py:20 assets/models/domain.py:18 +#: assets/models/cmd_filter.py:20 assets/models/domain.py:20 #: assets/models/group.py:20 assets/models/label.py:18 #: assets/templates/assets/admin_user_detail.html:56 #: assets/templates/assets/admin_user_list.html:26 @@ -183,7 +184,7 @@ msgstr "不能包含特殊字符" msgid "Name" msgstr "名称" -#: assets/forms/domain.py:60 assets/forms/user.py:81 assets/forms/user.py:144 +#: assets/forms/domain.py:64 assets/forms/user.py:81 assets/forms/user.py:144 #: assets/models/base.py:23 assets/templates/assets/admin_user_detail.html:60 #: assets/templates/assets/admin_user_list.html:27 #: assets/templates/assets/domain_gateway_list.html:60 @@ -256,7 +257,7 @@ msgid "" "password." msgstr "如果选择手动登录模式,用户名和密码可以不填写" -#: assets/models/asset.py:73 assets/models/domain.py:47 +#: assets/models/asset.py:73 assets/models/domain.py:49 #: assets/templates/assets/_asset_list_modal.html:46 #: assets/templates/assets/admin_user_assets.html:52 #: assets/templates/assets/asset_detail.html:61 @@ -285,7 +286,7 @@ msgstr "IP" msgid "Hostname" msgstr "主机名" -#: assets/models/asset.py:75 assets/models/domain.py:49 +#: assets/models/asset.py:75 assets/models/domain.py:51 #: assets/models/user.py:117 assets/templates/assets/asset_detail.html:73 #: assets/templates/assets/domain_gateway_list.html:59 #: assets/templates/assets/system_user_detail.html:70 @@ -295,14 +296,14 @@ msgstr "主机名" msgid "Protocol" msgstr "协议" -#: assets/models/asset.py:77 assets/templates/assets/asset_detail.html:101 +#: assets/models/asset.py:77 assets/templates/assets/asset_detail.html:105 #: assets/templates/assets/user_asset_list.html:154 msgid "Platform" msgstr "系统平台" #: assets/models/asset.py:84 assets/models/cmd_filter.py:21 -#: assets/models/domain.py:52 assets/models/label.py:21 -#: assets/templates/assets/asset_detail.html:109 +#: assets/models/domain.py:54 assets/models/label.py:22 +#: assets/templates/assets/asset_detail.html:113 #: assets/templates/assets/user_asset_list.html:158 msgid "Is active" msgstr "激活" @@ -311,19 +312,19 @@ msgstr "激活" msgid "Public IP" msgstr "公网IP" -#: assets/models/asset.py:92 assets/templates/assets/asset_detail.html:117 +#: assets/models/asset.py:92 assets/templates/assets/asset_detail.html:121 msgid "Asset number" msgstr "资产编号" -#: assets/models/asset.py:96 assets/templates/assets/asset_detail.html:81 +#: assets/models/asset.py:96 assets/templates/assets/asset_detail.html:85 msgid "Vendor" msgstr "制造商" -#: assets/models/asset.py:98 assets/templates/assets/asset_detail.html:85 +#: assets/models/asset.py:98 assets/templates/assets/asset_detail.html:89 msgid "Model" msgstr "型号" -#: assets/models/asset.py:100 assets/templates/assets/asset_detail.html:113 +#: assets/models/asset.py:100 assets/templates/assets/asset_detail.html:117 msgid "Serial number" msgstr "序列号" @@ -343,7 +344,7 @@ msgstr "CPU核数" msgid "CPU vcpus" msgstr "CPU总数" -#: assets/models/asset.py:108 assets/templates/assets/asset_detail.html:93 +#: assets/models/asset.py:108 assets/templates/assets/asset_detail.html:97 msgid "Memory" msgstr "内存" @@ -355,7 +356,7 @@ msgstr "硬盘大小" msgid "Disk info" msgstr "硬盘信息" -#: assets/models/asset.py:115 assets/templates/assets/asset_detail.html:105 +#: assets/models/asset.py:115 assets/templates/assets/asset_detail.html:109 #: assets/templates/assets/user_asset_list.html:155 msgid "OS" msgstr "操作系统" @@ -373,7 +374,7 @@ msgid "Hostname raw" msgstr "主机名原始" #: assets/models/asset.py:125 assets/templates/assets/asset_create.html:34 -#: assets/templates/assets/asset_detail.html:224 +#: assets/templates/assets/asset_detail.html:228 #: assets/templates/assets/asset_update.html:39 templates/_nav.html:26 msgid "Labels" msgstr "标签管理" @@ -382,7 +383,7 @@ msgstr "标签管理" #: assets/models/cluster.py:28 assets/models/cmd_filter.py:25 #: assets/models/cmd_filter.py:55 assets/models/group.py:21 #: assets/templates/assets/admin_user_detail.html:68 -#: assets/templates/assets/asset_detail.html:121 +#: assets/templates/assets/asset_detail.html:125 #: assets/templates/assets/cmd_filter_detail.html:77 #: assets/templates/assets/domain_detail.html:72 #: assets/templates/assets/system_user_detail.html:100 @@ -394,8 +395,8 @@ msgid "Created by" msgstr "创建者" #: assets/models/asset.py:130 assets/models/cluster.py:26 -#: assets/models/domain.py:21 assets/models/group.py:22 -#: assets/models/label.py:24 assets/templates/assets/admin_user_detail.html:64 +#: assets/models/domain.py:23 assets/models/group.py:22 +#: assets/models/label.py:25 assets/templates/assets/admin_user_detail.html:64 #: assets/templates/assets/cmd_filter_detail.html:69 #: assets/templates/assets/domain_detail.html:68 #: assets/templates/assets/system_user_detail.html:96 @@ -413,11 +414,11 @@ msgstr "创建日期" #: assets/models/asset.py:132 assets/models/base.py:27 #: assets/models/cluster.py:29 assets/models/cmd_filter.py:22 -#: assets/models/cmd_filter.py:52 assets/models/domain.py:19 -#: assets/models/domain.py:51 assets/models/group.py:23 -#: assets/models/label.py:22 assets/templates/assets/admin_user_detail.html:72 +#: assets/models/cmd_filter.py:52 assets/models/domain.py:21 +#: assets/models/domain.py:53 assets/models/group.py:23 +#: assets/models/label.py:23 assets/templates/assets/admin_user_detail.html:72 #: assets/templates/assets/admin_user_list.html:32 -#: assets/templates/assets/asset_detail.html:129 +#: assets/templates/assets/asset_detail.html:133 #: assets/templates/assets/cmd_filter_detail.html:65 #: assets/templates/assets/cmd_filter_list.html:27 #: assets/templates/assets/cmd_filter_rule_list.html:62 @@ -487,7 +488,7 @@ msgid "Default" msgstr "默认" #: assets/models/cluster.py:36 assets/models/label.py:14 -#: users/models/user.py:422 +#: users/models/user.py:420 msgid "System" msgstr "系统" @@ -516,7 +517,7 @@ msgid "Regex" msgstr "正则表达式" #: assets/models/cmd_filter.py:36 ops/models/command.py:19 -#: ops/templates/ops/command_execution_list.html:46 terminal/models.py:144 +#: ops/templates/ops/command_execution_list.html:60 terminal/models.py:144 #: terminal/templates/terminal/command_list.html:55 #: terminal/templates/terminal/command_list.html:71 #: terminal/templates/terminal/session_detail.html:48 @@ -591,7 +592,7 @@ msgstr "每行一个命令" msgid "Action" msgstr "动作" -#: assets/models/domain.py:59 assets/templates/assets/domain_detail.html:21 +#: assets/models/domain.py:61 assets/templates/assets/domain_detail.html:21 #: assets/templates/assets/domain_detail.html:64 #: assets/templates/assets/domain_gateway_list.html:21 #: assets/templates/assets/domain_list.html:27 @@ -613,8 +614,8 @@ msgstr "默认资产组" #: audits/templates/audits/operate_log_list.html:66 #: audits/templates/audits/password_change_log_list.html:33 #: audits/templates/audits/password_change_log_list.html:50 -#: ops/templates/ops/command_execution_list.html:22 -#: ops/templates/ops/command_execution_list.html:45 perms/forms.py:28 +#: ops/templates/ops/command_execution_list.html:34 +#: ops/templates/ops/command_execution_list.html:59 perms/forms.py:28 #: perms/models.py:29 #: perms/templates/perms/asset_permission_create_update.html:36 #: perms/templates/perms/asset_permission_list.html:54 @@ -623,10 +624,10 @@ msgstr "默认资产组" #: terminal/templates/terminal/command_list.html:32 #: terminal/templates/terminal/command_list.html:72 #: terminal/templates/terminal/session_list.html:33 -#: terminal/templates/terminal/session_list.html:71 users/forms.py:310 -#: users/models/user.py:33 users/models/user.py:410 +#: terminal/templates/terminal/session_list.html:71 users/forms.py:314 +#: users/models/user.py:33 users/models/user.py:408 #: users/templates/users/user_group_detail.html:78 -#: users/templates/users/user_group_list.html:13 users/views/user.py:384 +#: users/templates/users/user_group_list.html:13 users/views/user.py:386 #: xpack/plugins/orgs/forms.py:26 #: xpack/plugins/orgs/templates/orgs/org_detail.html:113 #: xpack/plugins/orgs/templates/orgs/org_list.html:14 @@ -638,7 +639,7 @@ msgstr "用户" msgid "Value" msgstr "值" -#: assets/models/label.py:20 +#: assets/models/label.py:21 msgid "Category" msgstr "分类" @@ -899,9 +900,9 @@ msgstr "其它" #: common/templates/common/replay_storage_create.html:139 #: common/templates/common/security_setting.html:70 #: common/templates/common/terminal_setting.html:68 -#: perms/templates/perms/asset_permission_create_update.html:69 +#: perms/templates/perms/asset_permission_create_update.html:75 #: terminal/templates/terminal/terminal_update.html:47 -#: users/templates/users/_user.html:46 +#: users/templates/users/_user.html:50 #: users/templates/users/user_bulk_update.html:23 #: users/templates/users/user_detail.html:176 #: users/templates/users/user_password_update.html:71 @@ -932,11 +933,11 @@ msgstr "重置" #: common/templates/common/replay_storage_create.html:140 #: common/templates/common/security_setting.html:71 #: common/templates/common/terminal_setting.html:70 -#: perms/templates/perms/asset_permission_create_update.html:70 +#: perms/templates/perms/asset_permission_create_update.html:76 #: terminal/templates/terminal/command_list.html:103 #: terminal/templates/terminal/session_list.html:127 #: terminal/templates/terminal/terminal_update.html:48 -#: users/templates/users/_user.html:47 +#: users/templates/users/_user.html:51 #: users/templates/users/forgot_password.html:45 #: users/templates/users/user_bulk_update.html:24 #: users/templates/users/user_list.html:45 @@ -999,12 +1000,12 @@ msgid "Quick update" msgstr "快速更新" #: assets/templates/assets/admin_user_assets.html:72 -#: assets/templates/assets/asset_detail.html:172 +#: assets/templates/assets/asset_detail.html:176 msgid "Test connective" msgstr "测试可连接性" #: assets/templates/assets/admin_user_assets.html:75 -#: assets/templates/assets/asset_detail.html:175 +#: assets/templates/assets/asset_detail.html:179 #: assets/templates/assets/system_user_asset.html:75 #: assets/templates/assets/system_user_asset.html:161 #: assets/templates/assets/system_user_detail.html:151 @@ -1087,7 +1088,7 @@ msgid "Select nodes" msgstr "选择节点" #: assets/templates/assets/admin_user_detail.html:100 -#: assets/templates/assets/asset_detail.html:204 +#: assets/templates/assets/asset_detail.html:208 #: assets/templates/assets/asset_list.html:633 #: assets/templates/assets/cmd_filter_detail.html:106 #: assets/templates/assets/system_user_asset.html:112 @@ -1153,28 +1154,28 @@ msgstr "选择需要修改属性" msgid "Select all" msgstr "全选" -#: assets/templates/assets/asset_detail.html:89 +#: assets/templates/assets/asset_detail.html:93 msgid "CPU" msgstr "CPU" -#: assets/templates/assets/asset_detail.html:97 +#: assets/templates/assets/asset_detail.html:101 msgid "Disk" msgstr "硬盘" -#: assets/templates/assets/asset_detail.html:125 +#: assets/templates/assets/asset_detail.html:129 #: users/templates/users/user_detail.html:115 #: users/templates/users/user_profile.html:104 msgid "Date joined" msgstr "创建日期" -#: assets/templates/assets/asset_detail.html:141 +#: assets/templates/assets/asset_detail.html:145 #: terminal/templates/terminal/session_detail.html:81 #: users/templates/users/user_detail.html:138 #: users/templates/users/user_profile.html:146 msgid "Quick modify" msgstr "快速修改" -#: assets/templates/assets/asset_detail.html:147 +#: assets/templates/assets/asset_detail.html:151 #: assets/templates/assets/asset_list.html:95 #: assets/templates/assets/user_asset_list.html:47 perms/models.py:34 #: perms/models.py:82 @@ -1191,15 +1192,15 @@ msgstr "快速修改" msgid "Active" msgstr "激活中" -#: assets/templates/assets/asset_detail.html:164 +#: assets/templates/assets/asset_detail.html:168 msgid "Refresh hardware" msgstr "更新硬件信息" -#: assets/templates/assets/asset_detail.html:167 +#: assets/templates/assets/asset_detail.html:171 msgid "Refresh" msgstr "刷新" -#: assets/templates/assets/asset_detail.html:304 +#: assets/templates/assets/asset_detail.html:308 #: users/templates/users/user_detail.html:305 #: users/templates/users/user_detail.html:332 msgid "Update successfully!" @@ -1680,7 +1681,7 @@ msgid "Filename" msgstr "文件名" #: audits/models.py:22 audits/templates/audits/ftp_log_list.html:76 -#: ops/templates/ops/command_execution_list.html:49 +#: ops/templates/ops/command_execution_list.html:64 #: ops/templates/ops/task_list.html:39 users/models/authentication.py:73 #: users/templates/users/user_detail.html:456 xpack/plugins/cloud/api.py:61 msgid "Success" @@ -1706,7 +1707,7 @@ msgstr "修改者" #: audits/templates/audits/ftp_log_list.html:77 #: ops/templates/ops/adhoc_history.html:52 #: ops/templates/ops/adhoc_history_detail.html:61 -#: ops/templates/ops/command_execution_list.html:50 +#: ops/templates/ops/command_execution_list.html:65 #: ops/templates/ops/task_history.html:58 perms/models.py:35 #: perms/templates/perms/asset_permission_detail.html:86 terminal/models.py:148 #: terminal/templates/terminal/session_list.html:78 @@ -1722,8 +1723,8 @@ msgstr "选择用户" #: audits/templates/audits/login_log_list.html:40 #: audits/templates/audits/operate_log_list.html:58 #: audits/templates/audits/password_change_log_list.html:42 -#: ops/templates/ops/command_execution_list.html:30 -#: ops/templates/ops/command_execution_list.html:35 +#: ops/templates/ops/command_execution_list.html:42 +#: ops/templates/ops/command_execution_list.html:47 #: ops/templates/ops/task_list.html:21 ops/templates/ops/task_list.html:26 #: templates/_base_list.html:43 templates/_header_bar.html:8 #: terminal/templates/terminal/command_list.html:60 @@ -1751,7 +1752,7 @@ msgstr "Agent" msgid "City" msgstr "城市" -#: audits/templates/audits/login_log_list.html:54 users/forms.py:168 +#: audits/templates/audits/login_log_list.html:54 users/forms.py:172 #: users/models/authentication.py:82 users/models/user.py:75 #: users/templates/users/first_login.html:45 msgid "MFA" @@ -1785,23 +1786,23 @@ msgid "Datetime" msgstr "日期" #: audits/views.py:68 audits/views.py:112 audits/views.py:148 -#: audits/views.py:192 audits/views.py:223 templates/_nav.html:71 +#: audits/views.py:192 audits/views.py:223 templates/_nav.html:72 msgid "Audits" msgstr "日志审计" -#: audits/views.py:69 templates/_nav.html:75 +#: audits/views.py:69 templates/_nav.html:76 msgid "FTP log" msgstr "FTP日志" -#: audits/views.py:113 templates/_nav.html:76 +#: audits/views.py:113 templates/_nav.html:77 msgid "Operate log" msgstr "操作日志" -#: audits/views.py:149 templates/_nav.html:77 +#: audits/views.py:149 templates/_nav.html:78 msgid "Password change log" msgstr "改密日志" -#: audits/views.py:193 templates/_nav.html:74 +#: audits/views.py:193 templates/_nav.html:75 msgid "Login log" msgstr "登录日志" @@ -1958,64 +1959,76 @@ msgid "Enable LDAP auth" msgstr "启用LDAP认证" #: common/forms.py:138 +msgid "All" +msgstr "全部" + +#: common/forms.py:139 +msgid "Auto" +msgstr "自动" + +#: common/forms.py:144 msgid "Password auth" msgstr "密码认证" -#: common/forms.py:141 +#: common/forms.py:147 msgid "Public key auth" msgstr "密钥认证" -#: common/forms.py:144 +#: common/forms.py:150 msgid "Heartbeat interval" msgstr "心跳间隔" -#: common/forms.py:144 ops/models/adhoc.py:38 +#: common/forms.py:150 ops/models/adhoc.py:38 msgid "Units: seconds" msgstr "单位: 秒" -#: common/forms.py:147 +#: common/forms.py:153 msgid "List sort by" msgstr "资产列表排序" -#: common/forms.py:159 +#: common/forms.py:156 +msgid "List page size" +msgstr "资产列表页面大小" + +#: common/forms.py:168 msgid "MFA Secondary certification" msgstr "MFA 二次认证" -#: common/forms.py:161 +#: common/forms.py:170 msgid "" "After opening, the user login must use MFA secondary authentication (valid " "for all users, including administrators)" msgstr "开启后,用户登录必须使用MFA二次认证(对所有用户有效,包括管理员)" -#: common/forms.py:168 +#: common/forms.py:177 msgid "Limit the number of login failures" msgstr "限制登录失败次数" -#: common/forms.py:173 +#: common/forms.py:182 msgid "No logon interval" msgstr "禁止登录时间间隔" -#: common/forms.py:175 +#: common/forms.py:184 msgid "" "Tip: (unit/minute) if the user has failed to log in for a limited number of " "times, no login is allowed during this time interval." msgstr "" "提示:(单位:分)当用户登录失败次数达到限制后,那么在此时间间隔内禁止登录" -#: common/forms.py:182 +#: common/forms.py:191 msgid "Connection max idle time" msgstr "SSH最大空闲时间" -#: common/forms.py:184 +#: common/forms.py:193 msgid "" "If idle time more than it, disconnect connection(only ssh now) Unit: minute" msgstr "提示:(单位:分)如果超过该配置没有操作,连接会被断开(仅ssh)" -#: common/forms.py:190 +#: common/forms.py:199 msgid "Password expiration time" msgstr "密码过期时间" -#: common/forms.py:193 +#: common/forms.py:202 msgid "" "Tip: (unit: day) If the user does not update the password during the time, " "the user password will expire failure;The password expiration reminder mail " @@ -2025,45 +2038,45 @@ msgstr "" "提示:(单位:天)如果用户在此期间没有更新密码,用户密码将过期失效; 密码过期" "提醒邮件将在密码过期前5天内由系统(每天)自动发送给用户" -#: common/forms.py:202 +#: common/forms.py:211 msgid "Password minimum length" msgstr "密码最小长度 " -#: common/forms.py:208 +#: common/forms.py:217 msgid "Must contain capital letters" msgstr "必须包含大写字母" -#: common/forms.py:210 +#: common/forms.py:219 msgid "" "After opening, the user password changes and resets must contain uppercase " "letters" msgstr "开启后,用户密码修改、重置必须包含大写字母" -#: common/forms.py:216 +#: common/forms.py:225 msgid "Must contain lowercase letters" msgstr "必须包含小写字母" -#: common/forms.py:217 +#: common/forms.py:226 msgid "" "After opening, the user password changes and resets must contain lowercase " "letters" msgstr "开启后,用户密码修改、重置必须包含小写字母" -#: common/forms.py:223 +#: common/forms.py:232 msgid "Must contain numeric characters" msgstr "必须包含数字字符" -#: common/forms.py:224 +#: common/forms.py:233 msgid "" "After opening, the user password changes and resets must contain numeric " "characters" msgstr "开启后,用户密码修改、重置必须包含数字字符" -#: common/forms.py:230 +#: common/forms.py:239 msgid "Must contain special characters" msgstr "必须包含特殊字符" -#: common/forms.py:231 +#: common/forms.py:240 msgid "" "After opening, the user password changes and resets must contain special " "characters" @@ -2126,7 +2139,7 @@ msgstr "安全设置" #: common/templates/common/command_storage_create.html:50 #: ops/models/adhoc.py:161 ops/templates/ops/adhoc_detail.html:53 -#: ops/templates/ops/command_execution_list.html:44 +#: ops/templates/ops/command_execution_list.html:58 #: ops/templates/ops/task_adhoc.html:59 ops/templates/ops/task_list.html:38 msgid "Hosts" msgstr "主机" @@ -2227,7 +2240,7 @@ msgstr "不能包含特殊字符" #: common/views.py:18 common/views.py:44 common/views.py:70 common/views.py:99 #: common/views.py:126 common/views.py:138 common/views.py:151 -#: templates/_nav.html:106 +#: templates/_nav.html:107 msgid "Settings" msgstr "系统设置" @@ -2339,15 +2352,15 @@ msgstr "汇总" msgid "Result" msgstr "结果" -#: ops/models/command.py:52 +#: ops/models/command.py:55 msgid "Task start" msgstr "任务开始" -#: ops/models/command.py:64 +#: ops/models/command.py:67 msgid "Command `{}` is forbidden ........" msgstr "命令 `{}` 不允许被执行 ......." -#: ops/models/command.py:70 +#: ops/models/command.py:73 msgid "Task end" msgstr "任务结束" @@ -2362,7 +2375,9 @@ msgid "Version run history" msgstr "执行历史" #: ops/templates/ops/adhoc_detail.html:72 -#: ops/templates/ops/adhoc_detail.html:77 ops/templates/ops/task_adhoc.html:61 +#: ops/templates/ops/adhoc_detail.html:77 +#: ops/templates/ops/command_execution_list.html:61 +#: ops/templates/ops/task_adhoc.html:61 msgid "Run as" msgstr "运行用户" @@ -2424,7 +2439,7 @@ msgid "Run history detail" msgstr "执行历史详情" #: ops/templates/ops/adhoc_history_detail.html:22 -#: ops/templates/ops/command_execution_list.html:47 +#: ops/templates/ops/command_execution_list.html:62 #: terminal/backends/command/models.py:16 msgid "Output" msgstr "输出" @@ -2450,24 +2465,20 @@ msgstr "没有资产" msgid "Success assets" msgstr "成功资产" -#: ops/templates/ops/command_execution_create.html:67 +#: ops/templates/ops/command_execution_create.html:71 #: terminal/templates/terminal/session_detail.html:91 #: terminal/templates/terminal/session_detail.html:100 msgid "Go" msgstr "" -#: ops/templates/ops/command_execution_create.html:244 +#: ops/templates/ops/command_execution_create.html:253 msgid "Pending" msgstr "" -#: ops/templates/ops/command_execution_list.html:48 +#: ops/templates/ops/command_execution_list.html:63 msgid "Finished" msgstr "结束" -#: ops/templates/ops/command_execution_list.html:51 -msgid "Date finished" -msgstr "结束日期" - #: ops/templates/ops/task_adhoc.html:19 ops/templates/ops/task_detail.html:20 #: ops/templates/ops/task_history.html:19 ops/views/adhoc.py:72 msgid "Task detail" @@ -2535,7 +2546,8 @@ msgstr "任务列表" msgid "Task run history" msgstr "执行历史" -#: ops/views/command.py:68 templates/_nav.html:78 templates/_nav_user.html:9 +#: ops/views/command.py:68 templates/_nav.html:67 templates/_nav.html:79 +#: templates/_nav_user.html:9 msgid "Command execution" msgstr "命令执行" @@ -2546,7 +2558,7 @@ msgstr "组织管理" #: perms/forms.py:31 perms/models.py:30 perms/models.py:80 #: perms/templates/perms/asset_permission_list.html:55 #: perms/templates/perms/asset_permission_list.html:145 templates/_nav.html:14 -#: users/forms.py:280 users/models/group.py:26 users/models/user.py:59 +#: users/forms.py:284 users/models/group.py:26 users/models/user.py:59 #: users/templates/users/_select_user_modal.html:16 #: users/templates/users/user_detail.html:211 #: users/templates/users/user_list.html:26 @@ -2688,14 +2700,14 @@ msgstr "文档" msgid "Commercial support" msgstr "商业支持" -#: templates/_header_bar.html:89 templates/_nav_user.html:14 users/forms.py:147 -#: users/templates/users/_user.html:39 +#: templates/_header_bar.html:89 templates/_nav_user.html:14 users/forms.py:151 +#: users/templates/users/_user.html:43 #: users/templates/users/first_login.html:39 #: users/templates/users/user_password_update.html:40 #: users/templates/users/user_profile.html:17 #: users/templates/users/user_profile_update.html:37 #: users/templates/users/user_profile_update.html:57 -#: users/templates/users/user_pubkey_update.html:37 users/views/user.py:366 +#: users/templates/users/user_pubkey_update.html:37 users/views/user.py:368 msgid "Profile" msgstr "个人信息" @@ -2783,8 +2795,8 @@ msgstr "" #: templates/_nav.html:10 users/views/group.py:28 users/views/group.py:44 #: users/views/group.py:60 users/views/group.py:76 users/views/group.py:92 #: users/views/login.py:346 users/views/user.py:68 users/views/user.py:83 -#: users/views/user.py:111 users/views/user.py:192 users/views/user.py:353 -#: users/views/user.py:403 users/views/user.py:437 +#: users/views/user.py:113 users/views/user.py:194 users/views/user.py:355 +#: users/views/user.py:405 users/views/user.py:439 msgid "Users" msgstr "用户管理" @@ -2831,15 +2843,15 @@ msgstr "终端管理" msgid "Job Center" msgstr "作业中心" -#: templates/_nav.html:84 +#: templates/_nav.html:85 msgid "XPack" msgstr "" -#: templates/_nav.html:92 xpack/plugins/cloud/views.py:26 +#: templates/_nav.html:93 xpack/plugins/cloud/views.py:26 msgid "Account list" msgstr "账户列表" -#: templates/_nav.html:93 +#: templates/_nav.html:94 msgid "Sync instance" msgstr "同步实例" @@ -3309,11 +3321,11 @@ msgstr "MFA 验证码" msgid "Role" msgstr "角色" -#: users/forms.py:55 users/forms.py:226 +#: users/forms.py:55 users/forms.py:230 msgid "ssh public key" msgstr "ssh公钥" -#: users/forms.py:56 users/forms.py:227 +#: users/forms.py:56 users/forms.py:231 msgid "ssh-rsa AAAA..." msgstr "" @@ -3325,15 +3337,15 @@ msgstr "复制用户公钥到这里" msgid "Join user groups" msgstr "添加到用户组" -#: users/forms.py:110 users/forms.py:241 +#: users/forms.py:110 users/forms.py:245 msgid "Public key should not be the same as your old one." msgstr "不能和原来的密钥相同" -#: users/forms.py:114 users/forms.py:245 users/serializers/v1.py:51 +#: users/forms.py:114 users/forms.py:249 users/serializers/v1.py:51 msgid "Not a valid ssh public key" msgstr "ssh密钥不合法" -#: users/forms.py:153 +#: users/forms.py:157 msgid "" "Tip: when enabled, you will enter the MFA binding process the next time you " "log in. you can also directly bind in \"personal information -> quick " @@ -3342,11 +3354,11 @@ msgstr "" "提示:启用之后您将会在下次登录时进入MFA绑定流程;您也可以在(个人信息->快速修" "改->更改MFA设置)中直接绑定!" -#: users/forms.py:163 +#: users/forms.py:167 msgid "* Enable MFA authentication to make the account more secure." msgstr "* 启用MFA认证,使账号更加安全." -#: users/forms.py:173 +#: users/forms.py:177 msgid "" "In order to protect you and your company, please keep your account, password " "and key sensitive information properly. (for example: setting complex " @@ -3355,41 +3367,41 @@ msgstr "" "为了保护您和公司的安全,请妥善保管您的账户、密码和密钥等重要敏感信息;(如:" "设置复杂密码,启用MFA认证)" -#: users/forms.py:180 users/templates/users/first_login.html:48 +#: users/forms.py:184 users/templates/users/first_login.html:48 #: users/templates/users/first_login.html:107 #: users/templates/users/first_login.html:130 msgid "Finish" msgstr "完成" -#: users/forms.py:186 +#: users/forms.py:190 msgid "Old password" msgstr "原来密码" -#: users/forms.py:191 +#: users/forms.py:195 msgid "New password" msgstr "新密码" -#: users/forms.py:196 +#: users/forms.py:200 msgid "Confirm password" msgstr "确认密码" -#: users/forms.py:206 +#: users/forms.py:210 msgid "Old password error" msgstr "原来密码错误" -#: users/forms.py:214 +#: users/forms.py:218 msgid "Password does not match" msgstr "密码不一致" -#: users/forms.py:224 +#: users/forms.py:228 msgid "Automatically configure and download the SSH key" msgstr "自动配置并下载SSH密钥" -#: users/forms.py:228 +#: users/forms.py:232 msgid "Paste your id_rsa.pub here." msgstr "复制你的公钥到这里" -#: users/forms.py:256 users/models/user.py:83 +#: users/forms.py:260 users/models/user.py:83 #: users/templates/users/first_login.html:42 #: users/templates/users/user_password_update.html:46 #: users/templates/users/user_profile.html:68 @@ -3398,7 +3410,7 @@ msgstr "复制你的公钥到这里" msgid "Public key" msgstr "ssh公钥" -#: users/forms.py:263 users/forms.py:268 users/forms.py:314 +#: users/forms.py:267 users/forms.py:272 users/forms.py:318 #: xpack/plugins/orgs/forms.py:30 msgid "Select users" msgstr "选择用户" @@ -3456,7 +3468,7 @@ msgstr "Agent" msgid "Date login" msgstr "登录日期" -#: users/models/user.py:32 users/models/user.py:418 +#: users/models/user.py:32 users/models/user.py:416 msgid "Administrator" msgstr "管理员" @@ -3502,7 +3514,7 @@ msgstr "用户来源" msgid "Date password last updated" msgstr "最后更新密码日期" -#: users/models/user.py:421 +#: users/models/user.py:419 msgid "Administrator is the super user of system" msgstr "Administrator是初始的超级管理员" @@ -3790,7 +3802,7 @@ msgid "Reset link will be generated and sent to the user. " msgstr "生成重置密码连接,通过邮件发送给用户" #: users/templates/users/user_detail.html:19 -#: users/templates/users/user_granted_asset.html:18 users/views/user.py:193 +#: users/templates/users/user_granted_asset.html:18 users/views/user.py:195 msgid "User detail" msgstr "用户详情" @@ -3985,8 +3997,8 @@ msgstr "安装完成后点击下一步进入绑定页面(如已安装,直接 msgid "Administrator Settings force MFA login" msgstr "管理员设置强制使用MFA登录" -#: users/templates/users/user_profile.html:120 users/views/user.py:229 -#: users/views/user.py:283 +#: users/templates/users/user_profile.html:120 users/views/user.py:231 +#: users/views/user.py:285 msgid "User groups" msgstr "用户组" @@ -4036,7 +4048,7 @@ msgid "" "corresponding private key." msgstr "新的公钥已设置成功,请下载对应的私钥" -#: users/templates/users/user_update.html:4 users/views/user.py:112 +#: users/templates/users/user_update.html:4 users/views/user.py:114 msgid "Update user" msgstr "更新用户" @@ -4243,7 +4255,7 @@ msgstr "用户组授权资产" msgid "Please enable cookies and try again." msgstr "设置你的浏览器支持cookie" -#: users/views/login.py:191 users/views/user.py:524 users/views/user.py:549 +#: users/views/login.py:191 users/views/user.py:526 users/views/user.py:551 msgid "MFA code invalid, or ntp sync server time" msgstr "MFA验证码不正确,或者服务器端时间不对" @@ -4288,7 +4300,7 @@ msgstr "Token错误或失效" msgid "Password not same" msgstr "密码不一致" -#: users/views/login.py:308 users/views/user.py:126 users/views/user.py:420 +#: users/views/login.py:308 users/views/user.py:128 users/views/user.py:422 msgid "* Your password does not meet the requirements" msgstr "* 您的密码不符合要求" @@ -4296,51 +4308,51 @@ msgstr "* 您的密码不符合要求" msgid "First login" msgstr "首次登陆" -#: users/views/user.py:143 +#: users/views/user.py:145 msgid "Bulk update user success" msgstr "批量更新用户成功" -#: users/views/user.py:173 +#: users/views/user.py:175 msgid "Bulk update user" msgstr "批量更新用户" -#: users/views/user.py:258 +#: users/views/user.py:260 msgid "Invalid file." msgstr "文件不合法" -#: users/views/user.py:354 +#: users/views/user.py:356 msgid "User granted assets" msgstr "用户授权资产" -#: users/views/user.py:385 +#: users/views/user.py:387 msgid "Profile setting" msgstr "个人信息设置" -#: users/views/user.py:404 +#: users/views/user.py:406 msgid "Password update" msgstr "密码更新" -#: users/views/user.py:438 +#: users/views/user.py:440 msgid "Public key update" msgstr "密钥更新" -#: users/views/user.py:479 +#: users/views/user.py:481 msgid "Password invalid" msgstr "用户名或密码无效" -#: users/views/user.py:579 +#: users/views/user.py:581 msgid "MFA enable success" msgstr "MFA 绑定成功" -#: users/views/user.py:580 +#: users/views/user.py:582 msgid "MFA enable success, return login page" msgstr "MFA 绑定成功,返回到登录页面" -#: users/views/user.py:582 +#: users/views/user.py:584 msgid "MFA disable success" msgstr "MFA 解绑成功" -#: users/views/user.py:583 +#: users/views/user.py:585 msgid "MFA disable success, return login page" msgstr "MFA 解绑成功,返回登录页面" @@ -4474,6 +4486,50 @@ msgstr "AWS (中国)" msgid "AWS (International)" msgstr "AWS (国际)" +#: xpack/plugins/cloud/providers/base.py:76 +msgid "任务执行开始: {}\n" +msgstr "" + +#: xpack/plugins/cloud/providers/base.py:79 +msgid "检测账户有效性: {}" +msgstr "" + +#: xpack/plugins/cloud/providers/base.py:82 +msgid "账户无效!\n" +msgstr "" + +#: xpack/plugins/cloud/providers/base.py:86 +msgid "账户有效!\n" +msgstr "" + +#: xpack/plugins/cloud/providers/base.py:90 +msgid "" +"\n" +"任务执行结束!\n" +msgstr "" + +#: xpack/plugins/cloud/providers/base.py:91 +msgid "" +"查看任务详细信息路径: XPack -> 云管中心 -> 任务列表 -> 任务详情(点击任务名" +"称) -> 查看同步历史列表/实例列表\n" +msgstr "" + +#: xpack/plugins/cloud/providers/base.py:126 +msgid "同步实例列表: {}" +msgstr "" + +#: xpack/plugins/cloud/providers/base.py:135 +msgid "同步地域列表: {}\n" +msgstr "" + +#: xpack/plugins/cloud/providers/base.py:138 +msgid "地域: {}" +msgstr "" + +#: xpack/plugins/cloud/providers/base.py:148 +msgid "实例: {}, 地域: {}" +msgstr "" + #: xpack/plugins/cloud/providers/qcloud.py:14 msgid "Qcloud" msgstr "腾讯云" @@ -4605,6 +4661,9 @@ msgstr "创建组织" msgid "Update org" msgstr "更新组织" +#~ msgid "Date finished" +#~ msgstr "结束日期" + #, fuzzy #~| msgid "Audits" #~ msgid "Audit" From 985bd6fc8260349b79d07ca0c323a9986fe8be8b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=80=81=E5=B9=BF?= Date: Mon, 17 Dec 2018 11:44:43 +0800 Subject: [PATCH 2/2] Bugfix2 (#2183) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * [Bugfix] 修复错误 * [Bugfix] 修复一些bug --- apps/assets/tasks.py | 21 +++++++++++---------- apps/common/models.py | 2 ++ apps/ops/serializers.py | 2 +- apps/ops/urls/api_urls.py | 1 + apps/ops/views/adhoc.py | 7 +++++-- jms | 4 ++-- 6 files changed, 22 insertions(+), 15 deletions(-) diff --git a/apps/assets/tasks.py b/apps/assets/tasks.py index 4b4ec2867..846964d94 100644 --- a/apps/assets/tasks.py +++ b/apps/assets/tasks.py @@ -141,11 +141,11 @@ def update_assets_hardware_info_period(): logger.debug("Period task disabled, update assets hardware info pass") return - from ops.utils import update_or_create_ansible_task - from orgs.models import Organization - orgs = Organization.objects.all().values_list('id', flat=True) - orgs.append('') - task_name = _("Update assets hardware info period") + # from ops.utils import update_or_create_ansible_task + # from orgs.models import Organization + # orgs = Organization.objects.all().values_list('id', flat=True) + # orgs.append('') + # task_name = _("Update assets hardware info period") # for org_id in orgs: # org_id = str(org_id) # hostname_list = [ @@ -354,11 +354,12 @@ def test_system_user_connectability_period(): if PERIOD_TASK != "on": logger.debug("Period task disabled, test system user connectability pass") return - system_users = SystemUser.objects.all() - for system_user in system_users: - task_name = _("Test system user connectability period: {}").format(system_user) - # task_name = _("定期测试系统用户可连接性: {}".format(system_user)) - test_system_user_connectability_util(system_user, task_name) + # Todo: 暂时禁用定期测试 + # system_users = SystemUser.objects.all() + # for system_user in system_users: + # task_name = _("Test system user connectability period: {}").format(system_user) + # # task_name = _("定期测试系统用户可连接性: {}".format(system_user)) + # test_system_user_connectability_util(system_user, task_name) #### Push system user tasks #### diff --git a/apps/common/models.py b/apps/common/models.py index cc5ba8fc5..cb97b8988 100644 --- a/apps/common/models.py +++ b/apps/common/models.py @@ -45,6 +45,8 @@ class Setting(models.Model): def cleaned_value(self): try: value = self.value + if not isinstance(value, (str, bytes)): + return value if self.encrypted: value = signer.unsign(value) value = json.loads(value) diff --git a/apps/ops/serializers.py b/apps/ops/serializers.py index 13423486f..5eb16c5a8 100644 --- a/apps/ops/serializers.py +++ b/apps/ops/serializers.py @@ -53,7 +53,7 @@ class AdHocRunHistorySerializer(serializers.ModelSerializer): @staticmethod def get_stat(obj): return { - "total": len(obj.adhoc.hosts), + "total": obj.adhoc.hosts.count(), "success": len(obj.summary.get("contacted", [])), "failed": len(obj.summary.get("dark", [])), } diff --git a/apps/ops/urls/api_urls.py b/apps/ops/urls/api_urls.py index 615f53a8b..5f955540d 100644 --- a/apps/ops/urls/api_urls.py +++ b/apps/ops/urls/api_urls.py @@ -11,6 +11,7 @@ app_name = "ops" router = DefaultRouter() router.register(r'tasks', api.TaskViewSet, 'task') router.register(r'adhoc', api.AdHocViewSet, 'adhoc') +router.register(r'history', api.AdHocRunHistoryViewSet, 'history') router.register(r'command-executions', api.CommandExecutionViewSet, 'command-execution') urlpatterns = [ diff --git a/apps/ops/views/adhoc.py b/apps/ops/views/adhoc.py index 737047290..f3efbcc70 100644 --- a/apps/ops/views/adhoc.py +++ b/apps/ops/views/adhoc.py @@ -27,7 +27,7 @@ class TaskListView(AdminUserRequiredMixin, DatetimeSearchMixin, ListView): def get_queryset(self): queryset = super().get_queryset() - if current_org.is_real(): + if current_org: queryset = queryset.filter(created_by=current_org.id) else: queryset = queryset.filter(created_by='') @@ -62,8 +62,11 @@ class TaskDetailView(AdminUserRequiredMixin, DetailView): def get_queryset(self): queryset = super().get_queryset() - if current_org: + # Todo: 需要整理默认组织等东西 + if current_org.is_real(): queryset = queryset.filter(created_by=current_org.id) + else: + queryset = queryset.filter(created_by='') return queryset def get_context_data(self, **kwargs): diff --git a/jms b/jms index 1bb6bb56c..613de2fe3 100755 --- a/jms +++ b/jms @@ -26,8 +26,8 @@ LOG_DIR = os.path.join(BASE_DIR, 'logs') TMP_DIR = os.path.join(BASE_DIR, 'tmp') HTTP_HOST = CONFIG.HTTP_BIND_HOST or '127.0.0.1' HTTP_PORT = CONFIG.HTTP_LISTEN_PORT or 8080 -DEBUG = CONFIG.DEBUG -LOG_LEVEL = CONFIG.LOG_LEVEL +DEBUG = CONFIG.DEBUG or False +LOG_LEVEL = CONFIG.LOG_LEVEL or 'INFO' START_TIMEOUT = 40 WORKERS = 4