Skip to content

Backend

Módulo backend.py

Função process_excel

Processa um arquivo Excel, validando-o contra um esquema específico.

Parameters:

Name Type Description Default
uploaded_file

Um arquivo Excel carregado pelo usuário.

required
model_name

Nome do modelo de dados a ser usado para validação.

required

Returns:

Type Description

Uma tupla (resultado, erro), onde 'resultado' é um booleano indicando se a validação

foi bem-sucedida e 'erro' é uma mensagem de erro se a validação falhar.

Source code in src/backend.py
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
def process_excel(uploaded_file, model_name):
    """
    Processa um arquivo Excel, validando-o contra um esquema específico.

    Args:
        uploaded_file: Um arquivo Excel carregado pelo usuário.
        model_name: Nome do modelo de dados a ser usado para validação.

    Returns:
        Uma tupla (resultado, erro), onde 'resultado' é um booleano indicando se a validação
        foi bem-sucedida e 'erro' é uma mensagem de erro se a validação falhar.
    """    
    try:
        df = pd.read_excel(uploaded_file)

        # Escolher o schema correto com base em model_name
        if model_name == "Usuario":
            schema = UsuarioSchema
        elif model_name == "Vendas":
            schema = VendasSchema
        elif model_name == "Recursos Humanos":
            schema = RecursosHumanosSchema
        else:
            raise ValueError(f"Modelo desconhecido: {model_name}")

        # Verificar se há colunas extras no DataFrame
        extra_cols = set(df.columns) - set(schema.model_fields.keys())
        if extra_cols:
            return False, f"Colunas extras detectadas no Excel: {', '.join(extra_cols)}"

        # Validar cada linha com o schema escolhido
        for index, row in df.iterrows():
            try:
                _ = schema(**row.to_dict())
            except Exception as e:
                raise ValueError(f"Erro na linha {index + 2}: {e}")

        return True, None

    except ValueError as ve:
        return False, str(ve)
    except Exception as e:
        return False, f"Erro inesperado: {str(e)}"