Código fonte de pyarialib.sei

import base64
import json
from datetime import datetime, date
[documentos] class Sei: def __init__(self, aria): self.aria = aria
[documentos] def get_modelos_html(self, id_unidade_stn : int = None) -> list[dict]: """Obtém uma lista de modelos HTML do SEI Administrar. Example: .. code-block:: python modelos_html_unidade = sei.get_modelos_html(id_unidade_stn=1) for modelo_html in modelos_html_unidade: print(modelo_html.get("idModeloHtml")) print(modelo_html.get("nome")) print(modelo_html.get("html")) print(modelo_html.get("idUnidadeStn")) Args: id_unidade_stn (int, optional): ID da Unidade a qu pertence os Modelos HTML. É opcional. Defaults to None. Returns: _type_: a lista de Modelos Html. """ query_string_parameters = {} if id_unidade_stn != None: query_string_parameters['idUnidadeStn'] = id_unidade_stn registros = self.__get_registros_modelos_html(query_string_parameters=query_string_parameters) return registros
[documentos] def get_modelo_html(self, id : int ) -> dict: """Obtém um modelo HTML com base em seu id. Example: .. highlight:: python .. code-block:: python modelo_html = sei.get_modelo_html(id=1) print(modelo_html.get("idModeloHtml")) print(modelo_html.get("nome")) print(modelo_html.get("html")) print(modelo_html.get("idUnidadeStn")) Args: id (int): ID do Modelo HTML. Defaults to None. Returns: _type_: _description_ """ query_string_parameters = {} if id != None: query_string_parameters['idModeloHtml'] = id registros = self.__get_registros_modelos_html(query_string_parameters=query_string_parameters) if len(registros) >=1: return registros[0]
[documentos] def get_procedimentos(self) -> list[dict]: """Obtém a lista de Processos/Procedimentos no SEI Administrar. Basicamente, esta função irá trazer todos os Processos/Procedimentos que foram criados utilizando esta API. Example: .. highlight:: python .. code-block:: python procedimentos = sei.get_procedimentos() for procedimento in procedimentos: print(procedimento.get("idProcedimento")) print(procedimento.get("codigoProcedimentoSei")) Returns: _type_: Lista de Processos/procedimentos. """ return self.__get_registros_procedimentos()
[documentos] def get_procedimento(self, id : int = None, codigo : str = None) -> dict: """Obtém um procedimento/processo específico pelo seu id ou pelo seu código. Example: .. highlight:: python .. code-block:: python procedimento_por_id = sei.get_procedimento(id=1) print(procedimento_por_id.get("idProcedimento")) print(procedimento_por_id.get("codigoProcedimentoSei")) procedimento_por_codigo = sei.get_procedimento(codigo="17944.100005/2022-06") print(procedimento_por_codigo.get("idProcedimento")) print(procedimento_por_codigo.get("codigoProcedimentoSei")) Args: id (int, optional): ID do procedimento/processo. Defaults to None. codigo (str, optional): Código do procedimento/processo. Defaults to None. Returns: _type_: O procedimento. """ query_string_parameters = {} if id != None: query_string_parameters['idProcedimentoSei'] = id if codigo != None: query_string_parameters['codigoProcedimentoSei'] = codigo registros = self.__get_registros_procedimentos(query_string_parameters=query_string_parameters) if len(registros) >=1: return registros[0]
[documentos] def get_series(self) -> list[dict]: """Obtém a lista de séries do SEI. Example: .. highlight:: python .. code-block:: python series = sei.get_series() for serie in series: print(serie.get("idSerie")) print(serie.get("nome")) print(serie.get("aplicabilidade")) Returns: _type_: a lista de séries do SEI. """ return self.__get_registros_series()
[documentos] def get_serie(self, nome : str) -> dict: """Obtém uma série do SEI pelo seu nome. Example: .. highlight:: python .. code-block:: python serie = sei.get_serie(nome="Volume de Processo") print(serie.get("idSerie")) print(serie.get("nome")) print(serie.get("aplicabilidade")) Args: nome (str): o nome da série. Returns: _type_: _description_ """ query_string_parameters = {'nomeSerie': nome} registros = self.__get_registros_series(query_string_parameters=query_string_parameters) if len(registros) >=1: return registros[0]
[documentos] def get_documento(self, codigo : str) -> dict: """Obtém um documento pelo seu código do SEI. Example: .. highlight:: python .. code-block:: python documento_novo = sei.get_documento(codigo="134112") Args: codigo (str): código SEI do Documento. Returns: dict: Documento SEI. """ query_string_parameters = {'codigoDocumentoSei': codigo} resposta = self.aria.request('get', 1, 'sei', 'sei/consultarDocumento', query_string_params=query_string_parameters) return resposta.json().get('retorno')
[documentos] def get_documentos(self, codigo_procedimento_sei : str = None) -> list[dict]: """Obtém uma lista de documentos de um determindo procedimento/processo. Procedimento é o mesmo que processo. Somente vai trazer se o processo tiver sido feito pela API. Example: .. highlight:: python .. code-block:: python documentos_procedimento = sei.get_documentos(codigo_procedimento_sei="17944.100037/2023-84") for doc in documentos_procedimento: print(doc) Args: codigo_procedimento_sei (str, optional): Código do procedimento/processo SEI. Defaults to None. Returns: _type_: _description_ """ procedimento = self.get_procedimento(codigo=codigo_procedimento_sei) lista_documentos = [] query_string_parameters = {'idProcedimento': procedimento.get("idProcedimento")} resposta = self.aria.request('get', 1, 'sei', 'admin/documento', query_string_params=query_string_parameters) for doc in resposta.json().get('registros'): documento = self.get_documento(codigo=doc.get("codigoDocumentoSei")) lista_documentos.append(documento) return lista_documentos
[documentos] def gerar_procedimento(self, id_tipo_procedimento : int) -> dict: """Gera um procedimento/processo vazio no SEI. Retorna informações sobre o procedimento. Example: .. highlight:: python .. code-block:: python novo_procedimento = sei.gerar_procedimento("100000206") # Licença por acidente em serviço Args: id_tipo_procedimento (int): ID do tipo de procedimento. Returns: dict: Informações do procedimento. """ return self.aria.request('post', 1, 'sei', 'sei/gerarProcedimento', json_body={"idTipoProcedimento": id_tipo_procedimento}).json()
[documentos] def gravar_documento_html(self, codigo_procedimento_sei : str, descricao : str, id_serie_sei : int, html : str) -> str: """Grava um documento HTML em um procedimento/processo SEI. Example: .. highlight:: python .. code-block:: python codigo_documento_novo = sei.gravar_documento_html( codigo_procedimento_sei="17944.100005/2022-06", descricao="Meu novo documento", id_serie_sei=1247, html="<p>HTML do meu documento</p>" ) Args: codigo_procedimento_sei (str): Código do procedimento/processo sei. descricao (str): Descrição do documento. id_serie_sei (int): ID da Série. html (str): HTML com o conteúdo do documento. Returns: str: código SEI do documento gerado. """ json_body = { "codigoProcedimentoSei": codigo_procedimento_sei, "descricao": descricao, "idSerieSei": id_serie_sei, "payloadHtml": html } resposta = self.aria.request('post', 1, 'sei', 'sei/incluirDocumentoHtml', json_body=json_body) return resposta.json().get("codigoDocumentoSei")
[documentos] def gravar_documento_arquivo(self, codigo_procedimento_sei : str, descricao : str, id_serie_sei : int, arquivo : bytes | str, nome_arquivo : str, data_arquivo : datetime | str) -> str: """Grava um documento qualquer (ex.: PDF) em um procedimento/processo SEI. Example: .. highlight:: python .. code-block:: python with open("MeuDocumento.pdf", "rb") as arquivo: arquivo_teste = arquivo.read() codigo_documento_novo_arquivo = sei.gravar_documento_arquivo( codigo_procedimento_sei=novo_procedimento.get('codigoProcedimentoSei'), descricao="17944.100005/2022-06", id_serie_sei=263, nome_arquivo="Teste1.pdf", data_arquivo=datetime.now(), arquivo=arquivo_teste ) Args: codigo_procedimento_sei (str): Código do procedimento SEI a ser incluído o documento. descricao (str): Descrição do documento. id_serie_sei (int): ID da Série. arquivo (bytes | str): Arquivo em bytes, ou o arquivo codificado em base64 em string. nome_arquivo (str): Nome do arquivo.s data_arquivo (datetime | str): Data do arquivo em datetime, ou em string no formato "DD/MM/YYYY". Returns: str: código SEI do documento. """ arquivo_base_64 = "" if type(arquivo) == str: arquivo_base_64 = arquivo elif type(arquivo) == bytes: arquivo_base_64 = base64.b64encode(arquivo).decode("utf8") if type(data_arquivo) == str: data_arquivo_texto = data_arquivo elif type(data_arquivo) == datetime or type(data_arquivo) == date: data_arquivo_texto = data_arquivo.strftime("%d/%m/%Y") json_body = { "codigoProcedimentoSei": codigo_procedimento_sei, "descricao": descricao, "idSerieSei": id_serie_sei, "base64Arquivo": arquivo_base_64, "dataArquivo": data_arquivo_texto, "nomeArquivo": nome_arquivo } resposta = self.aria.request('post', 1, 'sei', 'sei/incluirDocumentoBlob', json_body=json_body) return resposta.json().get("codigoDocumentoSei")
def __get_registros_modelos_html(self, query_string_parameters = {}) -> list[dict]: resposta = self.aria.request('get', 1, 'sei', 'admin/modelosHtml', query_string_params=query_string_parameters, auto_pagination=True) registros = resposta.json().get('registros') return registros def __get_registros_procedimentos(self, query_string_parameters = {}) -> list[dict]: resposta = self.aria.request('get', 1, 'sei', 'admin/procedimento', query_string_params=query_string_parameters, auto_pagination=True) registros = resposta.json().get('registros') return registros def __get_registros_series(self, query_string_parameters = {}) -> list[dict]: resposta = self.aria.request('get', 1, 'sei', 'app/ListarSeries', query_string_params=query_string_parameters) print(resposta) registros = resposta.json().get('retorno') return registros