From 3add38098434909a34e4cd434f196b7c842bd16d Mon Sep 17 00:00:00 2001 From: root Date: Wed, 19 Apr 2023 12:07:50 +0300 Subject: [PATCH] qwe --- taiga/__pycache__/taiga.cpython-310.pyc | Bin 3464 -> 4354 bytes taiga/__pycache__/wsdl_taiga.cpython-310.pyc | Bin 3221 -> 3657 bytes taiga/taiga.py | 24 ++++++- .../__pycache__/cl_taiga.cpython-310.pyc | Bin 2826 -> 3291 bytes taiga/utils/cl_taiga.py | 29 ++++++++ .../__pycache__/taiga.cpython-310.pyc | Bin 7940 -> 8651 bytes taiga/variables/taiga.py | 36 ++++++++-- taiga/wsdl_taiga.py | 65 +++++++++++++++++- 8 files changed, 144 insertions(+), 10 deletions(-) diff --git a/taiga/__pycache__/taiga.cpython-310.pyc b/taiga/__pycache__/taiga.cpython-310.pyc index b156a640602cb764aa512251dd2344475d4d3993..85b286f885882a6c70a036efec034e54130e660a 100644 GIT binary patch delta 1013 zcmZWo%}*0S6rZ=d-A>zW5u{eW1c3kG;Nv) z2R#sDCNc45ym2yyix;mR_2i}gEq=VWg+_5E^PAZ>^FHP`zkSj3d@xat$D<6}QUA1f z+x9VW1mLPq@TgaG9lHvl+agh>HoWtVc3QKn#w`)>QcIMrjZx;)8ZpU+^mvhU7 zVoALTy{j7-5OB=n@H!BxY?Ez5O{;4AtfmWwL0~zp$wAzcLkMX@#%Y}*7(r+l6jV}e zO^A^(mfx^T1t&;Ir##BUAqtiDRjOn>*jGd5ck?=VPN-kzC|o-p38w(2)Es{Wlj<9< zv`>&TRmOos0=vpaJeW~mBYQA=ycEp<%&XnlY$Stc(&1$}qdvzL4RTXI%s$*4wr;{b zwPuZ})$o{#1P&&1P&e8P0+BLKMkXjJaf_J`8?5Z z+UPk#IMjz&=)s8`8p#$FCyETjFX?ub?hMlKteAJ2e@Eso&EgyM;SqVNBXcbHLY1a^ z0xq)n?a||qE;)3Af&WQD9a_WvM3tN*xJ$4=ut=~(a9@3~E??@#B`05X7Ek=jG*M0D`X`GAV658~Ii;GKNgv!5GRC%%CZc=86;1(Ut_c_zPO+s0-9)Lvvb`7f)4Ab)aEYGO%hd`W6CrDx>yKEa4>Q(@-gx;O=jaNX0(`G#Z|#*wfQrbJ|m;UWMv*( zPF4i0V(HXgRgl>(gr1&2HY diff --git a/taiga/__pycache__/wsdl_taiga.cpython-310.pyc b/taiga/__pycache__/wsdl_taiga.cpython-310.pyc index 12532883a81b2210fc79ce5eca9ba205ce677a65..1c21d2c49a5ee567739cd2592c6bbfbc3f4766b7 100644 GIT binary patch delta 1156 zcma)4O=uHA6rR~^HrdTjH*L}%ZEcjI-KJ679;#K_lqyz`BBnuE(2!<^G$mBLLq~| zdNF&N4Wu^0z4ZP@A~R7oZL=J)Ba|>7^RE-TohwY|WT}Hkdq`cOgnM{mIvv<9V9uQls~dxaLf0K36Q{G7cB>xrGvUBdwR2#oTg%XXG<)R6e1-nh6yM zQ@*Bi<2`V66abZo4*0l6zLc%qV!0|G%ftP*)djZ{Z0G&vWu;74*-`FcN}U28t5c>j zFB@dO0%ZzUi99cF!LVkKSmn!`$V zATK!7m90U8LL)@Fo(t5JarHKJW4)y-PRLi<=)^ulB}h7c06$Tv zrf5H`piJqOnZQ)T2uXzFn@he3r6=WG|Mjth@ZyH^HK$rBXBTSKYGv8kyTG^7rzhmJ z9vv7&H49+~;mW$yn z_6WPP6g#%#dP}BhdpDN6PXn)F@rO~aO=gTMVfZ2+#X%&UtP=Ik1o#_%*|G6sx8 zu$?%S?~IS~i_tA_27EFSh{;qy3z0Rl=Kmy+W_8Jzfmzxq)!^Cj9eIJ#kfXwCCGLo6 ZxQX)!81h$2Sq>gDhN)jQsh>tYzW~h%_7wmC delta 728 zcma)(&ubGw6oBV#lKqwJlC)`UG%abB!V)7G3!(<&O})fw5b7d?*jZX7abaeIdJ;(w zo`m@H=)t>q=}8ZwClS1Olin2n14W@A`d;*)DAj@ac=LGgo8ir?^8Jz@d!8$3y|K&k z?b66E!|hS^d>w?eq`e`+d}K%`5?2b*L`e({5K$`14e zp$~WP1=LKRl*-3X(DG&|)CM6fQ~}Qz6?c*jCpfD%Zy0@W*X%GSXWJrJ#8&!ZntQQn zmhfddgb)`p$7g=%D6jI20^ta4jn^~p&Q4JjWLn!!dp*8Z8R$p_5KgT2I!X8PTDQ~f z^*Wr?YMOg@F?KV`jK7#K;3M;a^V6!Tc+RRX|7Yu6QfixE3j<8U{2Juc9A8sm%rh1k zd-1uoxVdfl0Q=E#Ru1uyw*1wBPU3#&(jZCVt9s{GzQ%h_)&E_N&#VBJ@QZW0S>tOC z5CTvv-&yvVDn6Qo@w>mN!+6s@SmzO|qyKE41}Zy7Wr2rJvdh7i)sK?(Sn6MfJ0A1+ z@A&g)Y3mOH8@cycam#+FI2lY~dKK2^5J(M6%EC;P;&vQsg>jTBBw7_C|#TohK@ufhS z_>#n=oYcvMtfG_uaw_nf0o6X#!weLJ8t9ynn3tXkGPcwLsOrLu3)?U3 zxv=%ZUNGKqVXMN0Ef+QbxqB~mUu;#lu>Zoo3%f7&09Ea~u<62vi%mdvyD#<^34p8+ z1Q9|&;ud!@*j%uys?;FP1PL*wPnKtv2Dwhd9H?$N5EsM4jS(%}Kq@rFCmV8gh=KyS m2o!)tpin9T`K-u%@&Z=z$+x-q85JhK=8|O-5D^d&5dZ-0tdBbY delta 186 zcmcaD*(Ju8&&$ij00dXLWKyOHPvnzfJTp=IG+PQ|FoUM}W*NphHpb$~v)N-9qbC1g zx8~GjDiQ^%E)tt8&n2g<3uMLvaj^)H;9y{3WMN@pVqxT9WMXDwWcknWzesm;Ee9hb zzdletABc-IL4^L~UQSs?y~(RNizlz;mKQMu3O2)KK|D>-$zQlTxIyL@f%Fy`PM*l4 O#was+2ahb1hzJ1i{Uo3O diff --git a/taiga/utils/cl_taiga.py b/taiga/utils/cl_taiga.py index 9fd8437..559069a 100644 --- a/taiga/utils/cl_taiga.py +++ b/taiga/utils/cl_taiga.py @@ -147,3 +147,32 @@ class ClTaigaChangeTable(Action): 'method': 'Taiga.change_template(cl_taiga_server_url)', 'message': 'Creating delete task'} ] + +class ClTaigaUserTable(Action): + """ + Действие обновление конфигурационных файлов + """ + # ошибки, которые отображаются без подробностей + native_error = (TaigaConnectionError) + + successMessage = "Created" + failedMessage = "Not created" + interruptMessage = __("Update manually interrupted") + + tasks = [ + {'name': 'view_table', + 'method': 'Taiga.show_user_table(cl_taiga_server_url)'} + ] + +class ClTaigaChangeUser(Action): + """Изменение данных пользователя""" + native_error = (TaigaConnectionError) + + successMessage = "Created" + failedMessage = "Not created" + interruptMessage = __("Update manually interrupted") + + tasks = [ + {'name': 'change_user', + 'method': 'Taiga.change_user(cl_taiga_server_url)'} + ] \ No newline at end of file diff --git a/taiga/variables/__pycache__/taiga.cpython-310.pyc b/taiga/variables/__pycache__/taiga.cpython-310.pyc index 83cdfbe7beb9605a4bdf4c4c330fb9c5b124ba5d..72d3f68717fb5decab7125fe5f0c6c93dac9e512 100644 GIT binary patch literal 8651 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 TY%lCWdmGyM!W3FFQ`!Fkl3MdQ literal 7940 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 T$MQ!|rt>rTOg@*Not^$a^+H?8 diff --git a/taiga/variables/taiga.py b/taiga/variables/taiga.py index c1bcc11..6d4398e 100644 --- a/taiga/variables/taiga.py +++ b/taiga/variables/taiga.py @@ -1,4 +1,4 @@ -from calculate.lib.datavars import Variable, VariableError +from calculate.lib.datavars import Variable, ReadonlyVariable, VariableError import requests import json @@ -28,6 +28,15 @@ class VariableClTaigaUserLogin(Variable): class VariableClTaigaAllUsers(Variable): + type = 'list' + + def get(self): + resp = requests.get(f"{self.Get('cl_taiga_server_url')}/service_taiga/users") + return resp.json()['data'] + + +class VariableClTaigaUsersLogin(Variable): + users = 'cl_taiga_all_users' type = 'choiceedit-list' metavalue = 'ROLE' opt = ['-q'] @@ -42,8 +51,9 @@ class VariableClTaigaAllUsers(Variable): raise ValueError('Can not be empty') def choice(self): - resp = requests.get(f"{self.Get('cl_taiga_server_url')}/service_taiga/users") - return [str(x['login']) for x in resp.json()['data']] + resp = self.Get(self.users) + return [str(x['login']) for x in resp] + class VariableClTaigaProjectName(Variable): @@ -173,9 +183,6 @@ class VariableClTaigaAddRoles(Variable): def get(self): return [self.value] - def check(self, value): - return True - def choice(self): resp = requests.get(f"{self.Get('cl_taiga_server_url')}/service_taiga/roles") result = [] @@ -185,3 +192,20 @@ class VariableClTaigaAddRoles(Variable): if role['name'] != "AUTO": result.append(f"{key} - {role['name']}") return result + + +class VariableClTaigaChangeLogin(Variable): + type = 'choiceedit' + + def init(self): + self.label = "User role" + self.help = "Roles user should be added to" + + +class VariableClTaigaChangeRoles(Variable): + type = 'choiceedit-list' + + def init(self): + self.label = "Users projects" + self.help = "Choose new projects for user" + diff --git a/taiga/wsdl_taiga.py b/taiga/wsdl_taiga.py index 97e9770..ecf0acb 100644 --- a/taiga/wsdl_taiga.py +++ b/taiga/wsdl_taiga.py @@ -18,7 +18,8 @@ import sys from calculate.lib.cl_lang import setLocalTranslate, getLazyLocalTranslate from calculate.core.server.func import WsdlBase from .taiga import Taiga -from .utils.cl_taiga import ClTaigaCreateUser, ClTaigaDeleteUser, ClTaigaUpdateData, ClTaigaCreateTemplate, ClTaigaTestTable, ClTaigaDeleteFromTable, ClTaigaChangeTable +from .utils.cl_taiga import ClTaigaCreateUser, ClTaigaDeleteUser, ClTaigaUpdateData, ClTaigaCreateTemplate, \ + ClTaigaTestTable, ClTaigaDeleteFromTable, ClTaigaChangeTable, ClTaigaUserTable, ClTaigaChangeUser _ = lambda x: x @@ -87,7 +88,7 @@ class Wsdl(WsdlBase): # описание груп (список лямбда функций) 'groups': [ lambda group: group(_("Show user"), - normal=('cl_taiga_all_users',), + normal=('cl_taiga_users_login',), next_label=_("Save"))] }, { @@ -281,5 +282,65 @@ class Wsdl(WsdlBase): 'cl_taiga_templates_roles')) ] }, + { + # идентификатор метода + 'method_name': "user_table", + # категория метода + 'category': __('Taiga'), + # заголовок метода + 'title': __("show user table"), + # иконка для графической консоли + 'image': 'calculate-update', + # метод присутствует в графической консоли + 'gui': True, + # консольная команда + 'command': 'cl-taiga-user-table', + # права для запуска метода + 'rights': ['taiga'], + # объект содержащий модули для действия + 'logic': {'Taiga': Taiga}, + # описание действия + 'action': ClTaigaUserTable, + # объект переменных + 'datavars': "taiga", + 'native_error': (), + # значения по умолчанию для переменных этого метода + 'setvars': {}, + # описание груп (список лямбда функций) + 'groups': [] + }, + { + # идентификатор метода + 'method_name': "change_user", + # категория метода + 'category': __('Taiga'), + # заголовок метода + 'title': __("change user"), + # иконка для графической консоли + 'image': 'calculate-update', + # метод присутствует в графической консоли + 'gui': True, + # консольная команда + 'command': 'cl-taiga-change-user', + # права для запуска метода + 'rights': ['taiga'], + # объект содержащий модули для действия + 'logic': {'Taiga': Taiga}, + # описание действия + 'action': ClTaigaChangeUser, + # объект переменных + 'datavars': "taiga", + 'native_error': (), + # значения по умолчанию для переменных этого метода + 'setvars': {}, + # описание груп (список лямбда функций) + 'groups': [ + lambda group: group(_("Table details"), + normal=( + 'cl_taiga_change_login', + 'cl_taiga_add_roles'), + next_label=_("Save")) + ] + }, ]