Python: Métodos Nativos
Esta é uma lista de métodos nativos e como usá-los em gatilhos Low-code.
Variáveis Comuns e Dicionários
Antes de chegar aos próprios métodos nativos, há uma informação importante a ser observada ao criar gatilhos de Low-code: o uso de currentData, beforeSave e afterSave.
Esses quatro dicionários contêm informações úteis sobre as informações enviadas pelo usuário e sobre o próprio banco de dados.
- currentData: é o dicionário que contém as informações que o usuário enviou ao realizar uma ação. Por exemplo, se um usuário arrastar um cartão em um kanban para o estágio "Em andamento", o currentData['stage'] conterá "In Progress".
- beforeSave: este é o dicionário que contém as informações sobre o registro antes de ser alterado (ou seja, antes de currentData ser salvo no banco de dados). Por exemplo, se um usuário arrastar um cartão em um kanban de "Novo" para o estágio "Em andamento", o currentData['stage'] conterá "In Progress" e beforeSave["stage"] conterá "New" . Bônus: se você alterar o beforeData em um gatilho síncrono, antes de criar/atualizar, essa nova informação será salva no registro.
- afterSave: este é o dicionário que contém as informações sobre o registro depois que ele é alterado (ou seja, depois que currentData é salvo no banco de dados). Por exemplo, se um usuário arrastar um cartão em um kanban de "Novo" para o estágio "Em andamento", então currentData['stage'] conterá "In Progress", assim como afterSave["stage"]. Bônus: algumas informações só estarão disponíveis no afterSave. Por exemplo, em uma trigger Depois que um registro é criado, o id do registro só estará contido em afterSave, pois o id só é registrado depois que o registro é salvo no banco de dados.
- currentUser: este é o dicionário que contém as informações sobre o usuário que disparou a automação. É particularmente útil para identificação, já que contém id_user, email, e name.
Tambem existem dois outros dicionários que só estão presentes quando são usadas Funções ao invés de Gatilhos:
- recordData: contém a informação de um registro quando a Função é ativada através de uma combinação Botão + Executar uma função. Nesse cenário, também deve ser notado que campos de conexão N:1 trarão o primeiro nível de informação conectada. Por exemplo, se vocÊ tem o campo "cliente" que aponta para a tabela "Clientes", você pode acessas informação como recordData['cliente']['name'] sem necessidade de executar uma busca separada.
- params: contém a informação que você recebe quando ativa uma Função através de um webhook. Por exemplo, se você mandar o payload JSON {"status":"New"} para o webhook, você pode acessar essa informação através de params['status'] na Função.
Métodos Nativos
Esta é uma lista de métodos nativos e como usá-los em gatilhos Low-code.
Criar Registro
Para criar um registro, use o método table usando o nome da tabela como parâmetro, depois o método insert usando um dicionário como parâmetro. Exemplo:
result = jestor.table('table_name').insert({'name': 'test'})
#result will be a python array with the created record's values
Editar Registro
Para editar um registro use o método table usando o nome da tabela como parâmetro, depois o método update usando o id do registro que será alterado e um Dicionário como parâmetro. Exemplo:
recordId = 1
result = jestor.table('table_name').update(recordId, {'name': 'test'})
#result will be a python array with the updated record's values
Deletar Registro
Para excluir um registro, use o método table usando o nome da tabela como parâmetro, depois o método delete usando o id do registro como parâmetro. Exemplo:
recordId = 1
jestor.table('table_name').delete(recordId)
Listar Registros
Para listar os registros, use o método table usando o nome da tabela como parâmetro e, em seguida, o método get. Exemplo:
result = jestor.table('table_name').get()
#result will be a python array with the fetched records' values
## To apply filters use the Filter object:
filters = [
Filter('name', 'test', Operators.CONTAINS, 'string'),
]
#instead of the Operators class, you can also pass an operator string such as "=="
result = jestor.table('table_name').get(filters)
#result will be a python array with the fetched records' values
O objeto Filter recebe os seguintes parâmetros:
- campo: str (nome do campo).
- valor: str (valor do campo).
- operador: str (os operadores podem ser encontrados na classe Operadores).
- tipo: str (tipo de campo).
Criar Usuário
Para criar um usuário utilize o método user(), depois o método createUser() passando uma lista como parâmetro. Esta lista deve conter os campos na ordem [email, password, profile_id, name]. Exemplo:
result = jestor.user().createUser(['[email protected]', 'passworda@123', '1','Test']);
#result will be a python array with the created user's values
Listar Usuários
Para listar os usuários, use o método user() e, em seguida, o método get. O método get aceita os seguintes parâmetros:
- filtros: Lista[Filtro] = Nenhum,
- limite: int = 100,
- página: int = 1,
- sort: str = Nenhum
Exemplo:
result = jestor.user().get();
#result will be a python array with the fetched users' values
## To apply filters use the Filter object:
filters = [
Filter('name', 'test', Operators.CONTAINS, 'string'),
]
#instead of the Operators class, you can also pass an operator string such as "=="
result = jestor.user().get(filters=filters,sort='name asc')
#result will be a python array with the fetched users' values
Listar Tarefas
Para listar as tarefas, use o método fetchTasks. O método fetchTasks aceita um tipo de lista de parâmetros, que pode conter os campos na ordem [[Filter], limit, page]. Exemplo:
result = jestor.fetchTasks();
#result will be a python array with the fetched tasks' values
## To apply filters use the Filter object:
filters = [
Filter('description', 'test', Operators.CONTAINS, 'string'),
]
#instead of the Operators class, you can also pass an operator string such as "=="
limit = 10
page = 1
result = jestor.fetchTasks([filters, limit, page])
#result will be a python array with the fetched tasks' values
Arquivos
Para manipular arquivos, use o objeto File. Leva os seguintes parâmetros:
- tabela: str
- recordId: int = Nenhum
- campo: str = Nenhum
tableName = 'table_name'
recordId = 1
field = 'file_field'
files = jestor.file(tableName, recordId, field)
Adicionando, removendo e editando arquivos em um registro existente:
tableName = 'table_name'
recordId = 1
field = 'file_field'
files = jestor.file(tableName, recordId, field)
files.add({'name': 'file_test', 'content': '<content string>', 'contentType': 'pdf'})
idFile = 'A1CVwLAxzjjYprO5Bjdfi-5'
files.remove(idFile)
idFile = 'E0DOdSKgvkkMncI8Fnhst-2'
files.update(idFile, {'name': 'file_update_name'})
result = jestor.table('table_teste').update(recordId, {field: files.toJson()})
#result will be a python array with the updated record's values
Adicionando arquivos a um novo registro:
tableName = 'table_name'
files = jestor.file(tableName)
files.add({'name': 'file_test', 'content': '<content string>', 'contentType': 'pdf'})
result = jestor.table(tableName).insert({'name': 'create new record', 'files': files.toJson()})
#result will be a python array with the created record's values
POST
Você pode POST dados em um terminal externo usando o método post.
url = "htpps://url.com"
headers = {
"Content-Type":"application/json"
}
body = {
"name":"example"
}
result = jestor.post([url,headers,body])
#result will contain the call's response
GET
Você pode fazer chamadas GET para um terminal externo usando o método get.
url = "htpps://url.com"
headers = {
"Content-Type":"application/json"
}
result = jestor.post([url,headers])
#result will contain the call's response
stopCodeExecution()
Durante os gatilhos síncronos, você pode interromper a execução do código, reverter todas as alterações e mostrar ao usuário uma mensagem com stopCodeExecution().
if currentData["stage"] == "Done" and currentData["amount"] == 0:
stopCodeExecution("You can't close deals with no $ amount!")
Generate PDF
Esse método permite que você crie um PDF personalizado a partir de uma string contendo um HTML personalizado, salvando esse arquivo localmente no Jestor. O exemplo abaixo é um gatilho que cria um arquivo PDF e atualiza um registro, adicionando o arquivo em um campo de arquivos.
tableName = 'table'
files = jestor.file(tableName)
html = '''
<body>
<div class="container">
<div class="card" id="makepdf">
<h2>Welcome to Jestor</h2>
<ul>
<li><h4>We are going to generate a pdf from the area inside the box</h4></li>
<li><h4>This is an example of generating pdf from HTML during runtime</h4></li>
</ul>
</div>
</div>
</body>
'''
pdf = jestor.generatePDF([html, "A4", "portrait"])
files.add({'name': 'file_test', 'localFile': pdf})
result = jestor.table(tableName).update(afterSave['id_table'],{'name': 'new record', 'attachments': files.toJson()})
Updated 6 months ago