Commit 928c6503 authored by Fernão Lopes's avatar Fernão Lopes
Browse files

merge

parent e8ad94f5
Showing with 3 additions and 74 deletions
+3 -74
......@@ -3,6 +3,7 @@
import re
from pathlib import Path
from typing import Annotated, Dict, Optional
from pathlib import Path
from fastapi import (
APIRouter,
......@@ -23,7 +24,7 @@ from baobaxia.permissions.base import PermissionChecker
from baobaxia.permissions.model_permissions import Artigos
from baobaxia.root import Baobaxia, bbx
from baobaxia.saberes import Mocambola
from baobaxia.util import calculate_md5, discover_mimetype, norm
from baobaxia.util import calculate_md5, norm, discover_mimetype
from baobaxia.utils.strings import parse_tags
router = APIRouter(tags=["Artigos"])
......
......@@ -10,6 +10,7 @@ from loguru import logger
from passlib.context import CryptContext
from pydantic import BaseModel
from unidecode import unidecode
from mimetypes import guess_type
class GeoLocation(BaseModel):
......@@ -102,79 +103,6 @@ def processar_arquivo_json(
item, atributo, novo_valor, excluidos, incluidos
)
def processar_arquivo_json_remove_attribute(
caminho, atributo, excluidos=None, incluidos=None
):
caminho = Path(caminho)
if excluidos is None:
excluidos = []
if incluidos is None:
incluidos = [""]
logger.debug(f"PROCESSAR_ARQUIVO_JSON, CAMINHO: {caminho}")
if caminho.is_file() and caminho.name == ".baobaxia":
if all(excluido not in str(caminho) for excluido in excluidos) and all(
incluido in str(caminho) for incluido in incluidos
):
with open(caminho, "r", encoding="utf-8") as arquivo:
try:
dados = json.load(arquivo)
logger.debug(f"PROCESSAR_ARQUIVO_JSON, DADOS: {dados}")
except json.JSONDecodeError:
print(f"Erro ao ler o arquivo Baobaxia: {caminho}")
return
for key, value in dados.copy().items():
if key == atributo:
dados.pop(key)
logger.debug(f"DADOS agora: {dados}")
# Reescrevemos o arquivo com os novos valores
with open(caminho, "w", encoding="utf-8") as arquivo:
json.dump(dados, arquivo, indent=4)
elif caminho.is_dir():
# Se for um diretório, percorremos os arquivos e pastas dentro dele
for item in caminho.iterdir():
if all(excluido not in str(item) for excluido in excluidos) and all(
incluido in str(item) for incluido in incluidos
):
processar_arquivo_json_remove_attribute(
item, atributo, excluidos, incluidos
)
def processar_arquivo_json_indent(caminho, excluidos=None, incluidos=None):
caminho = Path(caminho)
if excluidos is None:
excluidos = []
if incluidos is None:
incluidos = [""]
logger.debug(f"PROCESSAR_ARQUIVO_JSON, CAMINHO: {caminho}")
if caminho.is_file() and caminho.name == ".baobaxia":
if all(excluido not in str(caminho) for excluido in excluidos) and all(
incluido in str(caminho) for incluido in incluidos
):
with open(caminho, "r", encoding="utf-8") as arquivo:
try:
dados = json.load(arquivo)
logger.debug(f"PROCESSAR_ARQUIVO_JSON, DADOS: {dados}")
except json.JSONDecodeError:
print(f"Erro ao ler o arquivo Baobaxia: {caminho}")
return
# Reescrevemos o arquivo com os novos valores
with open(caminho, "w", encoding="utf-8") as arquivo:
json.dump(dados, arquivo, indent=4)
elif caminho.is_dir():
# Se for um diretório, percorremos os arquivos e pastas dentro dele
for item in caminho.iterdir():
if all(excluido not in str(item) for excluido in excluidos) and all(
incluido in str(item) for incluido in incluidos
):
processar_arquivo_json_indent(item, excluidos, incluidos)
def discover_mimetype(filename):
try:
mimetype, encoding = guess_type(filename)
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment