diff --git a/taiga/__pycache__/taiga.cpython-310.pyc b/taiga/__pycache__/taiga.cpython-310.pyc index b156a64..85b286f 100644 Binary files a/taiga/__pycache__/taiga.cpython-310.pyc and b/taiga/__pycache__/taiga.cpython-310.pyc differ diff --git a/taiga/__pycache__/wsdl_taiga.cpython-310.pyc b/taiga/__pycache__/wsdl_taiga.cpython-310.pyc index 1253288..1c21d2c 100644 Binary files a/taiga/__pycache__/wsdl_taiga.cpython-310.pyc and b/taiga/__pycache__/wsdl_taiga.cpython-310.pyc differ diff --git a/taiga/taiga.py b/taiga/taiga.py index 0728a63..b23e9ee 100644 --- a/taiga/taiga.py +++ b/taiga/taiga.py @@ -32,10 +32,14 @@ class Taiga(MethodsInterface): raise TaigaConnectionError(json.loads(resp.text)['status']) def delete_user(self, server_url): - users = self.clVars.Get('cl_taiga_all_users') + users = self.clVars.Get('cl_taiga_users_login') resp = requests.post(f"{server_url}/service_taiga/delete_user", json={'users': users}) return True + def change_user(self, server_url): + var = self.clVars.Get + user = var() + def create_template(self, server_url): var = self.clVars.Get name = var('cl_taiga_template_name') @@ -48,7 +52,6 @@ class Taiga(MethodsInterface): var = self.clVars.Get templates = var('cl_taiga_all_templates') templates = [(x, ', '.join(y)) for x, y in templates] - #a = var('cl_taiga_templates_roles') self.printTable('test', ['template name', 'template roles'], templates, fields=['cl_taiga_templates_names', ''], onClick="detailed_role_table", @@ -74,3 +77,20 @@ class Taiga(MethodsInterface): resp = requests.post(f"{server_url}/service_taiga/change_template", json={"template": template_name, "roles": template_roles}) return True + + def show_user_table(self, server_url): + var = self.clVars.Get + users = [(x['full_name'], x['template'], x['extra_projects']) for x in var('cl_taiga_all_users')] + self.printTable('users', ['fio', 'user template', 'additional projects'], sorted(users), + fields=['cl_taiga_add_roles', ''], + addAction='create_user', + onClick='change_user') + return True + + def change_user(self, server_url): + var = self.clVars.Get + user = var('cl_taiga_change_login') + roles = var('cl_taiga_add_roles') + resp = requests.post(f"{server_url}/service_taiga/change_user", json={"login": user, "roles": roles}) + return True + diff --git a/taiga/utils/__pycache__/cl_taiga.cpython-310.pyc b/taiga/utils/__pycache__/cl_taiga.cpython-310.pyc index c9363b3..d47f070 100644 Binary files a/taiga/utils/__pycache__/cl_taiga.cpython-310.pyc and b/taiga/utils/__pycache__/cl_taiga.cpython-310.pyc differ 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 83cdfbe..72d3f68 100644 Binary files a/taiga/variables/__pycache__/taiga.cpython-310.pyc and b/taiga/variables/__pycache__/taiga.cpython-310.pyc differ 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")) + ] + }, ]