From 3f6d7637c37f221018ae14d96d65f76dd38ec726 Mon Sep 17 00:00:00 2001 From: Bai Date: Mon, 13 Apr 2020 13:40:08 +0800 Subject: [PATCH 01/22] =?UTF-8?q?[Update]=20=E6=9B=B4=E6=96=B0=E7=94=A8?= =?UTF-8?q?=E6=88=B7=E6=B7=BB=E5=8A=A0CAS=E6=9D=A5=E6=BA=90=E9=80=89?= =?UTF-8?q?=E9=A1=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/users/utils.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/apps/users/utils.py b/apps/users/utils.py index 831c6571f..0729115b6 100644 --- a/apps/users/utils.py +++ b/apps/users/utils.py @@ -330,4 +330,6 @@ def get_source_choices(): choices.append((User.SOURCE_OPENID, choices_all[User.SOURCE_OPENID])) if settings.AUTH_RADIUS: choices.append((User.SOURCE_RADIUS, choices_all[User.SOURCE_RADIUS])) + if settings.AUTH_CAS: + choices.append((User.SOURCE_CAS, choices_all[User.SOURCE_CAS])) return choices From 06fb502a1dea6db9b9a43cfaec15b80f9adea450 Mon Sep 17 00:00:00 2001 From: Bai Date: Mon, 13 Apr 2020 14:17:08 +0800 Subject: [PATCH 02/22] =?UTF-8?q?[Update]=20=E4=BF=AE=E6=94=B9=E6=96=87?= =?UTF-8?q?=E6=A1=88:=20=E5=8A=A0=E5=85=A5=20->=20=E7=9B=91=E6=8E=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/locale/zh/LC_MESSAGES/django.mo | Bin 89538 -> 89572 bytes apps/locale/zh/LC_MESSAGES/django.po | 10 +++++----- .../templates/terminal/session_list.html | 2 +- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/apps/locale/zh/LC_MESSAGES/django.mo b/apps/locale/zh/LC_MESSAGES/django.mo index a9ca58dc0f8a98989bdfd99931d97bef9e88ffed..0147921b680cdf2bdff1f9307efffbd77379233d 100644 GIT binary patch delta 25267 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 delta 25243 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ⅆ(w@&BmWoqmNXt8DA6N2 z^~ct|a-da@JayL6r?E{KN6kv&0yfTS`lTk-BmRZDuB3k$?>B3oU?U9)9PAP0Pq$vv zsQrpw&8aPpI?|9IMEUC^bvj6SHS*K(6a_~~e-Y2e*^E<|{AN;S>c6J_Vs+vuOuUq|G+)SG(l\n" "Language-Team: JumpServer team\n" @@ -3586,7 +3586,6 @@ msgid "Add node to this permission" msgstr "添加节点" #: perms/templates/perms/asset_permission_asset.html:105 -#: terminal/templates/terminal/session_list.html:149 #: users/templates/users/user_detail.html:226 #: xpack/plugins/change_auth_plan/templates/change_auth_plan/plan_asset_list.html:101 msgid "Join" @@ -5064,6 +5063,10 @@ msgstr "终断任务已发送,请等待" msgid "Terminate" msgstr "终断" +#: terminal/templates/terminal/session_list.html:149 +msgid "Monitoring" +msgstr "监控" + #: terminal/templates/terminal/session_list.html:179 msgid "Finish session success" msgstr "标记会话完成成功" @@ -7412,9 +7415,6 @@ msgstr "创建" #~ msgid "If set id, will use this id update user existed" #~ msgstr "如果设置了id,则会使用该行信息更新该id的用户" -#~ msgid "Monitor" -#~ msgstr "监控" - #~ msgid "Beijing Duizhan Tech, Inc." #~ msgstr "北京堆栈科技有限公司" diff --git a/apps/terminal/templates/terminal/session_list.html b/apps/terminal/templates/terminal/session_list.html index ff25a5fbb..6876ed448 100644 --- a/apps/terminal/templates/terminal/session_list.html +++ b/apps/terminal/templates/terminal/session_list.html @@ -146,7 +146,7 @@ function initTable() { .replace("sessionID", cellData) .replace("terminalID", rowData.terminal) } - var joinBtn = ' {% trans "Join" %}'; + var joinBtn = ' {% trans "Monitoring" %}'; joinBtn = joinBtn.replace("sessionID", rowData.id); if (rowData.can_join){ joinBtn = joinBtn.replace("disabled", "") From d5e1ca79088d427fd03e8b04cf68be5ef6b768a7 Mon Sep 17 00:00:00 2001 From: Bai Date: Mon, 13 Apr 2020 14:19:42 +0800 Subject: [PATCH 03/22] =?UTF-8?q?[Update]=20=E6=B7=BB=E5=8A=A0=E7=BF=BB?= =?UTF-8?q?=E8=AF=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/locale/zh/LC_MESSAGES/django.po | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/locale/zh/LC_MESSAGES/django.po b/apps/locale/zh/LC_MESSAGES/django.po index 8fe3f23a0..f1e5999e4 100644 --- a/apps/locale/zh/LC_MESSAGES/django.po +++ b/apps/locale/zh/LC_MESSAGES/django.po @@ -6425,7 +6425,7 @@ msgstr "选择管理员" #: xpack/plugins/cloud/forms.py:85 msgid "Tips: The asset information is always covered" -msgstr "" +msgstr "提示:资产信息总是被覆盖" #: xpack/plugins/cloud/meta.py:9 xpack/plugins/cloud/views.py:27 #: xpack/plugins/cloud/views.py:44 xpack/plugins/cloud/views.py:62 From 41cbd3e0f6ca2934bf60998dad8aff6f7e0c73dd Mon Sep 17 00:00:00 2001 From: Bai Date: Mon, 13 Apr 2020 18:21:49 +0800 Subject: [PATCH 04/22] =?UTF-8?q?[Update]=20=E4=BF=AE=E6=94=B9OpenID?= =?UTF-8?q?=E7=94=A8=E6=88=B7=E8=8E=B7=E5=8F=96username=E7=9A=84=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/authentication/backends/openid/models.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/authentication/backends/openid/models.py b/apps/authentication/backends/openid/models.py index ca50ee266..a945e8eb3 100644 --- a/apps/authentication/backends/openid/models.py +++ b/apps/authentication/backends/openid/models.py @@ -157,7 +157,7 @@ class Client(object): userinfo = self.get_userinfo(token=token_response['access_token']) with transaction.atomic(): name = userinfo.get('name', '') - username = userinfo.get('preferred_username', ''), + username = userinfo.get('preferred_username', '') email = userinfo.get('email', '') email = construct_user_email(username, email) From 4fb4a9f622cde8720071df04a510ebedd260bb6d Mon Sep 17 00:00:00 2001 From: Bai Date: Mon, 13 Apr 2020 19:21:53 +0800 Subject: [PATCH 05/22] =?UTF-8?q?[Update]=20=E6=9B=B4=E6=96=B0=E7=BF=BB?= =?UTF-8?q?=E8=AF=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/locale/zh/LC_MESSAGES/django.mo | Bin 89572 -> 89671 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/apps/locale/zh/LC_MESSAGES/django.mo b/apps/locale/zh/LC_MESSAGES/django.mo index 0147921b680cdf2bdff1f9307efffbd77379233d..838a92b2287e57a15c99e8d1e5b1e46ca3ad06c2 100644 GIT binary patch delta 21575 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 delta 21510 zcmZA937C)7|Nrs(GYk#JHnuUC%^2I*#=b9wu^Wti-;!i4MY?5QlWvp95}~XmOG&m= zN+?N6C|N2}QTb}2-}Ci3@Bejm{pY&o`#A4&pZlEmS?+s2GrGP<-if@tH`2dQIA^xU z*O8o_R|>n9^Sq(CJa0ie)p}mSFwg6WiMS9a<0On4?s>a#24+QgUi}9>?=*M7H`YdV+}!Ml>ZlK@qcN!aCR*&HR%#Y1!6jH6*P;4(2Xo*@n1sjCPoVHC z1ucD{CtPN6s3oq8g|Q>vhl4N?71tU$yu?4vhLsLEYaFwM9K9 zvHqGtUn&aXP%MIvVIBl$-zecS<^4%?yjdOVKCmDm%b zpY*&;9R4Kh--W{4RLJ~O+=W3{hjUNfVyuP>g;SlE%h#} zg~w3+M@)6?@}v5RL)H5gD3qm83$@g}P#q1$G@O7s8*5PmZ9%o)gW9qS7>B>04qM)* z-PuUSlEn2;{dPrdRey6dGLG;06m*)Ou?yL#0oJ23JZgS{TDtF0hwnNnvCuR(vMVa_(Wpe`&Sw3?15=^rbR*`*FR?0qi&~k2bKH^@MRkyd zk=P2AKzr2IbwwSnL8yL4qxOEH#nUi}cplcotv-d86uv_(U4^-Bj~k#e%tSqo4_Z7C z^*&f=u0bvRF4W9Vpc1%X@paT2^>4fn3(j+i#iF*vPo$vCYubh8r~%ucmaeDykX@gQ z>To)0;1^J5V>@c#eW;lqH9tf3ch=$`F_HKtl92Dk%y(N*3e`b5REO!PhD}h9(N z*{CI7hnm4=)al-jO86Y=g>(b8Qc(-seWg+Ll~F6*8uRJ-??pk6!*Gm3AH#|Klj=P(5Y7fa>rK zHNf{V8c$mM4XXWhGx8ZXP&}&R>Zn9op;jalwPJ%&2|R@AZxZ^N@f-^BIZVJ6sKc@k zmB0t68$LtL=v(uaUC+75)fYr1o`hQZTBrmvP-mtWY9&WwD$ZKO`fKmDQK7v#h6(rs z>amM@)-7>#rGYr9!9n z0II_ys2Q9=E!}n0fVWUHxQA+2bg>&a1*8G0MBYX9a|GYP6R7d#`_H+I z0`nzQW?NAS>_&BP6g7iSP&51r^>kdu1k4qhI&o*Lr00J+1+BnqsE!Y#4%5e|B|nQw;4-S+A6N{dUU2OaP>EEk6P+NA!>Mx-ZyM}5X zTIR0jF^geM>XT4sr#t!@;0X%hfl)J9f?CQAs1?|a8t@>h{fDTPIE`AFA5mNL7pkAg z10xR88^+fIYDAbH6pc0yn`tbQI zZo=1a682i<&dzDn1b#zp!9S=8y-wkonLW*UuwZhIkTcE0%@zc^_MYZ%|8n9hJx()XL;u z>jsKOZAA&xA&f_z;xyC??0!^2y(}JzN_?`#Gf?f9qx#>DNsR9uq@a#3q4wmOHMoUJ zDD<*B3;8jQI0?1%jWG#3qdJ^`;j@8Sxo1)Rtw2p=9p=DI7H>me8SkW^867}ncpNp* zWmHGrI=AHcQ0>!EXQ44_hOI5`Y}b3E5*&s~>E<` z+8TU^iNrTC2ga;-0~SXevIJCuZBYGWq0Yubs00>c3aiRe%G%BIn>sf!zB*zAq zX*4Qup)y~FN_+zb?`GmHY~|f>$t? zp8x9<)Zs1E4LLWu7e!IC8n&UnEk@w;m>ZX&I$ndC*%s8&?m?~8G1St3jq3kbRDuzk zT>HWp!}wl21!bI$=~x%*;(hoD>QH`(YIhEmz-7DsKa3*wHoN=t zU>?F^sQVM8p8tvzG=p^1W7rh6L>-VN^17mK?2Wo{7*@s6sP?N-iET9xp`NDGSPpNX z4rP%oZiUm##^`HFI#SRL{ZTKJiI{-PQA@cOtKd=8QvPY?-RhRKH0lhbnHi{`_d`)D zKC@M{+j7VD&%XZne0Mk{1IvizeC;l6Dr|9Fd8Gbxw8_3dc3Njw%~rN z?~bX&H=^?nNc` z9_Gc*Q0*>Y0lbQ8e;f6f{_9iF<5ui-H`8=fgGLs&MD2YiR0q9LiHt;T#VS-nucJ=; zF3iNESRPAnckh#yn2&gvIUe&9`%@`s=@+4vIvaK9R-=|`18N2bP%}G%1@ScM=lNAs zyU-gh!IG%{Dx&(ShPuBF7Q!Z0-x-;x@AaUdOa_``P)p~d5}J>ic{Xa`^{9?^qwf0< z3*#Bo3S2|InEpi_%H$nxubZIWusuwSQvHRDDz2-A)b#qTdPqkavU|GQ&=ZBRc{CR%+q z>TGO5ZN)BB;)hX>?!<{ycDsQKqT*tx1WKdMR4V#9JT)k2Y3o>n)~Jj#QE#{& zs1Ev|4$)v#M`KVOO+szSOmnGS-)QbYy;t^G{4Ht%*LJi1>gbMLhr~#Ux zGVO$#X+Mic*!791j%T6H%2HIvFJnb~9o5g*sD7`Zw&)&q#8UnqcjLpTL>@u7{qJ20 z8sG%B!HcLHEAMypjqx|)&ZvPOIN$~tfND1u)$w%HA$=A#p%+mT*@Rm1*HG>DqE_ld z^mQsvQc&hs?7}aohIgz!@}TRu0II$u>X4m3mTv%(iwGq2x_2ls4bX`s-KTq zp=Af{`QJo^Zrq8Q(Gl}2Od!6Fnn}Jx?$uccQ;ExA0(LM*V=>}qQG5IfmcoOm1kRf` z%)5tt_dG_w>oTf@x}hP~!k(xlU4%)v9QE$rhg#y#P#s@Hot>MQh$RoZ1RG*s;vqN! z-^J!w`91d-kM=37p<*XKj#=;Xhi3c)HPE~dc18(zgt znEj#q?AP=o_r@EJIy+CJ5?z6*=)X^)9EBTL2a6na|FqH$70<%lxF5B5AE5U7bJU@_ zX4h|{w&)(_!5kkm80N=6@LAMZn{~{s>~c)e^ZzM@W?Z<9X;}BT`-C$LHS=Y-Sl4kd z&N<;$;3phNJn$3G8-RyVGb{V4`xlk=*o$}xrsFSI7n4uAL)!<#pZ^C@&|!HDwUmoc zhv*g54ELKyQG5OcYNl5(0mqTq;bJX7VKuusgYMf~p{`=n& z3WcdygZhZH6SWejP%CjA)ltOfuA>sD`gDxOHmHt!pb{L86>$P8vDK)jWD{y)Z(IDq z=j^{S`GN`!@Pl2rhnhkD)9(4Mh((CoVk{0oB|Hh$;X+ix%TNPtxB5e<{*PPzH&*`( zYQ_IP&HAg5;|rd7%!}Hi);JO~Q3LNs?fEIxfL~%!yo{RpU#Nbf&baG^P}fVNmOdS| z5*<)0))R-~aGydY3dgZJ{)uW>=}Xs9ZPWnGQ8Vd`#c?od?vL2|JJ!tU+)M=i9tuY(5G8a%Y_yLvpZA`|bv+jCJ)P0>$ zTQm^w!wIOwr(jFWcCqiBqfm>A-%*FJ;@9r^%s?$+M{I&aQ5~&ECAM1#D z*H5ChcBnMqF|$l7w3F z%2*O>VR&y*TQCrH$j0JyoQYcMsLSpwl|Zd*Syca3%$lf`tACmG*Xe9Ug-&HAs)HdG zkH@lPJQLefzv+s8Vz7re1RuZZd2ix*Oo-r6eeYIs_m8Xs_szb>=RvN2bDg&x_WX$- z-FOZUaDDj=di#q)uU~lUaiQBy_qgP_<@UNL=A^zn>gh;Btw=po!p%`j-qm~vwSrSo z?Owu)xDjjM=U5tZ|K@(`ruY=JwCykfhoc(I!Kt_bAHdY#`Midsa0k}@!#(HMP>*Bi zwzB|gi%MHu1+~--%?#9;$il+t_q7XS?7|d_XPAr4Rpw^%EmTMEo5xUleafz%H?N^y zH2<@>;Q!oxrID5My|NUPNqy9zYLCjeulW#ai6>gT&|Gf5V(vuUf5<#(UbO2s&3k6v zJ4%H8FA*-VZ)Q0&4K<^hsDv7uZLtJ#4^-k~%^5hHcq!_>e^GlM^{4w_QWLuq_r+nj z3!CUPm-@@S;rf^>%yU>z*Z+1MW}%jRfH@pfi61eaxBC59hWhtWPt9eEYy9IL*UqR3 z4aM-!|8Z8~n+s3_EyEam$=r!LY#-Y7FU<4iWmL!4%{!Pt9C_E(mow8*Th;U~>#wEi zL`8Y*WeujA&szOTi$5?=p=S84#s6Xn;(YhqmZX?tiLWSwFc`@ znQg~1c*yF%MJ0N}{2!`a=wEk#A=FtYgE_D|s(mdii%l?`0BU8&TKu?Ap(GVEQ9n*! z!X!L~dNu!odY;R8q414WQ3KURb(n#Pm}T+fScZ5eYM^!IX1o4|dBE!ZV^%n2p0x%S zE&kc!Kg@`b8@K>!fKsR#C*uT6wd*U)ji@)_ZY+)mPzj#F@biD$6})^AuEQkM%qpOk zur_MOO|8C*#RE`#JKo|27OzJA40+2uVt#=-yjLv#4Rh%EkI3N$%4HTbOPXcPDySLP zwYUj3CC;$=c~-v|bv9nK`pu{by@8s@0rNA-_}&!?n&}=+#8oUFikk7m z=1i+!Wv)l{vjsKaZmU0R@llJr4KW_D( zqgLcHYUX$CdhXnAfc&WXqNv2;t-dlABTmolyM}G7L1(j{H5`drp>fy>m)rI4?D{XL z6}gRi4D;RRW?lt#%9~j{0F}Uai>I1_Zx=RL#ST=)AD}w^6yxx!U5|)z9Thc`%&Mp* zZ)kBxvyat}u=q)f=bHWsyYL!nDc>R)x{?Aa*Od|3*%b@nMJ}R+3sJ$C(jxnd0^H58_)ZAqC`%noSwfK_xt9ci5>G{tS z?FJ}>8n6uNO_hS0X}Z<7Kqb-!)p2)=$Cy)4iO(~)U>flWRKNe2Ir4|RWyE>V*M)Ty z)bVEXEmZycs05B#e9o?4GJnNnuHQwiU}6DhBh&|%p12$XRR2{9x_%p&%?sM|pFxEN z%0e|9W(~$;ed0-|z1?NkKQ_NaE&Ua&hIcHkP{_p%Q4<+uPB15wcVi7yA`Q(9RDxON2=htQSy_Y{a3$)#SInKL#12{fp~a_BE8w4_pc{X- z3wKZ*{EHeeUlA9_quNzAYoj`DYPK>vpblp@iyuMt_oz7y^+sKUtc>ryX&26!KcWuP zZHo&RbpyqlQMG{Zv$<0hY$)sQcc+l6wA6T7#cZd-5AM%Ay{r21r)vh~gfPu&_!`>uw3M$d5sLzy(%>C$RQgMTVe#vZF zA{74X^eh}k{1IwttHrv3TcBpx29;8Y6JNw4_$g}KD{(yk zdVGGOLIeC|=H~At;RH|(6HzNs9<`SZP;b7zsCG}I+C776myKEYD(XG*FX}g`9Hrfg z6~_eP>OKWM_nD}@9AQqt@bii4crj|A7tHmjf!;uE!TT0}W7lt4{IA7@%eb=3YSp6#0?}(c%{v6fuMbsW&xBB1BP=f0xKdS#kvx?auEYDwS3VNKn znZvBXL{uU(P={$LDxr5#GyV+qzPOHBnWRMb;;M^!$9J`OCZ-dwLA5(=*RLzq^Is~- z-B<&aX$RC2^)?4t{Rq^IAG7+Y=4|sBRKnTjtL9!*;wQ`tR{t~l$|#iVW>nm)W@ea! zP>D@OwV#6;XqDA(H}|6w{}{DmpILktm3Ypw&irPHvONE~kVJ(Zlgg-ps-b>tHnMmS zYQWK`nM^}%!E>m?yV>HSsCJi7iQGmdd>7SkOo}rBbv-S`cZHf%=*9-9v(Ulf{;0=m z9Jav)sE*E zypEdj9n`>i%e#c)Q1x|C^=*(XcW0LM4{huj(=_jG9@JS=DT4*E7tXs18SVH5b^apBy$eOM`AF4jq;tFPMvjuAFI$1mdHSl9rKNtP`saR_bzDITVyTv(c zxwsH&;6zl145sFnNC;@?pBd$ry5+-8y5JpX#~@{*`fADm3%zs2Mgx&7c?R zojnAb;4D=84^RW0GS6E5MT>t%eW3Zn;y+Qpf_Zh_eFadTD~kD6Q4Q5`9n_5O$DG*9 z>ieTs=3!I!DbeT5&8Yj|Gf$%0UodZ?CX}HHf?32}n-fm)G*jhq!w2{lKpP=5?>C5Hd|AD@E$4d@xvkK>Kj;BC|Z$5A)l#(2!p z*!>VmMy)_|)b&hM`~Ike=2*NLTM~bc^)RkUDEwbSbwgi!{S1ZY@hU2w($vMLQ3*ZV z%>9g*f(gVsF%3_nRwhStH`5e+j<_+7$CIcZJ`c2TGahJ8FlV>m`PXm1%c+ptu{C~( z`h!HF``ss_?x?-=Q8S&3TEgco-e~T|@L90a$?x~2OStzt{xy-0df zp(UDwweS<{hLNp8UL)*{TA^jw6|1!lh5rvnW@1m`AFvlT&u}ZV65A1fj6JYKn~>K4 z$C_JFiT>zQ&`f?s{beFYTlaf^39}+<#tqF3GYi$hVALD#A=C?J3~Hq&*!8E(nW%9V z*!9&oiP+yrL4RH^+s<`Z4YlWWP#v{K-I!_dP;)dYfhSOBU@GdxwHDR>Ez~ESk5Py8 zn)w%MLV4PU+xcE`3aY4xYFG#LxU_N&ydkKLCZYy-9(Aa;*!2%l_kV5vVE%!63L-kV z>nUapvk4Z~-~ZZKMgMRGr`=-T;svPZd9~HQW%2uV{esosL>=OL78mX422Mgvtg6LL z%yt<5|NrQz0u2UZQyhg_+HKecccGRvs*|fPWhSHQE20Kyg!f^4yPjp&`=a_EgE}jd zP+L3|{ii4_rcf6Pc6Mf6twL+S9-)Hd@0y79TcGq264VP>Gf9;;e{z5!FE*!l70_+gySga1APf?WlzI zVp}}Xh38*;Te52?{NMkjqy9)d1~t$#s2g6y7Pt+yHMdY5{)u|*a&&X;bEE2uSX>6x zzLLc?%qCXf&bLArvzIv#%W>m__%JR)CHfC4p`uxC;PR*eE29#wjha~t)WD0d8a|IH zcm(xf^#Hy5?)q3%{1mGHIaa>_bLl^EUS<_9p-%NyRELL91D-?@4nJCahVVK?@W=&Q z+a-qv2PfM#3FQq6wXYL;JIH7s7g>VOYzKl7?UOS`Q(C0)`1)G6^R-By==gdD-?M8q z>8%-cUG19wztk@B9nW_i>NW+Z+owk#rgTrYa@WA1XopszAwk~`siC34%nl6_n{ss} z-?jPXN4D1h2XX&E%CF=5!Nm@fV_&CMU%ydviti1?uh3ss@My0E2TB0cC1}l zk9sdIsjiG^8G1URL3f|s=0_CBi26xe9ZTL?s+&^*|lo)d(`TjE~BPz z@Kx8;(8M6rEhe%i^__#*Zk3`+QPNk3pnbPiq2fVyx8%^?U{ANWdQaPxvbcy57BgB! zzLyc#v>hZB}fABOl z+k!Q{o5XhKu1EgUTNHN<h#i*}=sDEuuzPZw~}%1LGsN z5RC~s^Y4#u1tSJl4Rs2Z4NUGlf!dz`nfE@sM$xQ7Y|Ia;x zg6Kh2L;ZqAgX$C=M*SEy;A^#wF)EnLKUk~?whpQjY7<-;lo~zF?&i~jS0IQT+%~o& zHE;0!4)=6qj*}^u##YQht*S~%8*u}#X;K8xKOPiV`zHOI9iXg@v?Cn Date: Tue, 14 Apr 2020 10:42:40 +0800 Subject: [PATCH 06/22] =?UTF-8?q?[Update]=20=E4=BF=AE=E5=A4=8D=E8=87=AA?= =?UTF-8?q?=E5=AE=9A=E4=B9=89=E5=B9=B3=E5=8F=B0=E5=88=97=E8=A1=A8=E5=9C=A8?= =?UTF-8?q?=E8=AF=A6=E6=83=85=E9=A1=B5=E5=88=A0=E9=99=A4=E5=A4=B1=E8=B4=A5?= =?UTF-8?q?=E7=9A=84bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/assets/templates/assets/platform_detail.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/assets/templates/assets/platform_detail.html b/apps/assets/templates/assets/platform_detail.html index e05de4232..89d364e0f 100644 --- a/apps/assets/templates/assets/platform_detail.html +++ b/apps/assets/templates/assets/platform_detail.html @@ -83,7 +83,7 @@ $(document).ready(function () { var $this = $(this); var name = "{{ object.name}}"; var uid = "{{ object.id }}"; - var the_url = '{% url "api-assets:asset-platform-detail" pk=DEFAULT_PK %}'.replace('{{ DEFAULT_PK }}', uid); + var the_url = '{% url "api-assets:platform-detail" pk=DEFAULT_PK %}'.replace('{{ DEFAULT_PK }}', uid); var redirect_url = "{% url 'assets:platform-list' %}"; objectDelete($this, name, the_url, redirect_url); }) From 48fa26a3bce48440df898cd71eb8be40eb86d84b Mon Sep 17 00:00:00 2001 From: Bai Date: Tue, 14 Apr 2020 11:03:12 +0800 Subject: [PATCH 07/22] =?UTF-8?q?[Update]=20=E4=BF=AE=E6=94=B9=E6=93=8D?= =?UTF-8?q?=E4=BD=9C=E6=97=A5=E5=BF=97=E6=90=9C=E7=B4=A2=E5=AD=97=E6=AE=B5?= =?UTF-8?q?=E6=B2=A1=E6=B8=85=E7=A9=BA=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/audits/templates/audits/operate_log_list.html | 2 +- apps/audits/views.py | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/apps/audits/templates/audits/operate_log_list.html b/apps/audits/templates/audits/operate_log_list.html index fdc03ce35..0dd8c8ff4 100644 --- a/apps/audits/templates/audits/operate_log_list.html +++ b/apps/audits/templates/audits/operate_log_list.html @@ -44,7 +44,7 @@ diff --git a/apps/audits/views.py b/apps/audits/views.py index 7bc6f6880..9e11ddabc 100644 --- a/apps/audits/views.py +++ b/apps/audits/views.py @@ -122,6 +122,7 @@ class OperateLogListView(PermissionsMixin, DatetimeSearchMixin, ListView): context = { 'user_list': current_org.get_org_members(), 'actions': self.actions_dict, + 'search_action': self.action, 'resource_type_list': get_resource_type_list(), 'date_from': self.date_from, 'date_to': self.date_to, From 63519ec076a5ab478def9cb052857576e170bf75 Mon Sep 17 00:00:00 2001 From: Bai Date: Tue, 14 Apr 2020 12:51:13 +0800 Subject: [PATCH 08/22] =?UTF-8?q?[Update]=20=E4=BF=AE=E6=94=B9=E5=91=BD?= =?UTF-8?q?=E4=BB=A4=E8=AE=B0=E5=BD=95/=E6=93=8D=E4=BD=9C/=E6=94=B9?= =?UTF-8?q?=E5=AF=86=E6=97=A5=E5=BF=97=E6=90=9C=E7=B4=A2=E5=AD=97=E6=AE=B5?= =?UTF-8?q?=E6=B2=A1=E6=B8=85=E7=A9=BA=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/audits/views.py | 6 +++--- apps/ops/templates/ops/command_execution_list.html | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/apps/audits/views.py b/apps/audits/views.py index 9e11ddabc..6ac0b1b99 100644 --- a/apps/audits/views.py +++ b/apps/audits/views.py @@ -120,7 +120,7 @@ class OperateLogListView(PermissionsMixin, DatetimeSearchMixin, ListView): def get_context_data(self, **kwargs): context = { - 'user_list': current_org.get_org_members(), + 'user_list': [str(user) for user in current_org.get_org_members()], 'actions': self.actions_dict, 'search_action': self.action, 'resource_type_list': get_resource_type_list(), @@ -161,7 +161,7 @@ class PasswordChangeLogList(PermissionsMixin, DatetimeSearchMixin, ListView): def get_context_data(self, **kwargs): context = { - 'user_list': current_org.get_org_members(), + 'user_list': [str(user) for user in current_org.get_org_members()], 'date_from': self.date_from, 'date_to': self.date_to, 'user': self.user, @@ -246,7 +246,7 @@ class CommandExecutionListView(UserCommandExecutionListView): 'action': _('Command execution log'), 'date_from': self.date_from, 'date_to': self.date_to, - 'user_list': self.get_user_list(), + 'user_list': [(str(user.id), user) for user in self.get_user_list()], 'keyword': self.keyword, 'user_id': self.user_id, }) diff --git a/apps/ops/templates/ops/command_execution_list.html b/apps/ops/templates/ops/command_execution_list.html index 29cd16c21..a21a1b108 100644 --- a/apps/ops/templates/ops/command_execution_list.html +++ b/apps/ops/templates/ops/command_execution_list.html @@ -39,8 +39,8 @@
From 55fa5800b1eb3d7bfc92b90be26518983b4df973 Mon Sep 17 00:00:00 2001 From: Bai Date: Tue, 14 Apr 2020 13:18:33 +0800 Subject: [PATCH 09/22] =?UTF-8?q?[Update]=20=E4=BF=AE=E5=A4=8D=E7=B3=BB?= =?UTF-8?q?=E7=BB=9F=E8=AE=BE=E7=BD=AE-=E7=BB=88=E7=AB=AF=E8=AE=BE?= =?UTF-8?q?=E7=BD=AE-=E8=B5=84=E4=BA=A7=E6=8E=92=E5=BA=8F=E8=AE=BE?= =?UTF-8?q?=E7=BD=AE=E4=B8=8D=E7=94=9F=E6=95=88=E7=9A=84Bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/perms/api/user_permission/user_permission_assets.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/apps/perms/api/user_permission/user_permission_assets.py b/apps/perms/api/user_permission/user_permission_assets.py index 82f46dd6f..389c06bdc 100644 --- a/apps/perms/api/user_permission/user_permission_assets.py +++ b/apps/perms/api/user_permission/user_permission_assets.py @@ -2,6 +2,7 @@ # from django.shortcuts import get_object_or_404 +from django.conf import settings from rest_framework.generics import ListAPIView from common.permissions import IsOrgAdminOrAppUser @@ -45,7 +46,9 @@ class UserGrantedAssetsApi(UserAssetPermissionMixin, ListAPIView): return queryset def get_queryset(self): - queryset = self.util.get_assets().only(*self.only_fields) + queryset = self.util.get_assets().only(*self.only_fields).order_by( + settings.TERMINAL_ASSET_LIST_SORT_BY + ) return queryset From dfdf33bbb53a1dbc16ee70a32945a86f7e67565f Mon Sep 17 00:00:00 2001 From: Bai Date: Tue, 14 Apr 2020 15:54:59 +0800 Subject: [PATCH 10/22] =?UTF-8?q?[Update]=20=E4=BF=AE=E6=94=B9=E4=BE=9D?= =?UTF-8?q?=E8=B5=96=E7=89=88=E6=9C=ACjms-storage=3D0.0.29?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- requirements/requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements/requirements.txt b/requirements/requirements.txt index 96872910e..f459ae2fa 100644 --- a/requirements/requirements.txt +++ b/requirements/requirements.txt @@ -61,7 +61,7 @@ pytz==2018.3 PyYAML==5.1 redis==2.10.6 requests==2.22.0 -jms-storage==0.0.28 +jms-storage==0.0.29 s3transfer==0.3.3 simplejson==3.13.2 six==1.11.0 From 6337d0d0a19d92dabcfec1bb8ede07820cfc79b4 Mon Sep 17 00:00:00 2001 From: Bai Date: Tue, 14 Apr 2020 16:12:24 +0800 Subject: [PATCH 11/22] =?UTF-8?q?[Update]=20=E4=BF=AE=E6=94=B9=E4=BC=9A?= =?UTF-8?q?=E8=AF=9Dcan=5Fjoin=E4=B8=BAproperty?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/terminal/api/session.py | 2 +- apps/terminal/models.py | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/apps/terminal/api/session.py b/apps/terminal/api/session.py index 4653e673d..d2365bef0 100644 --- a/apps/terminal/api/session.py +++ b/apps/terminal/api/session.py @@ -141,7 +141,7 @@ class SessionJoinValidateAPI(views.APIView): if not session: msg = _('Session does not exist: {}'.format(session_id)) return Response({'ok': False, 'msg': msg}, status=401) - if not session.can_join(): + if not session.can_join: msg = _('Session is finished or the protocol not supported') return Response({'ok': False, 'msg': msg}, status=401) diff --git a/apps/terminal/models.py b/apps/terminal/models.py index 3dd34de86..a2dcbf8e0 100644 --- a/apps/terminal/models.py +++ b/apps/terminal/models.py @@ -243,6 +243,7 @@ class Session(OrgModelMixin): return True return False + @property def can_join(self): if self.is_finished: return False From 77149bf36cdda2b64a4978dd65b79b1f12a6bfe8 Mon Sep 17 00:00:00 2001 From: Bai Date: Tue, 14 Apr 2020 17:50:47 +0800 Subject: [PATCH 12/22] =?UTF-8?q?[Update]=20=E4=BF=AE=E6=94=B9=E7=9B=91?= =?UTF-8?q?=E6=8E=A7=E5=A4=9A=E4=B8=AA=E4=BC=9A=E8=AF=9D=E6=97=B6=EF=BC=8C?= =?UTF-8?q?=E6=80=BB=E6=98=AF=E8=A6=86=E7=9B=96=E5=90=8C=E4=B8=80=E4=B8=AA?= =?UTF-8?q?tab=E9=A1=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/terminal/templates/terminal/session_list.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/terminal/templates/terminal/session_list.html b/apps/terminal/templates/terminal/session_list.html index 6876ed448..c7e7dce6c 100644 --- a/apps/terminal/templates/terminal/session_list.html +++ b/apps/terminal/templates/terminal/session_list.html @@ -236,7 +236,7 @@ $(document).ready(function() { }).on('click', '.btn-replay', function () { var sessionID = $(this).data("session"); var replayUrl = "/luna/replay/" + sessionID; - window.open(replayUrl, "height=600, width=800, top=400, left=400, toolbar=no, menubar=no, scrollbars=no, location=no, status=no"); + window.open(replayUrl, "_blank", "height=600, width=800, top=400, left=400, toolbar=no, menubar=no, scrollbars=no, location=no, status=no"); }) .on('click', '.btn-download', function () { var sessionID = $(this).data("session"); @@ -254,7 +254,7 @@ $(document).ready(function() { .on('click', '.btn-join', function () { var sessionID = $(this).data("session"); var joinUrl = "/luna/join/?shareroom=" + sessionID; - window.open(joinUrl, "height=600, width=800, top=400, left=400, toolbar=no, menubar=no, scrollbars=no, location=no, status=no"); + window.open(joinUrl) }) .on("click", '#session_table_filter input', function (e) { e.preventDefault(); From 83eb8f77d18b3136562acae52c6e3d974f878d45 Mon Sep 17 00:00:00 2001 From: Bai Date: Tue, 14 Apr 2020 19:40:56 +0800 Subject: [PATCH 13/22] =?UTF-8?q?[Update]=20=E4=BF=AE=E6=94=B9=E6=B5=8B?= =?UTF-8?q?=E8=AF=95=E9=82=AE=E4=BB=B6=E5=90=8E=EF=BC=8C=E9=85=8D=E7=BD=AE?= =?UTF-8?q?=E8=8E=B7=E5=8F=96=E4=B8=8D=E7=A8=B3=E5=AE=9A=E7=9A=84Bug?= =?UTF-8?q?=EF=BC=88=E6=98=BE=E7=A4=BA=E7=BB=99settings=E8=B5=8B=E5=80=BC?= =?UTF-8?q?=E5=AF=BC=E8=87=B4=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/settings/api.py | 27 +++++++++++++++++++++------ 1 file changed, 21 insertions(+), 6 deletions(-) diff --git a/apps/settings/api.py b/apps/settings/api.py index 7b5383755..38167a7e3 100644 --- a/apps/settings/api.py +++ b/apps/settings/api.py @@ -7,7 +7,7 @@ from smtplib import SMTPSenderRefused from rest_framework import generics from rest_framework.views import Response, APIView from django.conf import settings -from django.core.mail import send_mail +from django.core.mail import send_mail, get_connection from django.utils.translation import ugettext_lazy as _ from .utils import ( @@ -35,18 +35,33 @@ class MailTestingAPI(APIView): def post(self, request): serializer = self.serializer_class(data=request.data) if serializer.is_valid(): + email_host = serializer.validated_data['EMAIL_HOST'] + email_port = serializer.validated_data['EMAIL_PORT'] + email_host_user = serializer.validated_data["EMAIL_HOST_USER"] + email_host_password = serializer.validated_data['EMAIL_HOST_PASSWORD'] email_from = serializer.validated_data["EMAIL_FROM"] email_recipient = serializer.validated_data["EMAIL_RECIPIENT"] - email_host_user = serializer.validated_data["EMAIL_HOST_USER"] - for k, v in serializer.validated_data.items(): - if k.startswith('EMAIL'): - setattr(settings, k, v) + email_use_ssl = serializer.validated_data['EMAIL_USE_SSL'] + email_use_tls = serializer.validated_data['EMAIL_USE_TLS'] + + # 设置 settings 的值,会导致动态配置在当前进程失效 + # for k, v in serializer.validated_data.items(): + # if k.startswith('EMAIL'): + # setattr(settings, k, v) try: subject = "Test" message = "Test smtp setting" email_from = email_from or email_host_user email_recipient = email_recipient or email_from - send_mail(subject, message, email_from, [email_recipient]) + connection = get_connection( + host=email_host, port=email_port, + uesrname=email_host_user, password=email_host_password, + use_tls=email_use_tls, use_ssl=email_use_ssl, + ) + send_mail( + subject, message, email_from, [email_recipient], + connection=connection + ) except SMTPSenderRefused as e: resp = e.smtp_error if isinstance(resp, bytes): From 3648a1458b81559edcc1cf57c3e4b7a1093fc51f Mon Sep 17 00:00:00 2001 From: ibuler Date: Thu, 16 Apr 2020 11:27:46 +0800 Subject: [PATCH 14/22] =?UTF-8?q?[Update]=20=E4=BF=AE=E6=94=B9command=20op?= =?UTF-8?q?tions=20get=20view=20filter?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/common/drf/metadata.py | 7 +++---- apps/terminal/api/command.py | 2 +- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/apps/common/drf/metadata.py b/apps/common/drf/metadata.py index f29fa0c83..cae11cab3 100644 --- a/apps/common/drf/metadata.py +++ b/apps/common/drf/metadata.py @@ -84,8 +84,7 @@ class SimpleMetadataWithFilters(SimpleMetadata): def get_filters_fields(self, request, view): fields = [] if hasattr(view, 'get_filter_fields'): - # fields = view.get_filter_fields(request) - fields = view.get_filter_fields() + fields = view.get_filter_fields(request) elif hasattr(view, 'filter_fields'): fields = view.filter_fields return fields @@ -93,9 +92,9 @@ class SimpleMetadataWithFilters(SimpleMetadata): def get_ordering_fields(self, request, view): fields = [] if hasattr(view, 'get_ordering_fields'): - fields = view.get_filter_fields(request) + fields = view.get_ordering_fields(request) elif hasattr(view, 'ordering_fields'): - fields = view.filter_fields + fields = view.ordering_fields return fields def determine_metadata(self, request, view): diff --git a/apps/terminal/api/command.py b/apps/terminal/api/command.py index 1bfa122eb..eb0955648 100644 --- a/apps/terminal/api/command.py +++ b/apps/terminal/api/command.py @@ -63,7 +63,7 @@ class CommandQueryMixin: def filter_queryset(self, queryset): return queryset - def get_filter_fields(self): + def get_filter_fields(self, request): fields = self.filter_fields fields.extend(["date_from", "date_to"]) return fields From 864a4c04858e0f7dcd798bd3ae0623b8d3249d4a Mon Sep 17 00:00:00 2001 From: ibuler Date: Thu, 16 Apr 2020 12:08:52 +0800 Subject: [PATCH 15/22] =?UTF-8?q?[Bugfix]=20=E4=BF=AE=E5=A4=8D=E6=98=BE?= =?UTF-8?q?=E7=A4=BA=E6=9C=AA=E6=8E=88=E6=9D=83=E8=B5=84=E4=BA=A7=E7=9A=84?= =?UTF-8?q?bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/assets/utils.py | 10 ++++++++-- apps/perms/utils/asset_permission.py | 6 ++++-- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/apps/assets/utils.py b/apps/assets/utils.py index 25e8a46ea..8ec20388b 100644 --- a/apps/assets/utils.py +++ b/apps/assets/utils.py @@ -76,9 +76,15 @@ class TreeService(Tree): ancestor_ids.pop(0) return ancestor_ids - def ancestors(self, nid, with_self=False, deep=False): + def ancestors(self, nid, with_self=False, deep=False, with_assets=True): ancestor_ids = self.ancestors_ids(nid, with_self=with_self) - return [self.get_node(i, deep=deep) for i in ancestor_ids] + ancestors = [self.get_node(i, deep=deep) for i in ancestor_ids] + if with_assets: + return ancestors + for n in ancestors: + n.data['assets'] = set() + n.data['all_assets'] = None + return ancestors def get_node_full_tag(self, nid): ancestors = self.ancestors(nid, with_self=True) diff --git a/apps/perms/utils/asset_permission.py b/apps/perms/utils/asset_permission.py index 792b842af..f4c06c0a7 100644 --- a/apps/perms/utils/asset_permission.py +++ b/apps/perms/utils/asset_permission.py @@ -290,7 +290,7 @@ class AssetPermissionUtil(AssetPermissionUtilCacheMixin): def parse_user_tree_to_full_tree(self, user_tree): """ 经过前面两个动作,用户授权的节点已放到树上,但是树不是完整的, - 这里要讲树构造成一个完整的书 + 这里要讲树构造成一个完整的树 """ # 开始修正user_tree,保证父节点都在树上 root_children = user_tree.children('') @@ -300,7 +300,8 @@ class AssetPermissionUtil(AssetPermissionUtilCacheMixin): if child.identifier.startswith('-'): continue ancestors = self.full_tree.ancestors( - child.identifier, with_self=False, deep=True + child.identifier, with_self=False, deep=True, + with_assets=False, ) if not ancestors: continue @@ -346,6 +347,7 @@ class AssetPermissionUtil(AssetPermissionUtilCacheMixin): self.add_direct_nodes_to_user_tree(user_tree) self.add_single_assets_node_to_user_tree(user_tree) self.parse_user_tree_to_full_tree(user_tree) + print(user_tree.all_assets('2')) self.add_favorite_node_if_need(user_tree) self.set_user_tree_to_cache_if_need(user_tree) self.set_user_tree_to_local(user_tree) From 6a2a0013a891603ea8fbb9f5e2c21be82d58d9c8 Mon Sep 17 00:00:00 2001 From: ibuler Date: Thu, 16 Apr 2020 12:12:24 +0800 Subject: [PATCH 16/22] =?UTF-8?q?[Update]=20=E5=8E=BB=E6=8E=89debug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/perms/utils/asset_permission.py | 1 - 1 file changed, 1 deletion(-) diff --git a/apps/perms/utils/asset_permission.py b/apps/perms/utils/asset_permission.py index f4c06c0a7..3a1f81a90 100644 --- a/apps/perms/utils/asset_permission.py +++ b/apps/perms/utils/asset_permission.py @@ -347,7 +347,6 @@ class AssetPermissionUtil(AssetPermissionUtilCacheMixin): self.add_direct_nodes_to_user_tree(user_tree) self.add_single_assets_node_to_user_tree(user_tree) self.parse_user_tree_to_full_tree(user_tree) - print(user_tree.all_assets('2')) self.add_favorite_node_if_need(user_tree) self.set_user_tree_to_cache_if_need(user_tree) self.set_user_tree_to_local(user_tree) From 6890d549ede7c5b3f0ea99e11e204224a3718640 Mon Sep 17 00:00:00 2001 From: Bai Date: Thu, 16 Apr 2020 18:29:02 +0800 Subject: [PATCH 17/22] =?UTF-8?q?[Update]=20=E4=BF=AE=E6=94=B9=E5=BF=98?= =?UTF-8?q?=E8=AE=B0=E5=AF=86=E7=A0=81=E9=A1=B5=E9=9D=A2=E7=9A=84=E9=94=99?= =?UTF-8?q?=E8=AF=AF=E4=BF=A1=E6=81=AF=E6=8F=90=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/users/views/login.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/apps/users/views/login.py b/apps/users/views/login.py index c96c73e9d..185bea33a 100644 --- a/apps/users/views/login.py +++ b/apps/users/views/login.py @@ -43,11 +43,13 @@ class UserForgotPasswordView(FormView): user = get_object_or_none(User, email=email) if not user: error = _('Email address invalid, please input again') - return self.get(request, errors=error) + form.add_error('email', error) + return self.form_invalid(form) elif not user.can_update_password(): error = _('User auth from {}, go there change password'.format( user.source)) - return self.get(request, errors=error) + form.add_error('email', error) + return self.form_invalid(form) else: send_reset_password_mail(user) return redirect('users:forgot-password-sendmail-success') From 081f4b1c0a97fb8d0974c639f858ecb7f918fa8e Mon Sep 17 00:00:00 2001 From: Bai Date: Fri, 17 Apr 2020 11:26:29 +0800 Subject: [PATCH 18/22] =?UTF-8?q?[Update]=20=E4=BF=AE=E6=94=B9=E7=94=A8?= =?UTF-8?q?=E6=88=B7=E5=AF=86=E7=A0=81=E9=87=8D=E7=BD=AE=E9=A1=B5=E9=9D=A2?= =?UTF-8?q?=E9=94=99=E8=AF=AF=E4=BF=A1=E6=81=AF=E6=8F=90=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/users/views/login.py | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/apps/users/views/login.py b/apps/users/views/login.py index 185bea33a..74bb411ab 100644 --- a/apps/users/views/login.py +++ b/apps/users/views/login.py @@ -109,17 +109,21 @@ class UserResetPasswordView(FormView): token = self.request.GET.get('token') user = User.validate_reset_password_token(token) if not user: - return self.get(self.request, errors=_('Token invalid or expired')) + error = _('Token invalid or expired') + form.add_error('new_password', error) + return self.form_invalid(form) if not user.can_update_password(): - errors = _('User auth from {}, go there change password'.format(user.source)) - return self.get(self.request, errors=errors) + error = _('User auth from {}, go there change password'.format(user.source)) + form.add_error('new_password', error) + return self.form_invalid(form) password = form.cleaned_data['new_password'] is_ok = check_password_rules(password) if not is_ok: - errors = _('* Your password does not meet the requirements') - return self.get(self.request, errors=errors) + error = _('* Your password does not meet the requirements') + form.add_error('new_password', error) + return self.form_invalid(form) user.reset_password(password) User.expired_reset_password_token(token) From 98afa032a77ab4313980a9991fd9e43c9f4ec7ab Mon Sep 17 00:00:00 2001 From: ibuler Date: Fri, 17 Apr 2020 16:32:38 +0800 Subject: [PATCH 19/22] =?UTF-8?q?[Update]=20=E4=BF=AE=E5=A4=8D=E8=B5=84?= =?UTF-8?q?=E4=BA=A7=E9=A1=B5=E9=9D=A2=E5=8F=AF=E8=BF=9E=E6=8E=A5=E6=80=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/assets/models/utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/assets/models/utils.py b/apps/assets/models/utils.py index d010f95f2..90c203e81 100644 --- a/apps/assets/models/utils.py +++ b/apps/assets/models/utils.py @@ -77,7 +77,7 @@ class Connectivity: return cls(cls.UNKNOWN, timezone.now()) @classmethod - def set(cls, key, value, ttl=0): + def set(cls, key, value, ttl=None): cache.set(key, value, ttl) @classmethod From e74289b2232864a8b050af2516f4c75d067dbe04 Mon Sep 17 00:00:00 2001 From: BaiJiangJie <32935519+BaiJiangJie@users.noreply.github.com> Date: Fri, 17 Apr 2020 23:41:50 +0800 Subject: [PATCH 20/22] =?UTF-8?q?[Update]=20=E4=BF=AE=E6=94=B9=E7=94=A8?= =?UTF-8?q?=E6=88=B7=E5=AF=86=E7=A0=81=E9=87=8D=E7=BD=AE=E9=A1=B5=E9=9D=A2?= =?UTF-8?q?=E9=94=99=E8=AF=AF=E4=BF=A1=E6=81=AF=E6=8F=90=E7=A4=BA2=20(#391?= =?UTF-8?q?4)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/locale/zh/LC_MESSAGES/django.mo | Bin 89671 -> 89528 bytes apps/locale/zh/LC_MESSAGES/django.po | 143 +++++++++++++-------------- apps/users/views/login.py | 9 +- 3 files changed, 73 insertions(+), 79 deletions(-) diff --git a/apps/locale/zh/LC_MESSAGES/django.mo b/apps/locale/zh/LC_MESSAGES/django.mo index 838a92b2287e57a15c99e8d1e5b1e46ca3ad06c2..126defb5619feee38247c0be8c684584080455cb 100644 GIT binary patch delta 26150 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 VoV-zdTb|&6O=Y*mjSZ*}{(pZ?(ry3% delta 26270 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 diff --git a/apps/locale/zh/LC_MESSAGES/django.po b/apps/locale/zh/LC_MESSAGES/django.po index f1e5999e4..01a3bc023 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: 2020-04-13 13:44+0800\n" +"POT-Creation-Date: 2020-04-17 20:49+0800\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: ibuler \n" "Language-Team: JumpServer team\n" @@ -58,8 +58,7 @@ msgstr "自定义" #: xpack/plugins/change_auth_plan/templates/change_auth_plan/plan_execution_list.html:54 #: xpack/plugins/change_auth_plan/templates/change_auth_plan/plan_execution_subtask_list.html:13 #: xpack/plugins/change_auth_plan/templates/change_auth_plan/plan_list.html:14 -#: xpack/plugins/cloud/models.py:269 -#: xpack/plugins/cloud/templates/cloud/sync_instance_task_create_update.html:37 +#: xpack/plugins/cloud/models.py:266 #: xpack/plugins/cloud/templates/cloud/sync_instance_task_instance.html:47 #: xpack/plugins/orgs/templates/orgs/org_list.html:17 #: xpack/plugins/vault/forms.py:13 xpack/plugins/vault/forms.py:15 @@ -143,8 +142,8 @@ msgstr "运行参数" #: perms/templates/perms/remote_app_permission_user.html:49 #: settings/models.py:26 #: settings/templates/settings/_ldap_list_users_modal.html:32 -#: terminal/models.py:26 terminal/models.py:341 terminal/models.py:373 -#: terminal/models.py:410 terminal/templates/terminal/base_storage_list.html:31 +#: terminal/models.py:26 terminal/models.py:342 terminal/models.py:374 +#: terminal/models.py:411 terminal/templates/terminal/base_storage_list.html:31 #: terminal/templates/terminal/terminal_detail.html:43 #: terminal/templates/terminal/terminal_list.html:30 users/forms/profile.py:20 #: users/models/group.py:15 users/models/user.py:440 @@ -183,7 +182,7 @@ msgstr "名称" #: assets/templates/assets/cmd_filter_rule_list.html:53 #: audits/templates/audits/login_log_list.html:58 #: perms/templates/perms/remote_app_permission_remote_app.html:50 -#: terminal/models.py:375 terminal/models.py:412 +#: terminal/models.py:376 terminal/models.py:413 #: terminal/templates/terminal/base_storage_list.html:32 #: tickets/models/ticket.py:43 tickets/templates/tickets/ticket_detail.html:33 #: tickets/templates/tickets/ticket_list.html:35 @@ -248,8 +247,8 @@ msgstr "数据库" #: perms/templates/perms/asset_permission_detail.html:97 #: perms/templates/perms/database_app_permission_detail.html:93 #: perms/templates/perms/remote_app_permission_detail.html:89 -#: settings/models.py:31 terminal/models.py:36 terminal/models.py:380 -#: terminal/models.py:417 terminal/templates/terminal/base_storage_list.html:33 +#: settings/models.py:31 terminal/models.py:36 terminal/models.py:381 +#: terminal/models.py:418 terminal/templates/terminal/base_storage_list.html:33 #: terminal/templates/terminal/terminal_detail.html:63 #: tickets/templates/tickets/ticket_detail.html:104 users/models/group.py:16 #: users/models/user.py:473 users/templates/users/user_detail.html:115 @@ -261,10 +260,10 @@ msgstr "数据库" #: xpack/plugins/change_auth_plan/models.py:75 #: xpack/plugins/change_auth_plan/templates/change_auth_plan/plan_detail.html:115 #: xpack/plugins/change_auth_plan/templates/change_auth_plan/plan_list.html:19 -#: xpack/plugins/cloud/models.py:53 xpack/plugins/cloud/models.py:139 +#: xpack/plugins/cloud/models.py:53 xpack/plugins/cloud/models.py:136 #: xpack/plugins/cloud/templates/cloud/account_detail.html:67 #: xpack/plugins/cloud/templates/cloud/account_list.html:15 -#: xpack/plugins/cloud/templates/cloud/sync_instance_task_detail.html:128 +#: xpack/plugins/cloud/templates/cloud/sync_instance_task_detail.html:102 #: xpack/plugins/cloud/templates/cloud/sync_instance_task_list.html:18 #: xpack/plugins/gathered_user/models.py:26 #: xpack/plugins/orgs/templates/orgs/org_detail.html:59 @@ -324,7 +323,7 @@ msgstr "参数" #: users/templates/users/user_detail.html:97 #: xpack/plugins/change_auth_plan/models.py:79 #: xpack/plugins/change_auth_plan/templates/change_auth_plan/plan_detail.html:111 -#: xpack/plugins/cloud/models.py:56 xpack/plugins/cloud/models.py:145 +#: xpack/plugins/cloud/models.py:56 xpack/plugins/cloud/models.py:142 #: xpack/plugins/gathered_user/models.py:30 msgid "Created by" msgstr "创建者" @@ -351,9 +350,9 @@ msgstr "创建者" #: tickets/templates/tickets/ticket_detail.html:52 users/models/group.py:18 #: users/templates/users/user_group_detail.html:58 #: xpack/plugins/change_auth_plan/templates/change_auth_plan/plan_detail.html:103 -#: xpack/plugins/cloud/models.py:59 xpack/plugins/cloud/models.py:148 +#: xpack/plugins/cloud/models.py:59 xpack/plugins/cloud/models.py:145 #: xpack/plugins/cloud/templates/cloud/account_detail.html:63 -#: xpack/plugins/cloud/templates/cloud/sync_instance_task_detail.html:108 +#: xpack/plugins/cloud/templates/cloud/sync_instance_task_detail.html:98 #: xpack/plugins/orgs/templates/orgs/org_detail.html:55 msgid "Date created" msgstr "创建日期" @@ -406,7 +405,7 @@ msgstr "远程应用" #: users/templates/users/user_pubkey_update.html:80 #: xpack/plugins/change_auth_plan/templates/change_auth_plan/plan_create_update.html:65 #: xpack/plugins/cloud/templates/cloud/account_create_update.html:29 -#: xpack/plugins/cloud/templates/cloud/sync_instance_task_create_update.html:52 +#: xpack/plugins/cloud/templates/cloud/sync_instance_task_create_update.html:49 #: xpack/plugins/gathered_user/templates/gathered_user/task_create_update.html:40 #: xpack/plugins/interface/templates/interface/interface.html:72 #: xpack/plugins/orgs/templates/orgs/org_create_update.html:29 @@ -872,7 +871,6 @@ msgstr "用户名" #: ops/templates/ops/task_detail.html:95 #: xpack/plugins/change_auth_plan/templates/change_auth_plan/plan_detail.html:82 #: xpack/plugins/cloud/templates/cloud/sync_instance_task_detail.html:72 -#: xpack/plugins/cloud/templates/cloud/sync_instance_task_detail.html:82 msgid "Yes" msgstr "是" @@ -880,7 +878,6 @@ msgstr "是" #: ops/templates/ops/task_detail.html:97 #: xpack/plugins/change_auth_plan/templates/change_auth_plan/plan_detail.html:84 #: xpack/plugins/cloud/templates/cloud/sync_instance_task_detail.html:74 -#: xpack/plugins/cloud/templates/cloud/sync_instance_task_detail.html:84 msgid "No" msgstr "否" @@ -1410,7 +1407,7 @@ msgstr "资产管理" #: assets/models/user.py:111 assets/templates/assets/system_user_users.html:76 #: templates/_nav.html:17 users/views/group.py:28 users/views/group.py:45 #: users/views/group.py:63 users/views/group.py:82 users/views/group.py:99 -#: users/views/login.py:158 users/views/profile/password.py:40 +#: users/views/login.py:164 users/views/profile/password.py:40 #: users/views/profile/pubkey.py:36 users/views/user.py:50 #: users/views/user.py:67 users/views/user.py:111 users/views/user.py:178 #: users/views/user.py:206 users/views/user.py:220 users/views/user.py:234 @@ -1731,7 +1728,7 @@ msgstr "资产列表" #: ops/templates/ops/command_execution_create.html:112 #: settings/templates/settings/_ldap_list_users_modal.html:41 #: users/templates/users/_granted_assets.html:7 -#: xpack/plugins/cloud/templates/cloud/sync_instance_task_create_update.html:65 +#: xpack/plugins/cloud/templates/cloud/sync_instance_task_create_update.html:62 msgid "Loading" msgstr "加载中" @@ -1891,7 +1888,7 @@ msgstr "自动生成密钥" #: perms/templates/perms/remote_app_permission_create_update.html:51 #: terminal/templates/terminal/terminal_update.html:38 #: xpack/plugins/change_auth_plan/templates/change_auth_plan/plan_create_update.html:61 -#: xpack/plugins/cloud/templates/cloud/sync_instance_task_create_update.html:47 +#: xpack/plugins/cloud/templates/cloud/sync_instance_task_create_update.html:44 #: xpack/plugins/gathered_user/templates/gathered_user/task_create_update.html:35 msgid "Other" msgstr "其它" @@ -1960,7 +1957,7 @@ msgstr "选择节点" #: users/templates/users/user_list.html:184 #: users/templates/users/user_password_verify.html:20 #: xpack/plugins/cloud/templates/cloud/account_create_update.html:30 -#: xpack/plugins/cloud/templates/cloud/sync_instance_task_create_update.html:53 +#: xpack/plugins/cloud/templates/cloud/sync_instance_task_create_update.html:50 #: xpack/plugins/gathered_user/templates/gathered_user/task_create_update.html:41 #: xpack/plugins/interface/templates/interface/interface.html:103 #: xpack/plugins/orgs/templates/orgs/org_create_update.html:30 @@ -2000,7 +1997,7 @@ msgstr "资产用户" #: users/templates/users/user_detail.html:126 #: users/templates/users/user_profile.html:150 #: xpack/plugins/change_auth_plan/templates/change_auth_plan/plan_detail.html:126 -#: xpack/plugins/cloud/templates/cloud/sync_instance_task_detail.html:139 +#: xpack/plugins/cloud/templates/cloud/sync_instance_task_detail.html:129 #: xpack/plugins/license/templates/license/license_detail.html:80 msgid "Quick modify" msgstr "快速修改" @@ -2533,7 +2530,7 @@ msgstr "启用" msgid "-" msgstr "" -#: audits/models.py:78 xpack/plugins/cloud/models.py:204 +#: audits/models.py:78 xpack/plugins/cloud/models.py:201 msgid "Failed" msgstr "失败" @@ -2566,7 +2563,7 @@ msgstr "多因子认证" #: audits/models.py:87 audits/templates/audits/login_log_list.html:63 #: xpack/plugins/change_auth_plan/models.py:286 #: xpack/plugins/change_auth_plan/templates/change_auth_plan/plan_execution_subtask_list.html:15 -#: xpack/plugins/cloud/models.py:217 +#: xpack/plugins/cloud/models.py:214 msgid "Reason" msgstr "原因" @@ -2574,7 +2571,7 @@ msgstr "原因" #: tickets/templates/tickets/ticket_detail.html:34 #: tickets/templates/tickets/ticket_list.html:36 #: tickets/templates/tickets/ticket_list.html:104 -#: xpack/plugins/cloud/models.py:214 xpack/plugins/cloud/models.py:272 +#: xpack/plugins/cloud/models.py:211 xpack/plugins/cloud/models.py:269 #: xpack/plugins/cloud/templates/cloud/sync_instance_task_history.html:50 #: xpack/plugins/cloud/templates/cloud/sync_instance_task_instance.html:48 msgid "Status" @@ -2642,8 +2639,8 @@ msgstr "导出" msgid "Handlers" msgstr "操作者" -#: audits/views.py:86 audits/views.py:130 audits/views.py:167 -#: audits/views.py:212 audits/views.py:244 templates/_nav.html:146 +#: audits/views.py:86 audits/views.py:131 audits/views.py:168 +#: audits/views.py:213 audits/views.py:245 templates/_nav.html:146 msgid "Audits" msgstr "日志审计" @@ -2651,19 +2648,19 @@ msgstr "日志审计" msgid "FTP log" msgstr "FTP日志" -#: audits/views.py:131 templates/_nav.html:151 +#: audits/views.py:132 templates/_nav.html:151 msgid "Operate log" msgstr "操作日志" -#: audits/views.py:168 templates/_nav.html:152 +#: audits/views.py:169 templates/_nav.html:152 msgid "Password change log" msgstr "改密日志" -#: audits/views.py:213 templates/_nav.html:149 +#: audits/views.py:214 templates/_nav.html:149 msgid "Login log" msgstr "登录日志" -#: audits/views.py:245 +#: audits/views.py:246 msgid "Command execution log" msgstr "命令执行" @@ -3047,13 +3044,13 @@ msgstr "没有该主机 {} 权限" #: ops/mixin.py:29 ops/mixin.py:92 ops/mixin.py:162 #: xpack/plugins/change_auth_plan/templates/change_auth_plan/plan_detail.html:98 -#: xpack/plugins/cloud/templates/cloud/sync_instance_task_detail.html:98 +#: xpack/plugins/cloud/templates/cloud/sync_instance_task_detail.html:88 msgid "Cycle perform" msgstr "周期执行" #: ops/mixin.py:33 ops/mixin.py:90 ops/mixin.py:111 ops/mixin.py:150 #: xpack/plugins/change_auth_plan/templates/change_auth_plan/plan_detail.html:90 -#: xpack/plugins/cloud/templates/cloud/sync_instance_task_detail.html:90 +#: xpack/plugins/cloud/templates/cloud/sync_instance_task_detail.html:80 msgid "Regularly perform" msgstr "定期执行" @@ -3061,8 +3058,8 @@ msgstr "定期执行" #: xpack/plugins/change_auth_plan/templates/change_auth_plan/plan_create_update.html:54 #: xpack/plugins/change_auth_plan/templates/change_auth_plan/plan_detail.html:79 #: xpack/plugins/change_auth_plan/templates/change_auth_plan/plan_list.html:17 -#: xpack/plugins/cloud/templates/cloud/sync_instance_task_create_update.html:40 -#: xpack/plugins/cloud/templates/cloud/sync_instance_task_detail.html:79 +#: xpack/plugins/cloud/templates/cloud/sync_instance_task_create_update.html:37 +#: xpack/plugins/cloud/templates/cloud/sync_instance_task_detail.html:69 #: xpack/plugins/cloud/templates/cloud/sync_instance_task_list.html:16 #: xpack/plugins/gathered_user/templates/gathered_user/task_create_update.html:28 msgid "Periodic perform" @@ -3183,7 +3180,7 @@ msgstr "{} 任务结束" #: ops/models/command.py:24 #: xpack/plugins/change_auth_plan/templates/change_auth_plan/plan_execution_list.html:56 -#: xpack/plugins/cloud/models.py:212 +#: xpack/plugins/cloud/models.py:209 msgid "Result" msgstr "结果" @@ -3401,7 +3398,7 @@ msgstr "内容" #: ops/templates/ops/task_list.html:73 #: xpack/plugins/change_auth_plan/templates/change_auth_plan/plan_detail.html:135 #: xpack/plugins/change_auth_plan/templates/change_auth_plan/plan_list.html:54 -#: xpack/plugins/cloud/templates/cloud/sync_instance_task_detail.html:148 +#: xpack/plugins/cloud/templates/cloud/sync_instance_task_detail.html:138 #: xpack/plugins/cloud/templates/cloud/sync_instance_task_list.html:58 #: xpack/plugins/gathered_user/templates/gathered_user/task_list.html:44 msgid "Run" @@ -3836,11 +3833,11 @@ msgstr "远程应用授权远程应用列表" msgid "Test mail sent to {}, please check" msgstr "邮件已经发送{}, 请检查" -#: settings/api.py:227 +#: settings/api.py:242 msgid "Get ldap users is None" msgstr "获取 LDAP 用户为 None" -#: settings/api.py:234 +#: settings/api.py:249 msgid "Imported {} users successfully" msgstr "导入 {} 个用户成功" @@ -4883,9 +4880,9 @@ msgid "" " " msgstr "" -#: terminal/forms/storage.py:136 xpack/plugins/cloud/models.py:266 +#: terminal/forms/storage.py:136 xpack/plugins/cloud/models.py:263 #: xpack/plugins/cloud/templates/cloud/sync_instance_task_create_update.html:29 -#: xpack/plugins/cloud/templates/cloud/sync_instance_task_detail.html:112 +#: xpack/plugins/cloud/templates/cloud/sync_instance_task_detail.html:106 #: xpack/plugins/cloud/templates/cloud/sync_instance_task_instance.html:46 msgid "Region" msgstr "地域" @@ -4976,7 +4973,7 @@ msgstr "回放" msgid "Date end" msgstr "结束日期" -#: terminal/models.py:342 +#: terminal/models.py:343 msgid "Args" msgstr "参数" @@ -5404,7 +5401,7 @@ msgstr "复制用户公钥到这里" msgid "Join user groups" msgstr "添加到用户组" -#: users/forms/user.py:103 users/views/login.py:119 +#: users/forms/user.py:103 users/views/login.py:124 #: users/views/profile/password.py:57 msgid "* Your password does not meet the requirements" msgstr "* 您的密码不符合要求" @@ -5923,8 +5920,8 @@ msgstr "新的公钥已设置成功,请下载对应的私钥" msgid "Update user" msgstr "更新用户" -#: users/templates/users/user_update.html:22 users/views/login.py:48 -#: users/views/login.py:113 +#: users/templates/users/user_update.html:22 users/views/login.py:49 +#: users/views/login.py:117 msgid "User auth from {}, go there change password" msgstr "用户认证源来自 {}, 请去相应系统修改密码" @@ -6146,28 +6143,28 @@ msgstr "用户组授权资产" msgid "Email address invalid, please input again" msgstr "邮箱地址错误,重新输入" -#: users/views/login.py:61 +#: users/views/login.py:63 msgid "Send reset password message" msgstr "发送重置密码邮件" -#: users/views/login.py:62 +#: users/views/login.py:64 msgid "Send reset password mail success, login your mail box and follow it " msgstr "" "发送重置邮件成功, 请登录邮箱查看, 按照提示操作 (如果没收到,请等待3-5分钟)" -#: users/views/login.py:75 +#: users/views/login.py:77 msgid "Reset password success" msgstr "重置密码成功" -#: users/views/login.py:76 +#: users/views/login.py:78 msgid "Reset password success, return to login page" msgstr "重置密码成功,返回到登录页面" -#: users/views/login.py:100 users/views/login.py:110 +#: users/views/login.py:102 users/views/login.py:112 msgid "Token invalid or expired" msgstr "Token错误或失效" -#: users/views/login.py:158 +#: users/views/login.py:164 msgid "First login" msgstr "首次登录" @@ -6423,10 +6420,6 @@ msgstr "选择节点" msgid "Select admins" msgstr "选择管理员" -#: xpack/plugins/cloud/forms.py:85 -msgid "Tips: The asset information is always covered" -msgstr "提示:资产信息总是被覆盖" - #: xpack/plugins/cloud/meta.py:9 xpack/plugins/cloud/views.py:27 #: xpack/plugins/cloud/views.py:44 xpack/plugins/cloud/views.py:62 #: xpack/plugins/cloud/views.py:78 xpack/plugins/cloud/views.py:92 @@ -6471,52 +6464,48 @@ msgstr "地域" msgid "Instances" msgstr "实例" -#: xpack/plugins/cloud/models.py:136 -#: xpack/plugins/cloud/templates/cloud/sync_instance_task_detail.html:69 -msgid "Covered always" -msgstr "总是覆盖" - -#: xpack/plugins/cloud/models.py:142 -#: xpack/plugins/cloud/templates/cloud/sync_instance_task_detail.html:104 +#: xpack/plugins/cloud/models.py:139 +#: xpack/plugins/cloud/templates/cloud/sync_instance_task_detail.html:94 #: xpack/plugins/cloud/templates/cloud/sync_instance_task_list.html:17 msgid "Date last sync" msgstr "最后同步日期" -#: xpack/plugins/cloud/models.py:153 xpack/plugins/cloud/models.py:210 +#: xpack/plugins/cloud/models.py:150 xpack/plugins/cloud/models.py:207 msgid "Sync instance task" msgstr "同步实例任务" -#: xpack/plugins/cloud/models.py:205 +#: xpack/plugins/cloud/models.py:202 msgid "Succeed" msgstr "成功" -#: xpack/plugins/cloud/models.py:220 xpack/plugins/cloud/models.py:275 +#: xpack/plugins/cloud/models.py:217 xpack/plugins/cloud/models.py:272 #: xpack/plugins/cloud/templates/cloud/sync_instance_task_history.html:51 #: xpack/plugins/cloud/templates/cloud/sync_instance_task_instance.html:49 msgid "Date sync" msgstr "同步日期" -#: xpack/plugins/cloud/models.py:248 +#: xpack/plugins/cloud/models.py:245 msgid "Unsync" msgstr "未同步" -#: xpack/plugins/cloud/models.py:249 xpack/plugins/cloud/models.py:250 +#: xpack/plugins/cloud/models.py:246 xpack/plugins/cloud/models.py:247 msgid "Synced" msgstr "已同步" -#: xpack/plugins/cloud/models.py:251 +#: xpack/plugins/cloud/models.py:248 msgid "Released" msgstr "已释放" -#: xpack/plugins/cloud/models.py:256 +#: xpack/plugins/cloud/models.py:253 msgid "Sync task" msgstr "同步任务" -#: xpack/plugins/cloud/models.py:260 +#: xpack/plugins/cloud/models.py:257 msgid "Sync instance task history" msgstr "同步实例任务历史" -#: xpack/plugins/cloud/models.py:263 +#: xpack/plugins/cloud/models.py:260 +#: xpack/plugins/cloud/templates/cloud/sync_instance_task_detail.html:114 #: xpack/plugins/cloud/templates/cloud/sync_instance_task_instance.html:45 msgid "Instance" msgstr "实例" @@ -6595,7 +6584,7 @@ msgstr "创建账户" msgid "Node & AdminUser" msgstr "节点 & 管理用户" -#: xpack/plugins/cloud/templates/cloud/sync_instance_task_create_update.html:66 +#: xpack/plugins/cloud/templates/cloud/sync_instance_task_create_update.html:63 msgid "Load failed" msgstr "加载失败" @@ -6620,11 +6609,11 @@ msgstr "同步历史列表" msgid "Sync instance list" msgstr "同步实例列表" -#: xpack/plugins/cloud/templates/cloud/sync_instance_task_detail.html:145 +#: xpack/plugins/cloud/templates/cloud/sync_instance_task_detail.html:135 msgid "Run task manually" msgstr "手动执行任务" -#: xpack/plugins/cloud/templates/cloud/sync_instance_task_detail.html:188 +#: xpack/plugins/cloud/templates/cloud/sync_instance_task_detail.html:178 #: xpack/plugins/cloud/templates/cloud/sync_instance_task_list.html:102 msgid "Sync success" msgstr "同步成功" @@ -6661,7 +6650,7 @@ msgstr "执行次数" msgid "Instance count" msgstr "实例个数" -#: xpack/plugins/cloud/utils.py:38 +#: xpack/plugins/cloud/utils.py:37 msgid "Account unavailable" msgstr "账户无效" @@ -6955,6 +6944,12 @@ msgstr "密码匣子" msgid "vault create" msgstr "创建" +#~ msgid "Tips: The asset information is always covered" +#~ msgstr "提示:资产信息总是被覆盖" + +#~ msgid "Covered always" +#~ msgstr "总是覆盖" + #~ msgid "* For security, do not change {}'s password" #~ msgstr "* 为了安全,不能修改 {} 的密码" diff --git a/apps/users/views/login.py b/apps/users/views/login.py index 74bb411ab..44a6ffe2b 100644 --- a/apps/users/views/login.py +++ b/apps/users/views/login.py @@ -46,9 +46,8 @@ class UserForgotPasswordView(FormView): form.add_error('email', error) return self.form_invalid(form) elif not user.can_update_password(): - error = _('User auth from {}, go there change password'.format( - user.source)) - form.add_error('email', error) + error = _('User auth from {}, go there change password') + form.add_error('email', error.format(user.get_source_display())) return self.form_invalid(form) else: send_reset_password_mail(user) @@ -114,8 +113,8 @@ class UserResetPasswordView(FormView): return self.form_invalid(form) if not user.can_update_password(): - error = _('User auth from {}, go there change password'.format(user.source)) - form.add_error('new_password', error) + error = _('User auth from {}, go there change password') + form.add_error('new_password', error.format(user.get_source_display())) return self.form_invalid(form) password = form.cleaned_data['new_password'] From b4cc2bbff9e0d42febcf866d81ad1eefc8ed1e4d Mon Sep 17 00:00:00 2001 From: Bai Date: Sat, 18 Apr 2020 01:22:48 +0800 Subject: [PATCH 21/22] =?UTF-8?q?[Bugfix]=20=E4=BF=AE=E5=A4=8D=E7=9C=9F?= =?UTF-8?q?=E5=AE=9E=E7=BB=84=E7=BB=87=E4=B8=8B=EF=BC=8C=E6=96=B0=E5=BB=BA?= =?UTF-8?q?=E7=9A=84=E7=94=A8=E6=88=B7=E8=A7=92=E8=89=B2=E6=98=BE=E7=A4=BA?= =?UTF-8?q?=E4=B8=8D=E7=A8=B3=E5=AE=9A=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/users/api/user.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/apps/users/api/user.py b/apps/users/api/user.py index fac0fabca..2670eb014 100644 --- a/apps/users/api/user.py +++ b/apps/users/api/user.py @@ -49,7 +49,12 @@ class UserViewSet(CommonApiMixin, UserQuerysetMixin, BulkModelViewSet): if isinstance(users, User): users = [users] if current_org and current_org.is_real(): - current_org.users.add(*users) + # current_org.users.add(*users) + # 如果在真实组织下创建用户,使用上面的语句会出现用户角色显示不稳定的问题 + # 可能是current_org的users add操作是进程不安全的 + # User Model 中的 remove 操作没有出现问题,暂时不做更改 + for user in users: + user.related_user_orgs.add(current_org.id) self.send_created_signal(users) def get_permissions(self): From 0379e5160c208c5122837cfddc58411bb6952e8d Mon Sep 17 00:00:00 2001 From: BaiJiangJie <32935519+BaiJiangJie@users.noreply.github.com> Date: Sat, 18 Apr 2020 23:14:25 +0800 Subject: [PATCH 22/22] =?UTF-8?q?[Bugfix]=20=E4=BF=AE=E5=A4=8D=E7=9C=9F?= =?UTF-8?q?=E5=AE=9E=E7=BB=84=E7=BB=87=E4=B8=8B=EF=BC=8C=E6=96=B0=E5=BB=BA?= =?UTF-8?q?=E7=9A=84=E7=94=A8=E6=88=B7=E8=A7=92=E8=89=B2=E6=98=BE=E7=A4=BA?= =?UTF-8?q?=E4=B8=8D=E7=A8=B3=E5=AE=9A=E7=9A=84=E9=97=AE=E9=A2=982=20(#391?= =?UTF-8?q?9)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * [Bugfix] 修复真实组织下,新建的用户角色显示不稳定的问题2 * [Bugfix] 修复真实组织下,新建的用户角色显示不稳定的问题3 * [Bugfix] 修复真实组织下,新建的用户角色显示不稳定的问题4 --- apps/orgs/models.py | 13 +++++++------ apps/users/api/user.py | 7 +------ 2 files changed, 8 insertions(+), 12 deletions(-) diff --git a/apps/orgs/models.py b/apps/orgs/models.py index bae5c408c..6e6e6dfd6 100644 --- a/apps/orgs/models.py +++ b/apps/orgs/models.py @@ -72,7 +72,8 @@ class Organization(models.Model): org = cls.default() if default else None return org - @lazyproperty + # @lazyproperty + # lazyproperty 导致用户列表中角色显示出现不稳定的情况, 如果不加会导致数据库操作次数太多 def org_users(self): from users.models import User if self.is_real(): @@ -83,9 +84,9 @@ class Organization(models.Model): return users def get_org_users(self): - return self.org_users + return self.org_users() - @lazyproperty + # @lazyproperty def org_admins(self): from users.models import User if self.is_real(): @@ -93,7 +94,7 @@ class Organization(models.Model): return User.objects.filter(role=User.ROLE_ADMIN) def get_org_admins(self): - return self.org_admins + return self.org_admins() def org_id(self): if self.is_real(): @@ -103,7 +104,7 @@ class Organization(models.Model): else: return '' - @lazyproperty + # @lazyproperty def org_auditors(self): from users.models import User if self.is_real(): @@ -111,7 +112,7 @@ class Organization(models.Model): return User.objects.filter(role=User.ROLE_AUDITOR) def get_org_auditors(self): - return self.org_auditors + return self.org_auditors() def get_org_members(self, exclude=()): from users.models import User diff --git a/apps/users/api/user.py b/apps/users/api/user.py index 2670eb014..fac0fabca 100644 --- a/apps/users/api/user.py +++ b/apps/users/api/user.py @@ -49,12 +49,7 @@ class UserViewSet(CommonApiMixin, UserQuerysetMixin, BulkModelViewSet): if isinstance(users, User): users = [users] if current_org and current_org.is_real(): - # current_org.users.add(*users) - # 如果在真实组织下创建用户,使用上面的语句会出现用户角色显示不稳定的问题 - # 可能是current_org的users add操作是进程不安全的 - # User Model 中的 remove 操作没有出现问题,暂时不做更改 - for user in users: - user.related_user_orgs.add(current_org.id) + current_org.users.add(*users) self.send_created_signal(users) def get_permissions(self):